
AAAAAAAAAAAAAAAAAAA
main.cpp@3:59a57634f1fa, 2016-02-09 (annotated)
- 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?
User | Revision | Line number | New 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", &); |
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,&); |
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 |