AAAAAAAAAAAAAAAAAAA

Dependencies:   mbed FastPWM

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,&amp);
-            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,&amp);
+    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", &amp);
-        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;
+    }