AAAAAAAAAAAAAAAAAAA
Diff: main.cpp
- Revision:
- 5:dcaed6b6b3cb
- Parent:
- 4:2a0242bfbe0c
- Child:
- 6:a24da8bee018
--- 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;
+ }