AAAAAAAAAAAAAAAAAAA

Dependencies:   mbed FastPWM

Committer:
vanenzo
Date:
Tue Feb 09 07:54:15 2016 +0000
Revision:
3:59a57634f1fa
Parent:
2:b489f23d9d2c
Child:
4:2a0242bfbe0c
??? ??????+???????? ?????????? ????? ???????

Who changed what in which revision?

UserRevisionLine numberNew contents of line
vanenzo 0:957268dd05c4 1 #include "mbed.h"
vanenzo 0:957268dd05c4 2 #include "FastPWM.h"
vanenzo 0:957268dd05c4 3 #define ddsstart SYNC2 = 1;wait_ms(1);SYNC2 = 0;wait_ms(1)
vanenzo 0:957268dd05c4 4 #define ddsstop SYNC2 = 1;wait_ms(1)
vanenzo 0:957268dd05c4 5 #define ddsreset DDS.write(0x21C0)
vanenzo 0:957268dd05c4 6 #define sinsoft DDS.write(0x2000)
vanenzo 0:957268dd05c4 7 #define trisoft DDS.write(0x2002)
vanenzo 0:957268dd05c4 8 #define tripin DDS.write(0x2202)
vanenzo 0:957268dd05c4 9 #define ddsoff DDS.write(0x2048)
vanenzo 0:957268dd05c4 10 #define dacstart SYNC1 = 1;wait_ms(1);SYNC1 = 0;wait_ms(1)
vanenzo 0:957268dd05c4 11 #define dacstop SYNC1 = 1;wait_ms(1)
vanenzo 0:957268dd05c4 12
vanenzo 0:957268dd05c4 13
vanenzo 0:957268dd05c4 14 //пины управления мультиплексорами генератора
vanenzo 0:957268dd05c4 15 /*DigitalOut outA0(PA_3);
vanenzo 0:957268dd05c4 16 DigitalOut outA1(PA_2);
vanenzo 0:957268dd05c4 17 DigitalOut outA2(PA_10);
vanenzo 0:957268dd05c4 18 DigitalOut outA3(PB_3);
vanenzo 0:957268dd05c4 19 DigitalOut outE1(PB_5);
vanenzo 0:957268dd05c4 20 DigitalOut outE2(PB_4);
vanenzo 0:957268dd05c4 21 DigitalOut outE3(PB_10);
vanenzo 0:957268dd05c4 22 DigitalOut outE4(PA_8);
vanenzo 0:957268dd05c4 23 DigitalOut outE5(PA_9);
vanenzo 0:957268dd05c4 24 DigitalOut outE6(PC_7);
vanenzo 0:957268dd05c4 25 DigitalOut outE7(PB_6);
vanenzo 0:957268dd05c4 26 DigitalOut outE8(PA_7);
vanenzo 0:957268dd05c4 27 DigitalOut outE9(PA_6);
vanenzo 0:957268dd05c4 28 DigitalOut outE10(PA_5);
vanenzo 0:957268dd05c4 29 //пины управления мультиплексорами измерительной части
vanenzo 0:957268dd05c4 30 DigitalOut inA0(PB_9);
vanenzo 0:957268dd05c4 31 DigitalOut inA1(PB_8);
vanenzo 0:957268dd05c4 32 DigitalOut inA2(PC_9);
vanenzo 0:957268dd05c4 33 DigitalOut inA3(PC_8);
vanenzo 0:957268dd05c4 34 DigitalOut inE1(PC_6);
vanenzo 0:957268dd05c4 35 DigitalOut inE2(PC_5);
vanenzo 0:957268dd05c4 36 DigitalOut inE3(PA_12);
vanenzo 0:957268dd05c4 37 DigitalOut inE4(PA_11);
vanenzo 0:957268dd05c4 38 DigitalOut inE5(PB_12);
vanenzo 0:957268dd05c4 39 DigitalOut inE6(PB_2);
vanenzo 0:957268dd05c4 40 DigitalOut inE7(PB_1);
vanenzo 0:957268dd05c4 41 DigitalOut inE8(PB_15);
vanenzo 0:957268dd05c4 42 DigitalOut inE9(PB_14);
vanenzo 0:957268dd05c4 43 DigitalOut inE10(PB_13);*/
vanenzo 0:957268dd05c4 44 AnalogIn analog_value(PC_4);
vanenzo 0:957268dd05c4 45 Serial serial(USBTX,USBRX);
vanenzo 0:957268dd05c4 46 FastPWM mclk(PA_15);
vanenzo 0:957268dd05c4 47 FastPWM sq(PB_7);
vanenzo 2:b489f23d9d2c 48 SPI DDS(PC_12, NC, PC_10);
vanenzo 0:957268dd05c4 49 SPI DAC(PC_12, NC, PC_10);
vanenzo 0:957268dd05c4 50 DigitalOut SYNC1(PC_11);
vanenzo 0:957268dd05c4 51 DigitalOut SYNC2(PD_2);
vanenzo 0:957268dd05c4 52
vanenzo 0:957268dd05c4 53 //DigitalOut mux_out[10] = {(PB_5), (PB_4), (PB_10), (PA_8), (PA_9),(PC_7), (PB_6),(PA_7),(PA_6),(PA_5)};
vanenzo 0:957268dd05c4 54 //DigitalOut mux_in[10] = {(PC_6), (PC_5), (PA_12), (PA_11), (PB_12),(PB_2), (PB_1),(PB_15), (PB_14),(PB_13)};
vanenzo 0:957268dd05c4 55
vanenzo 3:59a57634f1fa 56 char stopbit[1]; //для начала работы, мб не пригодится
vanenzo 3:59a57634f1fa 57 char proof[] = "s";
vanenzo 0:957268dd05c4 58 int freqdata;
vanenzo 0:957268dd05c4 59 float amp;
vanenzo 0:957268dd05c4 60 int form;
vanenzo 0:957268dd05c4 61 float mdata;
vanenzo 0:957268dd05c4 62 int sinus();
vanenzo 0:957268dd05c4 63 int square();
vanenzo 0:957268dd05c4 64 int triangle();
vanenzo 0:957268dd05c4 65 int adc_read();
vanenzo 0:957268dd05c4 66 int request();
vanenzo 0:957268dd05c4 67 int rasputte();
vanenzo 0:957268dd05c4 68 int adc_read();
vanenzo 0:957268dd05c4 69
vanenzo 0:957268dd05c4 70
vanenzo 0:957268dd05c4 71 int main() {
vanenzo 3:59a57634f1fa 72 while(1)
vanenzo 3:59a57634f1fa 73 {
vanenzo 3:59a57634f1fa 74
vanenzo 3:59a57634f1fa 75
vanenzo 3:59a57634f1fa 76 // serial.printf("start \r\n");
vanenzo 0:957268dd05c4 77 /*outE1=0;
vanenzo 0:957268dd05c4 78 inE1=0;
vanenzo 0:957268dd05c4 79 outE2=outE3=outE4=outE5=outE6=outE7=outE8=outE9=outE10=0;
vanenzo 0:957268dd05c4 80 inE2=inE3=inE4=inE5=inE6=inE7=inE8=inE9=inE10=0;
vanenzo 0:957268dd05c4 81 outA0=0;outA1=0;outA2=0;outA3=0;
vanenzo 0:957268dd05c4 82 inA0=1;inA1=0;inA2=0;inA3=0; */
vanenzo 0:957268dd05c4 83 ddsstop;
vanenzo 0:957268dd05c4 84 dacstop;
vanenzo 0:957268dd05c4 85 DDS.format(16,2);
vanenzo 2:b489f23d9d2c 86 ddsstart;
vanenzo 0:957268dd05c4 87 DDS.write(0x21C2); ddsstart; DDS.write(0x20C2);
vanenzo 0:957268dd05c4 88 ddsstop;
vanenzo 0:957268dd05c4 89 /* ddsstart;
vanenzo 0:957268dd05c4 90 ddsreset;
vanenzo 0:957268dd05c4 91 ddsstop;*/
vanenzo 3:59a57634f1fa 92 serial.scanf("%c",&stopbit);
vanenzo 3:59a57634f1fa 93 while (strcmp(stopbit,proof) != 0) {printf("%c",stopbit); serial.scanf("%c",&stopbit);}
vanenzo 0:957268dd05c4 94 mclk.period_us(0.1);
vanenzo 0:957268dd05c4 95 mclk.pulsewidth_us(0.05);
vanenzo 0:957268dd05c4 96 request();
vanenzo 3:59a57634f1fa 97 // serial.printf("finish");
vanenzo 3:59a57634f1fa 98 // serial.printf("\r\n");
vanenzo 0:957268dd05c4 99 rasputte();
vanenzo 0:957268dd05c4 100 adc_read();
vanenzo 3:59a57634f1fa 101 // serial.printf("begin");
vanenzo 3:59a57634f1fa 102 // serial.printf("\r\n");
vanenzo 3:59a57634f1fa 103 // serial.printf("%f\r\n", mdata);
vanenzo 3:59a57634f1fa 104 //serial.printf("end");
vanenzo 3:59a57634f1fa 105 //serial.printf("\r\n");
vanenzo 3:59a57634f1fa 106 ddsstart;
vanenzo 3:59a57634f1fa 107 ddsoff;
vanenzo 3:59a57634f1fa 108 ddsstop;
vanenzo 3:59a57634f1fa 109 }
vanenzo 0:957268dd05c4 110 }
vanenzo 0:957268dd05c4 111
vanenzo 0:957268dd05c4 112 int amplitude () {
vanenzo 3:59a57634f1fa 113 uint16_t ampt;
vanenzo 3:59a57634f1fa 114 uint16_t ampReg;
vanenzo 2:b489f23d9d2c 115 ampt = uint16_t(819.2*(5-amp));
vanenzo 0:957268dd05c4 116 ampReg = uint16_t(ampt & 0xFFF);
vanenzo 2:b489f23d9d2c 117 DAC.format(16,1);
vanenzo 2:b489f23d9d2c 118 dacstart;
vanenzo 0:957268dd05c4 119 DAC.write(ampReg*4);
vanenzo 2:b489f23d9d2c 120 dacstop;
vanenzo 3:59a57634f1fa 121 // serial.printf("amp %X \r\n", ampReg*4);
vanenzo 0:957268dd05c4 122 return 0;
vanenzo 0:957268dd05c4 123 }
vanenzo 0:957268dd05c4 124
vanenzo 0:957268dd05c4 125 int freq () {
vanenzo 0:957268dd05c4 126 ddsstart;
vanenzo 0:957268dd05c4 127 float FreqReg;
vanenzo 0:957268dd05c4 128 uint32_t ftemp;
vanenzo 0:957268dd05c4 129 uint16_t Uptemp, Lowtemp;
vanenzo 0:957268dd05c4 130 FreqReg = 26.8435456 * (uint32_t)freqdata*1000;
vanenzo 0:957268dd05c4 131 ftemp = (uint32_t)FreqReg;
vanenzo 0:957268dd05c4 132 Lowtemp = (uint16_t)(ftemp & 0x3FFF);
vanenzo 0:957268dd05c4 133 Uptemp = (uint16_t)((ftemp/16384) & 0x3FFF);
vanenzo 0:957268dd05c4 134 DDS.write(Lowtemp + 0x4000);ddsstart;
vanenzo 0:957268dd05c4 135 DDS.write(Uptemp + 0x4000);
vanenzo 3:59a57634f1fa 136 //serial.printf("uptemp %X \r\n", Uptemp + 0x4000);
vanenzo 3:59a57634f1fa 137 //serial.printf("lowtemp %X \r\n", Lowtemp + 0x4000);
vanenzo 0:957268dd05c4 138 ddsstop;
vanenzo 0:957268dd05c4 139 return 0;
vanenzo 0:957268dd05c4 140 }
vanenzo 0:957268dd05c4 141
vanenzo 0:957268dd05c4 142 int freqsq () {
vanenzo 0:957268dd05c4 143 float period;
vanenzo 0:957268dd05c4 144 period = 1000/freqdata;
vanenzo 0:957268dd05c4 145 sq.period_us(period);
vanenzo 0:957268dd05c4 146 sq.pulsewidth_us(period/2);
vanenzo 0:957268dd05c4 147 return 0;
vanenzo 0:957268dd05c4 148 }
vanenzo 0:957268dd05c4 149
vanenzo 0:957268dd05c4 150 int sinus() {
vanenzo 0:957268dd05c4 151 ddsstart;
vanenzo 0:957268dd05c4 152 sinsoft;
vanenzo 0:957268dd05c4 153 freq();
vanenzo 0:957268dd05c4 154 ddsstop;
vanenzo 0:957268dd05c4 155 amplitude();
vanenzo 0:957268dd05c4 156 return 0;
vanenzo 0:957268dd05c4 157 }
vanenzo 0:957268dd05c4 158
vanenzo 0:957268dd05c4 159 int square() {
vanenzo 1:8b6ad9d92745 160 freqsq();
vanenzo 2:b489f23d9d2c 161 ddsstart;DDS.write(0x210A);
vanenzo 1:8b6ad9d92745 162 ddsstart;DDS.write(0x4000);
vanenzo 1:8b6ad9d92745 163 ddsstart;DDS.write(0x4000);
vanenzo 1:8b6ad9d92745 164 ddsstart;DDS.write(0x8000);
vanenzo 1:8b6ad9d92745 165 ddsstart;DDS.write(0x8000);
vanenzo 1:8b6ad9d92745 166 ddsstart;DDS.write(0xCC00);
vanenzo 1:8b6ad9d92745 167 ddsstart;DDS.write(0xE400);
vanenzo 1:8b6ad9d92745 168 ddsstart;DDS.write(0x220A);
vanenzo 0:957268dd05c4 169 ddsstop;
vanenzo 0:957268dd05c4 170 amplitude();
vanenzo 0:957268dd05c4 171 return 0;
vanenzo 0:957268dd05c4 172 }
vanenzo 0:957268dd05c4 173
vanenzo 0:957268dd05c4 174 int triangle() {
vanenzo 0:957268dd05c4 175 ddsstart;
vanenzo 0:957268dd05c4 176 trisoft;
vanenzo 0:957268dd05c4 177 ddsstart;
vanenzo 0:957268dd05c4 178 freq();
vanenzo 0:957268dd05c4 179 ddsstop;
vanenzo 0:957268dd05c4 180 amplitude();
vanenzo 0:957268dd05c4 181 return 0;
vanenzo 0:957268dd05c4 182 }
vanenzo 0:957268dd05c4 183 int adc_read()
vanenzo 0:957268dd05c4 184 {
vanenzo 0:957268dd05c4 185 float y=0;
vanenzo 0:957268dd05c4 186 float ymax=0;
vanenzo 0:957268dd05c4 187 int ar = 0;
vanenzo 0:957268dd05c4 188 for (ar=0; ar<=200000; ar++) {
vanenzo 0:957268dd05c4 189 y = analog_value.read();
vanenzo 0:957268dd05c4 190 if (ymax < y) {
vanenzo 0:957268dd05c4 191 ymax = y;
vanenzo 0:957268dd05c4 192 }
vanenzo 0:957268dd05c4 193 }
vanenzo 0:957268dd05c4 194 mdata = (ymax*3300/*amp*/);
vanenzo 0:957268dd05c4 195 return 0;
vanenzo 0:957268dd05c4 196 }
vanenzo 0:957268dd05c4 197
vanenzo 0:957268dd05c4 198
vanenzo 0:957268dd05c4 199 int request()
vanenzo 0:957268dd05c4 200 {
vanenzo 3:59a57634f1fa 201 /* while(1) {
vanenzo 0:957268dd05c4 202 serial.printf("Vyberite formu signala :1 - sinus, 2 - pryamougolniy, 3 - treugol'nyi \r\n");
vanenzo 0:957268dd05c4 203 serial.scanf("%i", &form);
vanenzo 3:59a57634f1fa 204 serial.printf("%i\n",form);
vanenzo 0:957268dd05c4 205 if (form >= 1 && form<= 3) break;
vanenzo 0:957268dd05c4 206 else form = 1; serial.printf("Nepravil'nyi vvod, vvedite ewe raz \r\n");
vanenzo 0:957268dd05c4 207
vanenzo 0:957268dd05c4 208 }
vanenzo 0:957268dd05c4 209
vanenzo 0:957268dd05c4 210 while(1) {
vanenzo 0:957268dd05c4 211 serial.printf("Vvedite chastotu toka: 20..200kHz \r\n");
vanenzo 0:957268dd05c4 212 serial.scanf("%i", &freqdata);
vanenzo 0:957268dd05c4 213 serial.printf(" %i\n",freqdata);
vanenzo 0:957268dd05c4 214 if (freqdata >= 20 && freqdata<= 200) break;
vanenzo 0:957268dd05c4 215 else freqdata=20; serial.printf("Nepravil'nyi vvod, vvedite ewe raz \r\n");
vanenzo 0:957268dd05c4 216 }
vanenzo 0:957268dd05c4 217
vanenzo 0:957268dd05c4 218 while(1) {
vanenzo 0:957268dd05c4 219 serial.printf("Vvedite amplitudu toka s shagom 0.1 mA: 1..5mA \r\n");
vanenzo 0:957268dd05c4 220 serial.scanf("%f", &amp);
vanenzo 0:957268dd05c4 221 serial.printf(" %f\n",amp);
vanenzo 0:957268dd05c4 222 if (amp >= 0 && amp<= 5.0) break;
vanenzo 0:957268dd05c4 223 else amp=1.0;serial.printf("Nepravil'nyi vvod, vvedite ewe raz \r\n");
vanenzo 3:59a57634f1fa 224 }*/
vanenzo 3:59a57634f1fa 225 // for (int i =0; i < 1000; i++){
vanenzo 3:59a57634f1fa 226 // serial.putc(i);
vanenzo 3:59a57634f1fa 227 // printf("%i NO: "+i);
vanenzo 3:59a57634f1fa 228 // printf("\r\n");
vanenzo 3:59a57634f1fa 229 // }
vanenzo 3:59a57634f1fa 230
vanenzo 3:59a57634f1fa 231 // printf("%i",11111);
vanenzo 3:59a57634f1fa 232 printf("%i",7);
vanenzo 3:59a57634f1fa 233 serial.scanf("%i,%i,%f",&form,&freqdata,&amp);
vanenzo 3:59a57634f1fa 234 printf("%i",8);
vanenzo 3:59a57634f1fa 235
vanenzo 3:59a57634f1fa 236 // serial.printf(" %i\r\n",form);
vanenzo 3:59a57634f1fa 237 // serial.printf(" %i\r\n",freqdata);
vanenzo 3:59a57634f1fa 238 // serial.printf(" %f\r\n",amp);
vanenzo 3:59a57634f1fa 239
vanenzo 3:59a57634f1fa 240
vanenzo 0:957268dd05c4 241
vanenzo 3:59a57634f1fa 242
vanenzo 0:957268dd05c4 243 return 0;
vanenzo 0:957268dd05c4 244 }
vanenzo 0:957268dd05c4 245 int rasputte()
vanenzo 0:957268dd05c4 246 {
vanenzo 0:957268dd05c4 247 switch(form) {
vanenzo 0:957268dd05c4 248 case (1):
vanenzo 0:957268dd05c4 249 sinus();
vanenzo 0:957268dd05c4 250 break;
vanenzo 0:957268dd05c4 251 case (2):
vanenzo 0:957268dd05c4 252 square();
vanenzo 0:957268dd05c4 253 break;
vanenzo 0:957268dd05c4 254 case (3):
vanenzo 0:957268dd05c4 255 triangle();
vanenzo 0:957268dd05c4 256 break;
vanenzo 0:957268dd05c4 257 }
vanenzo 0:957268dd05c4 258 return 0;
vanenzo 0:957268dd05c4 259 }
vanenzo 0:957268dd05c4 260