Ivan Scherbakov
/
last_2_1_0_interchange_208_byte
AAAAAAAAAAAAAAAAAAA
Diff: main.cpp
- Revision:
- 5:dcaed6b6b3cb
- Parent:
- 4:2a0242bfbe0c
- Child:
- 6:a24da8bee018
diff -r 2a0242bfbe0c -r dcaed6b6b3cb main.cpp --- a/main.cpp Thu Feb 11 02:11:11 2016 +0000 +++ b/main.cpp Thu Feb 11 02:55:53 2016 +0000 @@ -10,38 +10,7 @@ #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); @@ -50,12 +19,39 @@ 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)}; +// мультиплекс, ЦАП, кнопко + +AnalogIn analog_value(PC_4); +DigitalIn button(PA_13); // проверка нажатой кнопки пауза + +//пины управления мультиплексорами генератора +DigitalOut outA0(PC_5); +DigitalOut outA1(PC_6); +DigitalOut outA2(PC_8); +DigitalOut outA3(PC_9); + +//пины управления мультиплексорами измерительной части +DigitalOut inA0(PA_5); +DigitalOut inA1(PA_6); +DigitalOut inA2(PA_7); +DigitalOut inA3(PB_6); +DigitalOut mux[10] = {(PC_7), (PA_9), (PA_8), (PB_10), (PB_4),(PB_5), (PB_3),(PA_10),(PB_14),(PB_13)}; //пины поясов + +int mg;//переменная поясов +int j;//мультиплексор генератора +int k;//мультиплексор измерительной части + +int muxout(int j); +int muxin(int k); +int mux_init(); +int channel(); +int mux_group(); +int button_check(); char key[] = "5"; char buffer[2]; +// переменные генератор-цап int freqdata; float amp; int form; @@ -70,44 +66,23 @@ int main() { while(true) { - - - // 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); - ddsstart; - DDS.write(0x21C2); ddsstart; DDS.write(0x20C2); - ddsstop; - /* ddsstart; - ddsreset; - ddsstop;*/ + ddsstart; DDS.write(0x21C2); ddsstart; DDS.write(0x20C2);ddsstop; // инициализация dds + // ddsstart; ddsreset; ddsstop; do { fflush (stdout); scanf ("%2s",buffer); } while (strcmp (key,buffer) != 0); fflush (stdout); - //printf("%i",7); - - mclk.period_us(0.1); - mclk.pulsewidth_us(0.05); + 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"); + rasputte(); + mux_group(); + sq=0.0;//выключение прямоугольника после ??? //ddsstart; //ddsoff; //ddsstop; @@ -115,15 +90,14 @@ } int amplitude () { - uint16_t ampt; - uint16_t ampReg; + uint16_t ampt; + uint16_t ampReg; ampt = uint16_t(819.2*(5-amp)); ampReg = uint16_t(ampt & 0xFFF); DAC.format(16,1); dacstart; DAC.write(ampReg*4); dacstop; - // serial.printf("amp %X \r\n", ampReg*4); return 0; } @@ -138,8 +112,6 @@ 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; } @@ -185,78 +157,35 @@ amplitude(); return 0; } + + int adc_read() { float y=0; float ymax=0; int ar = 0; - for (ar=0; ar<=200000; ar++) { + int qr = 200000/freqdata; + for (ar=0; ar<=qr; ar++) { y = analog_value.read(); if (ymax < y) { ymax = y; } } - mdata = (ymax*3300/*amp*/); + printf(" %.5g\r\n",ymax*3.3); return 0; -} +} int request() { - fflush(stdout); - scanf("%i,%i,%f",&form,&freqdata,&); - for(int i = 0;i < 2082;i++){ - printf("%i",i); - } - - - printf("%i",8); - fflush(stdout); - -/* 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"); - } + fflush(stdout); + scanf("%i,%i,%f",&form,&freqdata,&); + printf("%i",8); // спросить Сашу + fflush(stdout); + return 0; +} - 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"); - }*/ -// for (int i =0; i < 1000; i++){ - // serial.putc(i); - // printf("%i NO: "+i); - // printf("\r\n"); - // } - - -// -// serial.printf("\r\n %i\r\n",form); -// serial.printf("\r\n %i\r\n",freqdata); -// serial.printf("\r\n %f\r\n",amp); - - - - - - -return 0; -} - int rasputte() +int rasputte() { switch(form) { case (1): @@ -272,3 +201,107 @@ return 0; } + int muxout(int j) + { + switch (j) { + case (0):{outA0=0; outA1=0; outA2=0; outA3=0;} break; + case (1):{outA0=1; outA1=0; outA2=0; outA3=0;} break; + case (2):{outA0=0; outA1=1; outA2=0; outA3=0;} break; + case (3):{outA0=1; outA1=1; outA2=0; outA3=0;} break; + case (4):{outA0=0; outA1=0; outA2=1; outA3=0;} break; + case (5):{outA0=1; outA1=0; outA2=1; outA3=0;} break; + case (6):{outA0=0; outA1=1; outA2=1; outA3=0;} break; + case (7):{outA0=1; outA1=1; outA2=1; outA3=0;} break; + case (8):{outA0=0; outA1=0; outA2=0; outA3=1;} break; + case (9):{outA0=1; outA1=0; outA2=0; outA3=1;} break; + case (10):{outA0=0; outA1=1; outA2=0; outA3=1;} break; + case (11):{outA0=1; outA1=1; outA2=0; outA3=1;} break; + case (12):{outA0=0; outA1=0; outA2=1; outA3=1;} break; + case (13):{outA0=1; outA1=0; outA2=1; outA3=1;} break; + case (14):{outA0=0; outA1=1; outA2=1; outA3=1;} break; + case (15):{outA0=1; outA1=1; outA2=1; outA3=1;} break; + } + return 0; + } + + int muxin(int k) + { + switch(k) { + case (0):{inA0=0; inA1=0; inA2=0; inA3=0;} break; + case (1):{inA0=1; inA1=0; inA2=0; inA3=0;} break; + case (2):{inA0=0; inA1=1; inA2=0; inA3=0;} break; + case (3):{inA0=1; inA1=1; inA2=0; inA3=0;} break; + case (4):{inA0=0; inA1=0; inA2=1; inA3=0;} break; + case (5):{inA0=1; inA1=0; inA2=1; inA3=0;} break; + case (6):{inA0=0; inA1=1; inA2=1; inA3=0;} break; + case (7):{inA0=1; inA1=1; inA2=1; inA3=0;} break; + case (8):{inA0=0; inA1=0; inA2=0; inA3=1;} break; + case (9):{inA0=1; inA1=0; inA2=0; inA3=1;} break; + case (10):{inA0=0; inA1=1; inA2=0; inA3=1;} break; + case (11):{inA0=1; inA1=1; inA2=0; inA3=1;} break; + case (12):{inA0=0; inA1=0; inA2=1; inA3=1;} break; + case (13):{inA0=1; inA1=0; inA2=1; inA3=1;} break; + case (14):{inA0=0; inA1=1; inA2=1; inA3=1;} break; + case (15):{inA0=1; inA1=1; inA2=1; inA3=1;} break; + } + return 0; + } + + int channel() +{ + int j = 0; + int k = 0; + for (j = 0; j<=15; j++) { + button_check(); + muxout(j); + for (k = 0; k<=15; k++) { + if ((k==j)||(k==(j+1))||(k==(j-1))||((k==0)&&(j==15))) { + continue; + } else { + muxin(k); + adc_read(); + } + } + } + return 0; +} + + +int mux_init() +{ + int mi = 0; + for (mi = 0; mi < 10; mi++) { + mux[mi] = 1; + } + return 0; + + } + +int mux_group() + { + mux_init(); + for (mg = 0; mg < 10; mg++) { + if (mg > 0){mux[mg-1] = 0;} + mux[mg] = 0; + channel(); + mux_init(); + } + return 0; +} + +int button_check() + { + if (button.read() == 1){ + wait_ms(10); + if (button.read() == 1){ + int amp1; + amp1 = amp; + amp = 0; + amplitude(); + while (button.read() == 1); + amp = amp1; + amplitude(); + } + } + return 0; + }