
AAAAAAAAAAAAAAAAAAA
main.cpp
- Committer:
- vanenzo
- Date:
- 2016-01-09
- Revision:
- 0:957268dd05c4
- Child:
- 1:8b6ad9d92745
File content as of revision 0:957268dd05c4:
#include "mbed.h" #include "FastPWM.h" #define ddsstart SYNC2 = 1;wait_ms(1);SYNC2 = 0;wait_ms(1) #define ddsstop SYNC2 = 1;wait_ms(1) #define ddsreset DDS.write(0x21C0) #define sinsoft DDS.write(0x2000) #define trisoft DDS.write(0x2002) #define tripin DDS.write(0x2202) #define ddsoff DDS.write(0x2048) #define dacstart SYNC1 = 1;wait_ms(1);SYNC1 = 0;wait_ms(1) #define dacstop SYNC1 = 1;wait_ms(1) //пины управления мультиплексорами генератора /*DigitalOut outA0(PA_3); DigitalOut outA1(PA_2); DigitalOut outA2(PA_10); DigitalOut outA3(PB_3); DigitalOut outE1(PB_5); DigitalOut outE2(PB_4); DigitalOut outE3(PB_10); DigitalOut outE4(PA_8); DigitalOut outE5(PA_9); DigitalOut outE6(PC_7); DigitalOut outE7(PB_6); DigitalOut outE8(PA_7); DigitalOut outE9(PA_6); DigitalOut outE10(PA_5); //пины управления мультиплексорами измерительной части DigitalOut inA0(PB_9); DigitalOut inA1(PB_8); DigitalOut inA2(PC_9); DigitalOut inA3(PC_8); DigitalOut inE1(PC_6); DigitalOut inE2(PC_5); DigitalOut inE3(PA_12); DigitalOut inE4(PA_11); DigitalOut inE5(PB_12); DigitalOut inE6(PB_2); DigitalOut inE7(PB_1); DigitalOut inE8(PB_15); DigitalOut inE9(PB_14); DigitalOut inE10(PB_13);*/ AnalogIn analog_value(PC_4); Serial serial(USBTX,USBRX); FastPWM mclk(PA_15); FastPWM sq(PB_7); SPI DAC(PC_12, NC, PC_10); SPI DDS(PC_12, NC, PC_10); DigitalOut SYNC1(PC_11); DigitalOut SYNC2(PD_2); //DigitalOut mux_out[10] = {(PB_5), (PB_4), (PB_10), (PA_8), (PA_9),(PC_7), (PB_6),(PA_7),(PA_6),(PA_5)}; //DigitalOut mux_in[10] = {(PC_6), (PC_5), (PA_12), (PA_11), (PB_12),(PB_2), (PB_1),(PB_15), (PB_14),(PB_13)}; int freqdata; float amp; int form; float mdata; int sinus(); int square(); int triangle(); int adc_read(); int request(); int rasputte(); int adc_read(); int main() { serial.printf("start \r\n"); /*outE1=0; inE1=0; outE2=outE3=outE4=outE5=outE6=outE7=outE8=outE9=outE10=0; inE2=inE3=inE4=inE5=inE6=inE7=inE8=inE9=inE10=0; outA0=0;outA1=0;outA2=0;outA3=0; inA0=1;inA1=0;inA2=0;inA3=0; */ ddsstop; dacstop; DDS.format(16,2); // DAC.format(16,1); // DDS.frequency(1000); ddsstart; DDS.write(0x21C2); ddsstart; DDS.write(0x20C2); ddsstop; /* ddsstart; ddsreset; ddsstop;*/ mclk.period_us(0.1); mclk.pulsewidth_us(0.05); request(); serial.printf("finish"); serial.printf("\r\n"); rasputte(); adc_read(); serial.printf("begin"); serial.printf("\r\n"); serial.printf("%f\r\n", mdata); serial.printf("end"); serial.printf("\r\n"); //ddsstart; //ddsoff; //ddsstop; } int amplitude () { uint16_t ampt; uint16_t ampReg; ampt = uint16_t(819.2*amp); ampReg = uint16_t(ampt & 0xFFF); DAC.write(ampReg*4); serial.printf("amp %X \r\n", ampReg*4); return 0; } int freq () { ddsstart; float FreqReg; uint32_t ftemp; uint16_t Uptemp, Lowtemp; FreqReg = 26.8435456 * (uint32_t)freqdata*1000; ftemp = (uint32_t)FreqReg; Lowtemp = (uint16_t)(ftemp & 0x3FFF); Uptemp = (uint16_t)((ftemp/16384) & 0x3FFF); DDS.write(Lowtemp + 0x4000);ddsstart; DDS.write(Uptemp + 0x4000); serial.printf("uptemp %X \r\n", Uptemp + 0x4000); serial.printf("lowtemp %X \r\n", Lowtemp + 0x4000); ddsstop; return 0; } int freqsq () { float period; period = 1000/freqdata; sq.period_us(period); sq.pulsewidth_us(period/2); return 0; } int sinus() { ddsstart; sinsoft; freq(); ddsstop; amplitude(); return 0; } int square() { ddsstart; tripin; ddsstop; amplitude(); freqsq(); return 0; } int triangle() { ddsstart; trisoft; ddsstart; freq(); ddsstop; amplitude(); return 0; } int adc_read() { float y=0; float ymax=0; int ar = 0; for (ar=0; ar<=200000; ar++) { y = analog_value.read(); if (ymax < y) { ymax = y; } } mdata = (ymax*3300/*amp*/); return 0; } int request() { while(1) { serial.printf("Vyberite formu signala :1 - sinus, 2 - pryamougolniy, 3 - treugol'nyi \r\n"); serial.scanf("%i", &form); serial.printf(" %i\n",form); if (form >= 1 && form<= 3) break; else form = 1; serial.printf("Nepravil'nyi vvod, vvedite ewe raz \r\n"); } while(1) { serial.printf("Vvedite chastotu toka: 20..200kHz \r\n"); serial.scanf("%i", &freqdata); serial.printf(" %i\n",freqdata); if (freqdata >= 20 && freqdata<= 200) break; else freqdata=20; serial.printf("Nepravil'nyi vvod, vvedite ewe raz \r\n"); } while(1) { serial.printf("Vvedite amplitudu toka s shagom 0.1 mA: 1..5mA \r\n"); serial.scanf("%f", &); serial.printf(" %f\n",amp); if (amp >= 0 && amp<= 5.0) break; else amp=1.0;serial.printf("Nepravil'nyi vvod, vvedite ewe raz \r\n"); } return 0; } int rasputte() { switch(form) { case (1): sinus(); break; case (2): square(); break; case (3): triangle(); break; } return 0; }