
AAAAAAAAAAAAAAAAAAA
main.cpp@9:996abe9af847, 2017-03-11 (annotated)
- Committer:
- vanenzo
- Date:
- Sat Mar 11 14:24:26 2017 +0000
- Revision:
- 9:996abe9af847
- Parent:
- 8:e68460a69e2e
- Child:
- 10:7b8f697e075d
new filter
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 | 8:e68460a69e2e | 3 | #include <algorithm> |
vanenzo | 8:e68460a69e2e | 4 | |
vanenzo | 0:957268dd05c4 | 5 | #define ddsstart SYNC2 = 1;wait_ms(1);SYNC2 = 0;wait_ms(1) |
vanenzo | 0:957268dd05c4 | 6 | #define ddsstop SYNC2 = 1;wait_ms(1) |
vanenzo | 0:957268dd05c4 | 7 | #define ddsreset DDS.write(0x21C0) |
vanenzo | 0:957268dd05c4 | 8 | #define sinsoft DDS.write(0x2000) |
vanenzo | 0:957268dd05c4 | 9 | #define trisoft DDS.write(0x2002) |
vanenzo | 0:957268dd05c4 | 10 | #define tripin DDS.write(0x2202) |
vanenzo | 0:957268dd05c4 | 11 | #define ddsoff DDS.write(0x2048) |
vanenzo | 0:957268dd05c4 | 12 | #define dacstart SYNC1 = 1;wait_ms(1);SYNC1 = 0;wait_ms(1) |
vanenzo | 0:957268dd05c4 | 13 | #define dacstop SYNC1 = 1;wait_ms(1) |
vanenzo | 8:e68460a69e2e | 14 | #define mclkstart mclk.period_us(0.1);mclk.pulsewidth_us(0.05); |
vanenzo | 8:e68460a69e2e | 15 | #define mclkstop mclk = 0.0; |
vanenzo | 0:957268dd05c4 | 16 | |
vanenzo | 8:e68460a69e2e | 17 | |
vanenzo | 8:e68460a69e2e | 18 | //основные пины |
vanenzo | 0:957268dd05c4 | 19 | Serial serial(USBTX,USBRX); |
vanenzo | 0:957268dd05c4 | 20 | FastPWM mclk(PA_15); |
vanenzo | 0:957268dd05c4 | 21 | FastPWM sq(PB_7); |
vanenzo | 2:b489f23d9d2c | 22 | SPI DDS(PC_12, NC, PC_10); |
vanenzo | 0:957268dd05c4 | 23 | SPI DAC(PC_12, NC, PC_10); |
vanenzo | 8:e68460a69e2e | 24 | DigitalOut SYNC1(PC_11);//amp dac |
vanenzo | 8:e68460a69e2e | 25 | DigitalOut SYNC2(PD_2);//dds |
vanenzo | 5:dcaed6b6b3cb | 26 | // мультиплекс, ЦАП, кнопко |
vanenzo | 5:dcaed6b6b3cb | 27 | |
vanenzo | 5:dcaed6b6b3cb | 28 | AnalogIn analog_value(PC_4); |
vanenzo | 5:dcaed6b6b3cb | 29 | DigitalIn button(PA_13); // проверка нажатой кнопки пауза |
vanenzo | 8:e68460a69e2e | 30 | DigitalIn test_button(USER_BUTTON); |
vanenzo | 8:e68460a69e2e | 31 | |
vanenzo | 8:e68460a69e2e | 32 | DigitalOut *P0,*P1,*P2,*P3;//Указатели на пины функции mux |
vanenzo | 8:e68460a69e2e | 33 | |
vanenzo | 8:e68460a69e2e | 34 | //пины управления мультиплексором выбора пояса |
vanenzo | 8:e68460a69e2e | 35 | DigitalOut IE0(PB_1); |
vanenzo | 8:e68460a69e2e | 36 | DigitalOut IE1(PB_15); |
vanenzo | 8:e68460a69e2e | 37 | DigitalOut IE2(PB_14); |
vanenzo | 8:e68460a69e2e | 38 | DigitalOut IE3(PB_13); |
vanenzo | 5:dcaed6b6b3cb | 39 | |
vanenzo | 5:dcaed6b6b3cb | 40 | //пины управления мультиплексорами генератора |
vanenzo | 8:e68460a69e2e | 41 | DigitalOut II0(PA_0); |
vanenzo | 8:e68460a69e2e | 42 | DigitalOut II1(PA_1); |
vanenzo | 8:e68460a69e2e | 43 | DigitalOut II2(PA_4); |
vanenzo | 8:e68460a69e2e | 44 | DigitalOut II3(PB_0); |
vanenzo | 8:e68460a69e2e | 45 | |
vanenzo | 8:e68460a69e2e | 46 | //пины управления мультиплексорами земли |
vanenzo | 8:e68460a69e2e | 47 | DigitalOut IG0(PA_5); |
vanenzo | 8:e68460a69e2e | 48 | DigitalOut IG1(PA_6); |
vanenzo | 8:e68460a69e2e | 49 | DigitalOut IG2(PA_7); |
vanenzo | 8:e68460a69e2e | 50 | DigitalOut IG3(PB_6); |
vanenzo | 5:dcaed6b6b3cb | 51 | |
vanenzo | 8:e68460a69e2e | 52 | //пины управления мультиплексорами 1 дифф канала |
vanenzo | 8:e68460a69e2e | 53 | DigitalOut DI10(PC_7); |
vanenzo | 8:e68460a69e2e | 54 | DigitalOut DI11(PA_9); |
vanenzo | 8:e68460a69e2e | 55 | DigitalOut DI12(PA_8); |
vanenzo | 8:e68460a69e2e | 56 | DigitalOut DI13(PB_10); |
vanenzo | 8:e68460a69e2e | 57 | |
vanenzo | 8:e68460a69e2e | 58 | //пины управления мультиплексорами 2 дифф канала |
vanenzo | 8:e68460a69e2e | 59 | DigitalOut DI20(PB_4); |
vanenzo | 8:e68460a69e2e | 60 | DigitalOut DI21(PB_5); |
vanenzo | 8:e68460a69e2e | 61 | DigitalOut DI22(PB_3); |
vanenzo | 8:e68460a69e2e | 62 | DigitalOut DI23(PA_10); |
vanenzo | 8:e68460a69e2e | 63 | |
vanenzo | 8:e68460a69e2e | 64 | //пины управления КУ |
vanenzo | 8:e68460a69e2e | 65 | DigitalOut AA0(PC_0); |
vanenzo | 8:e68460a69e2e | 66 | DigitalOut AA1(PC_1); |
vanenzo | 5:dcaed6b6b3cb | 67 | |
vanenzo | 8:e68460a69e2e | 68 | //отруб ненужных каналов АЦП |
vanenzo | 8:e68460a69e2e | 69 | BusOut adzero(PC_2,PC_3,PC_5); |
vanenzo | 8:e68460a69e2e | 70 | |
vanenzo | 8:e68460a69e2e | 71 | //управление мультиплексорами |
vanenzo | 8:e68460a69e2e | 72 | void mux_group(); |
vanenzo | 8:e68460a69e2e | 73 | int IE; |
vanenzo | 8:e68460a69e2e | 74 | int j; //inject I |
vanenzo | 8:e68460a69e2e | 75 | int k; //measure I |
vanenzo | 8:e68460a69e2e | 76 | |
vanenzo | 8:e68460a69e2e | 77 | void mux();//универсальная процедура выбора канала |
vanenzo | 8:e68460a69e2e | 78 | int P;//канал в mux |
vanenzo | 5:dcaed6b6b3cb | 79 | |
vanenzo | 8:e68460a69e2e | 80 | void emux();// выбор пояса |
vanenzo | 8:e68460a69e2e | 81 | void emux_init();//выключение всех поясов |
vanenzo | 8:e68460a69e2e | 82 | void imux(); //выбор инжектирующего электрода |
vanenzo | 8:e68460a69e2e | 83 | void igmux();//выбор земли |
vanenzo | 8:e68460a69e2e | 84 | void DI1mux();//выбор первого измерительного электрода |
vanenzo | 8:e68460a69e2e | 85 | void DI2mux();//выбор второго измерительного электрода |
vanenzo | 0:957268dd05c4 | 86 | |
vanenzo | 8:e68460a69e2e | 87 | //измерение |
vanenzo | 8:e68460a69e2e | 88 | void preamp(); |
vanenzo | 8:e68460a69e2e | 89 | int PA; |
vanenzo | 8:e68460a69e2e | 90 | |
vanenzo | 8:e68460a69e2e | 91 | //связь с ПК |
vanenzo | 8:e68460a69e2e | 92 | void five(); |
vanenzo | 8:e68460a69e2e | 93 | void four(); |
vanenzo | 8:e68460a69e2e | 94 | char key4[] = "4"; |
vanenzo | 8:e68460a69e2e | 95 | char key5[] = "5"; |
vanenzo | 4:2a0242bfbe0c | 96 | char buffer[2]; |
vanenzo | 4:2a0242bfbe0c | 97 | |
vanenzo | 8:e68460a69e2e | 98 | // переменные генератор-цап |
vanenzo | 0:957268dd05c4 | 99 | int freqdata; |
vanenzo | 0:957268dd05c4 | 100 | float amp; |
vanenzo | 0:957268dd05c4 | 101 | int form; |
vanenzo | 8:e68460a69e2e | 102 | void freq(); |
vanenzo | 8:e68460a69e2e | 103 | void freqsq(); |
vanenzo | 8:e68460a69e2e | 104 | void sinus(); |
vanenzo | 8:e68460a69e2e | 105 | void square(); |
vanenzo | 8:e68460a69e2e | 106 | void triangle(); |
vanenzo | 8:e68460a69e2e | 107 | void adc_read(); |
vanenzo | 8:e68460a69e2e | 108 | void request(); |
vanenzo | 8:e68460a69e2e | 109 | void rasputte(); |
vanenzo | 8:e68460a69e2e | 110 | void channel(); |
vanenzo | 8:e68460a69e2e | 111 | int II; int IG; int DI1; int DI2; |
vanenzo | 8:e68460a69e2e | 112 | |
vanenzo | 8:e68460a69e2e | 113 | void measure(); |
vanenzo | 8:e68460a69e2e | 114 | void ranging(); |
vanenzo | 8:e68460a69e2e | 115 | int sign; |
vanenzo | 8:e68460a69e2e | 116 | int range; |
vanenzo | 8:e68460a69e2e | 117 | |
vanenzo | 9:996abe9af847 | 118 | void fout(); |
vanenzo | 9:996abe9af847 | 119 | |
vanenzo | 8:e68460a69e2e | 120 | void swap(); |
vanenzo | 8:e68460a69e2e | 121 | int diff; |
vanenzo | 8:e68460a69e2e | 122 | |
vanenzo | 8:e68460a69e2e | 123 | int ymax; |
vanenzo | 8:e68460a69e2e | 124 | void adc_read(); |
vanenzo | 8:e68460a69e2e | 125 | int yp; |
vanenzo | 8:e68460a69e2e | 126 | float yprint[256]; |
vanenzo | 8:e68460a69e2e | 127 | |
vanenzo | 8:e68460a69e2e | 128 | //секция тестирования |
vanenzo | 8:e68460a69e2e | 129 | void ctest(); |
vanenzo | 8:e68460a69e2e | 130 | int ct; |
vanenzo | 8:e68460a69e2e | 131 | |
vanenzo | 8:e68460a69e2e | 132 | static ADC_HandleTypeDef AdcHandle; |
vanenzo | 8:e68460a69e2e | 133 | |
vanenzo | 8:e68460a69e2e | 134 | void adc_init() { |
vanenzo | 8:e68460a69e2e | 135 | // we assume AnalogIn has configureed GPIO, we need ADC channel ? |
vanenzo | 8:e68460a69e2e | 136 | __ADC1_CLK_ENABLE(); // Enable ADC clock |
vanenzo | 8:e68460a69e2e | 137 | // Configure ADC |
vanenzo | 8:e68460a69e2e | 138 | AdcHandle.Instance = (ADC_TypeDef *)ADC1; |
vanenzo | 8:e68460a69e2e | 139 | AdcHandle.Init.ClockPrescaler = ADC_CLOCKPRESCALER_PCLK_DIV2; |
vanenzo | 8:e68460a69e2e | 140 | AdcHandle.Init.Resolution = ADC_RESOLUTION12b; |
vanenzo | 8:e68460a69e2e | 141 | AdcHandle.Init.ScanConvMode = DISABLE; |
vanenzo | 8:e68460a69e2e | 142 | AdcHandle.Init.ContinuousConvMode = ENABLE; // DMA |
vanenzo | 8:e68460a69e2e | 143 | AdcHandle.Init.DiscontinuousConvMode = DISABLE; |
vanenzo | 8:e68460a69e2e | 144 | AdcHandle.Init.NbrOfDiscConversion = 0; |
vanenzo | 8:e68460a69e2e | 145 | AdcHandle.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE; |
vanenzo | 8:e68460a69e2e | 146 | AdcHandle.Init.ExternalTrigConv = ADC_EXTERNALTRIGCONV_T1_CC1; |
vanenzo | 8:e68460a69e2e | 147 | AdcHandle.Init.DataAlign = ADC_DATAALIGN_RIGHT; |
vanenzo | 8:e68460a69e2e | 148 | AdcHandle.Init.NbrOfConversion = 1; |
vanenzo | 8:e68460a69e2e | 149 | AdcHandle.Init.DMAContinuousRequests = ENABLE; // DMA |
vanenzo | 8:e68460a69e2e | 150 | AdcHandle.Init.EOCSelection = DISABLE; |
vanenzo | 8:e68460a69e2e | 151 | HAL_ADC_Init(&AdcHandle); |
vanenzo | 8:e68460a69e2e | 152 | } |
vanenzo | 8:e68460a69e2e | 153 | |
vanenzo | 8:e68460a69e2e | 154 | static DMA_HandleTypeDef DMA_Handle; |
vanenzo | 8:e68460a69e2e | 155 | |
vanenzo | 8:e68460a69e2e | 156 | void dma_init() { |
vanenzo | 8:e68460a69e2e | 157 | // DMA init ADC1 is DMA2 channel0 stream 0 or 4 use DMA2_Stream0 thd |
vanenzo | 8:e68460a69e2e | 158 | |
vanenzo | 8:e68460a69e2e | 159 | __DMA2_CLK_ENABLE(); |
vanenzo | 8:e68460a69e2e | 160 | DMA_Handle.Instance = DMA2_Stream0; |
vanenzo | 8:e68460a69e2e | 161 | DMA_Handle.State = HAL_DMA_STATE_READY; |
vanenzo | 8:e68460a69e2e | 162 | HAL_DMA_DeInit(&DMA_Handle); |
vanenzo | 8:e68460a69e2e | 163 | DMA_Handle.Init.Channel = DMA_CHANNEL_0; |
vanenzo | 8:e68460a69e2e | 164 | DMA_Handle.Init.Direction = DMA_PERIPH_TO_MEMORY; |
vanenzo | 8:e68460a69e2e | 165 | DMA_Handle.Init.PeriphInc = DMA_PINC_DISABLE; |
vanenzo | 8:e68460a69e2e | 166 | DMA_Handle.Init.MemInc = DMA_MINC_ENABLE; |
vanenzo | 8:e68460a69e2e | 167 | DMA_Handle.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD; |
vanenzo | 8:e68460a69e2e | 168 | DMA_Handle.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD; |
vanenzo | 8:e68460a69e2e | 169 | DMA_Handle.Init.Mode = DMA_NORMAL; |
vanenzo | 8:e68460a69e2e | 170 | DMA_Handle.Init.Priority = DMA_PRIORITY_HIGH; |
vanenzo | 8:e68460a69e2e | 171 | DMA_Handle.Init.FIFOMode = DMA_FIFOMODE_DISABLE; |
vanenzo | 8:e68460a69e2e | 172 | DMA_Handle.Init.FIFOThreshold = DMA_FIFO_THRESHOLD_HALFFULL; |
vanenzo | 8:e68460a69e2e | 173 | DMA_Handle.Init.MemBurst = DMA_MBURST_SINGLE; |
vanenzo | 8:e68460a69e2e | 174 | DMA_Handle.Init.PeriphBurst = DMA_PBURST_SINGLE; |
vanenzo | 8:e68460a69e2e | 175 | HAL_DMA_Init(&DMA_Handle); |
vanenzo | 8:e68460a69e2e | 176 | |
vanenzo | 8:e68460a69e2e | 177 | __HAL_LINKDMA(&AdcHandle, DMA_Handle, DMA_Handle); |
vanenzo | 8:e68460a69e2e | 178 | } |
vanenzo | 8:e68460a69e2e | 179 | |
vanenzo | 8:e68460a69e2e | 180 | void adc_readn( uint16_t * data, uint32_t nelems) { |
vanenzo | 8:e68460a69e2e | 181 | ADC_ChannelConfTypeDef sConfig; |
vanenzo | 8:e68460a69e2e | 182 | sConfig.Channel = ADC_CHANNEL_14; // PC_4 |
vanenzo | 8:e68460a69e2e | 183 | sConfig.Rank = 1; |
vanenzo | 9:996abe9af847 | 184 | sConfig.SamplingTime = ADC_SAMPLETIME_3CYCLES; |
vanenzo | 8:e68460a69e2e | 185 | sConfig.Offset = 0; |
vanenzo | 8:e68460a69e2e | 186 | HAL_ADC_ConfigChannel(&AdcHandle, &sConfig); |
vanenzo | 8:e68460a69e2e | 187 | HAL_ADC_Start_DMA(&AdcHandle, (uint32_t *)data, nelems); |
vanenzo | 8:e68460a69e2e | 188 | while (DMA_Handle.Instance->CR & DMA_SxCR_EN); // spin |
vanenzo | 8:e68460a69e2e | 189 | HAL_ADC_Stop(&AdcHandle); |
vanenzo | 8:e68460a69e2e | 190 | } |
vanenzo | 8:e68460a69e2e | 191 | |
vanenzo | 8:e68460a69e2e | 192 | void button_check(); |
vanenzo | 8:e68460a69e2e | 193 | |
vanenzo | 8:e68460a69e2e | 194 | Timer t; |
vanenzo | 8:e68460a69e2e | 195 | |
vanenzo | 8:e68460a69e2e | 196 | int main() |
vanenzo | 8:e68460a69e2e | 197 | { |
vanenzo | 8:e68460a69e2e | 198 | adzero = 0; |
vanenzo | 8:e68460a69e2e | 199 | serial.baud(256000); |
vanenzo | 8:e68460a69e2e | 200 | while(true) { |
vanenzo | 8:e68460a69e2e | 201 | emux_init(); |
vanenzo | 8:e68460a69e2e | 202 | IE = 0;emux();IG = 0; II = 0;igmux();imux(); |
vanenzo | 8:e68460a69e2e | 203 | yp=0; |
vanenzo | 8:e68460a69e2e | 204 | memset(yprint,0,sizeof yprint); |
vanenzo | 8:e68460a69e2e | 205 | ddsstop;dacstop;DDS.format(16,2); |
vanenzo | 8:e68460a69e2e | 206 | ddsstart; DDS.write(0x21C2); |
vanenzo | 8:e68460a69e2e | 207 | ddsstart; DDS.write(0x20C2); |
vanenzo | 8:e68460a69e2e | 208 | ddsstop; // инициализация dds |
vanenzo | 8:e68460a69e2e | 209 | four(); |
vanenzo | 9:996abe9af847 | 210 | //////////////////////// |
vanenzo | 9:996abe9af847 | 211 | printf("7\r\n"); |
vanenzo | 9:996abe9af847 | 212 | five(); |
vanenzo | 9:996abe9af847 | 213 | /////////////////////// |
vanenzo | 9:996abe9af847 | 214 | /* ctest(); |
vanenzo | 8:e68460a69e2e | 215 | if (ct == 1) {continue;} |
vanenzo | 8:e68460a69e2e | 216 | else { |
vanenzo | 8:e68460a69e2e | 217 | printf("7\r\n"); |
vanenzo | 8:e68460a69e2e | 218 | five();};*/ |
vanenzo | 8:e68460a69e2e | 219 | request(); |
vanenzo | 9:996abe9af847 | 220 | t.reset(); |
vanenzo | 9:996abe9af847 | 221 | t.start(); |
vanenzo | 8:e68460a69e2e | 222 | rasputte(); |
vanenzo | 8:e68460a69e2e | 223 | mux_group(); |
vanenzo | 9:996abe9af847 | 224 | t.stop(); |
vanenzo | 9:996abe9af847 | 225 | //fout(); |
vanenzo | 9:996abe9af847 | 226 | ////////////////////////// |
vanenzo | 9:996abe9af847 | 227 | for (yp = 0; yp < 256; yp++) {printf("%.4f\r\n",yprint[yp]);}; |
vanenzo | 9:996abe9af847 | 228 | ///////////////////////// |
vanenzo | 9:996abe9af847 | 229 | // printf("1000r useconds %i\r\n", t.read_ms()); |
vanenzo | 9:996abe9af847 | 230 | form = 1; freqdata = 1; amp = 0.1;sinus();sq=0.0; |
vanenzo | 8:e68460a69e2e | 231 | } |
vanenzo | 8:e68460a69e2e | 232 | |
vanenzo | 8:e68460a69e2e | 233 | } |
vanenzo | 8:e68460a69e2e | 234 | |
vanenzo | 9:996abe9af847 | 235 | void fout() |
vanenzo | 9:996abe9af847 | 236 | { |
vanenzo | 9:996abe9af847 | 237 | //printf("%.1g,%i\r\n", ampd[ampc], freqdata); |
vanenzo | 9:996abe9af847 | 238 | printf("# name: data\r\n"); |
vanenzo | 9:996abe9af847 | 239 | printf("# type: scalar struct\r\n"); |
vanenzo | 9:996abe9af847 | 240 | printf("# ndims: 2\r\n"); |
vanenzo | 9:996abe9af847 | 241 | printf(" 1 1\r\n"); |
vanenzo | 9:996abe9af847 | 242 | printf("# length: 4\r\n"); |
vanenzo | 9:996abe9af847 | 243 | printf("# name: description\r\n"); |
vanenzo | 9:996abe9af847 | 244 | printf("# type: sq_string\r\n"); |
vanenzo | 9:996abe9af847 | 245 | printf("# elements: 1\r\n"); |
vanenzo | 9:996abe9af847 | 246 | printf("# length: 20\r\n"); |
vanenzo | 9:996abe9af847 | 247 | if (form == 1){printf("# sin %03i kHz %1.01f mA\r\n",freqdata,amp);} |
vanenzo | 9:996abe9af847 | 248 | else if (form == 2){printf("# sqr %03i kHz %1.01f mA\r\n",freqdata,amp);} |
vanenzo | 9:996abe9af847 | 249 | else {printf("# tri %03i kHz %1.01f mA\r\n",freqdata,amp);}; |
vanenzo | 9:996abe9af847 | 250 | printf("\r\n"); |
vanenzo | 9:996abe9af847 | 251 | printf("\r\n"); |
vanenzo | 9:996abe9af847 | 252 | printf("# name: meas_volts\r\n"); |
vanenzo | 9:996abe9af847 | 253 | printf("# type: matrix\r\n"); |
vanenzo | 9:996abe9af847 | 254 | printf("# rows: 256\r\n"); |
vanenzo | 9:996abe9af847 | 255 | printf("# columns: 1\r\n"); |
vanenzo | 9:996abe9af847 | 256 | for (yp = 0; yp < 256; yp++) {printf("%.4g\r\n",yprint[yp]);}; |
vanenzo | 9:996abe9af847 | 257 | memset(yprint,0,sizeof yprint); |
vanenzo | 9:996abe9af847 | 258 | printf("\r\n"); |
vanenzo | 9:996abe9af847 | 259 | printf("# name: time\r\n"); |
vanenzo | 9:996abe9af847 | 260 | printf("# type: scalar\r\n"); |
vanenzo | 9:996abe9af847 | 261 | printf(" %04i ms\r\n",t.read_ms()); |
vanenzo | 9:996abe9af847 | 262 | printf("\r\n"); |
vanenzo | 9:996abe9af847 | 263 | printf("# name: n_elec\r\n"); |
vanenzo | 9:996abe9af847 | 264 | printf("# type: scalar\r\n"); |
vanenzo | 9:996abe9af847 | 265 | printf(" 16\r\n"); |
vanenzo | 9:996abe9af847 | 266 | |
vanenzo | 9:996abe9af847 | 267 | } |
vanenzo | 8:e68460a69e2e | 268 | |
vanenzo | 8:e68460a69e2e | 269 | void ctest() |
vanenzo | 8:e68460a69e2e | 270 | { |
vanenzo | 8:e68460a69e2e | 271 | ct = 0; |
vanenzo | 8:e68460a69e2e | 272 | int mg = 0; |
vanenzo | 8:e68460a69e2e | 273 | int mj = 0; |
vanenzo | 9:996abe9af847 | 274 | int aread=0; |
vanenzo | 8:e68460a69e2e | 275 | sign=1; PA=1; preamp(); |
vanenzo | 8:e68460a69e2e | 276 | form = 1; freqdata = 50; amp = 1; |
vanenzo | 8:e68460a69e2e | 277 | sinus(); |
vanenzo | 8:e68460a69e2e | 278 | for (mg = 0; mg < 10; mg++) { |
vanenzo | 8:e68460a69e2e | 279 | IE = mg; emux(); |
vanenzo | 8:e68460a69e2e | 280 | for (mj = 0; mj < 15; mj+=2) { |
vanenzo | 9:996abe9af847 | 281 | II = mj; IG = mj+1; DI1 = mj; DI2 = mj+1; |
vanenzo | 9:996abe9af847 | 282 | igmux(); imux(); DI1mux(); DI2mux(); |
vanenzo | 9:996abe9af847 | 283 | aread = (int) analog_value.read() * 4096; |
vanenzo | 9:996abe9af847 | 284 | if ((aread > 3000) &&(test_button.read() == 1)) |
vanenzo | 9:996abe9af847 | 285 | {printf("%i,%i,%i\r\n",mg+1, mj+1,aread); printf("%i,%i\r\n",mg+1, mj+2);ct = 1;} |
vanenzo | 9:996abe9af847 | 286 | } |
vanenzo | 9:996abe9af847 | 287 | |
vanenzo | 8:e68460a69e2e | 288 | } |
vanenzo | 9:996abe9af847 | 289 | mclkstop; |
vanenzo | 8:e68460a69e2e | 290 | } |
vanenzo | 8:e68460a69e2e | 291 | |
vanenzo | 0:957268dd05c4 | 292 | |
vanenzo | 8:e68460a69e2e | 293 | void four() |
vanenzo | 8:e68460a69e2e | 294 | { |
vanenzo | 8:e68460a69e2e | 295 | do { |
vanenzo | 8:e68460a69e2e | 296 | fflush (stdout); |
vanenzo | 8:e68460a69e2e | 297 | scanf ("%2s",buffer); |
vanenzo | 8:e68460a69e2e | 298 | } while (strcmp (key4,buffer) != 0); |
vanenzo | 8:e68460a69e2e | 299 | fflush (stdout); |
vanenzo | 8:e68460a69e2e | 300 | } |
vanenzo | 8:e68460a69e2e | 301 | |
vanenzo | 8:e68460a69e2e | 302 | void five() |
vanenzo | 8:e68460a69e2e | 303 | { |
vanenzo | 8:e68460a69e2e | 304 | do { |
vanenzo | 8:e68460a69e2e | 305 | fflush (stdout); |
vanenzo | 8:e68460a69e2e | 306 | scanf ("%2s",buffer); |
vanenzo | 8:e68460a69e2e | 307 | } while (strcmp (key5,buffer) != 0); |
vanenzo | 9:996abe9af847 | 308 | fflush (stdout); |
vanenzo | 8:e68460a69e2e | 309 | } |
vanenzo | 8:e68460a69e2e | 310 | |
vanenzo | 8:e68460a69e2e | 311 | void amplitude () |
vanenzo | 8:e68460a69e2e | 312 | { |
vanenzo | 8:e68460a69e2e | 313 | uint16_t ampt; |
vanenzo | 8:e68460a69e2e | 314 | uint16_t ampReg; |
vanenzo | 8:e68460a69e2e | 315 | ampt = uint16_t(819.2*(5.0-amp)); |
vanenzo | 8:e68460a69e2e | 316 | ampReg = uint16_t(ampt & 0xFFF); |
vanenzo | 8:e68460a69e2e | 317 | DAC.format(16,1); |
vanenzo | 8:e68460a69e2e | 318 | dacstart; |
vanenzo | 8:e68460a69e2e | 319 | DAC.write(ampReg*4); |
vanenzo | 8:e68460a69e2e | 320 | dacstop; |
vanenzo | 8:e68460a69e2e | 321 | } |
vanenzo | 8:e68460a69e2e | 322 | |
vanenzo | 8:e68460a69e2e | 323 | void freq () |
vanenzo | 8:e68460a69e2e | 324 | { |
vanenzo | 8:e68460a69e2e | 325 | ddsstart; |
vanenzo | 8:e68460a69e2e | 326 | float FreqReg; |
vanenzo | 8:e68460a69e2e | 327 | uint32_t ftemp; |
vanenzo | 8:e68460a69e2e | 328 | uint16_t Uptemp, Lowtemp; |
vanenzo | 8:e68460a69e2e | 329 | FreqReg = 26.8435456 * (uint32_t)freqdata*1000; |
vanenzo | 8:e68460a69e2e | 330 | ftemp = (uint32_t)FreqReg; |
vanenzo | 8:e68460a69e2e | 331 | Lowtemp = (uint16_t)(ftemp & 0x3FFF); |
vanenzo | 8:e68460a69e2e | 332 | Uptemp = (uint16_t)((ftemp/16384) & 0x3FFF); |
vanenzo | 8:e68460a69e2e | 333 | DDS.write(Lowtemp + 0x4000); |
vanenzo | 8:e68460a69e2e | 334 | ddsstart; |
vanenzo | 8:e68460a69e2e | 335 | DDS.write(Uptemp + 0x4000); |
vanenzo | 8:e68460a69e2e | 336 | ddsstop; |
vanenzo | 8:e68460a69e2e | 337 | } |
vanenzo | 8:e68460a69e2e | 338 | |
vanenzo | 8:e68460a69e2e | 339 | void freqsq () |
vanenzo | 8:e68460a69e2e | 340 | { |
vanenzo | 8:e68460a69e2e | 341 | float period; |
vanenzo | 8:e68460a69e2e | 342 | period = 1000/freqdata; |
vanenzo | 8:e68460a69e2e | 343 | sq.period_us(period); |
vanenzo | 8:e68460a69e2e | 344 | sq.pulsewidth_us(period/2); |
vanenzo | 8:e68460a69e2e | 345 | } |
vanenzo | 8:e68460a69e2e | 346 | |
vanenzo | 8:e68460a69e2e | 347 | void sinus() |
vanenzo | 8:e68460a69e2e | 348 | { |
vanenzo | 8:e68460a69e2e | 349 | ddsstart; |
vanenzo | 8:e68460a69e2e | 350 | sinsoft; |
vanenzo | 8:e68460a69e2e | 351 | freq(); |
vanenzo | 8:e68460a69e2e | 352 | ddsstop; |
vanenzo | 8:e68460a69e2e | 353 | amplitude(); |
vanenzo | 8:e68460a69e2e | 354 | mclkstart; |
vanenzo | 8:e68460a69e2e | 355 | } |
vanenzo | 8:e68460a69e2e | 356 | |
vanenzo | 8:e68460a69e2e | 357 | void square() |
vanenzo | 8:e68460a69e2e | 358 | { |
vanenzo | 8:e68460a69e2e | 359 | freqsq(); |
vanenzo | 8:e68460a69e2e | 360 | ddsstart;DDS.write(0x210A);ddsstart;DDS.write(0x4000); |
vanenzo | 8:e68460a69e2e | 361 | ddsstart;DDS.write(0x4000);ddsstart;DDS.write(0x8000); |
vanenzo | 8:e68460a69e2e | 362 | ddsstart;DDS.write(0x8000);ddsstart;DDS.write(0xCC00); |
vanenzo | 8:e68460a69e2e | 363 | ddsstart;DDS.write(0xE400);ddsstart;DDS.write(0x220A); |
vanenzo | 8:e68460a69e2e | 364 | ddsstop; |
vanenzo | 8:e68460a69e2e | 365 | amplitude(); |
vanenzo | 8:e68460a69e2e | 366 | mclkstart; |
vanenzo | 8:e68460a69e2e | 367 | } |
vanenzo | 8:e68460a69e2e | 368 | |
vanenzo | 8:e68460a69e2e | 369 | void triangle() |
vanenzo | 8:e68460a69e2e | 370 | { |
vanenzo | 8:e68460a69e2e | 371 | ddsstart; |
vanenzo | 8:e68460a69e2e | 372 | trisoft; |
vanenzo | 8:e68460a69e2e | 373 | ddsstart; |
vanenzo | 8:e68460a69e2e | 374 | freq(); |
vanenzo | 8:e68460a69e2e | 375 | ddsstop; |
vanenzo | 8:e68460a69e2e | 376 | amplitude(); |
vanenzo | 8:e68460a69e2e | 377 | mclkstart; |
vanenzo | 8:e68460a69e2e | 378 | } |
vanenzo | 8:e68460a69e2e | 379 | |
vanenzo | 8:e68460a69e2e | 380 | void request() |
vanenzo | 8:e68460a69e2e | 381 | { |
vanenzo | 8:e68460a69e2e | 382 | // printf("forma, chastota\r\n"); |
vanenzo | 8:e68460a69e2e | 383 | fflush(stdout); |
vanenzo | 8:e68460a69e2e | 384 | scanf("%i,%i,%f",&form,&freqdata,&); |
vanenzo | 8:e68460a69e2e | 385 | fflush(stdout); |
vanenzo | 8:e68460a69e2e | 386 | } |
vanenzo | 8:e68460a69e2e | 387 | |
vanenzo | 8:e68460a69e2e | 388 | void rasputte() |
vanenzo | 8:e68460a69e2e | 389 | { |
vanenzo | 8:e68460a69e2e | 390 | switch(form) { |
vanenzo | 8:e68460a69e2e | 391 | case (1): |
vanenzo | 8:e68460a69e2e | 392 | sinus(); |
vanenzo | 8:e68460a69e2e | 393 | break; |
vanenzo | 8:e68460a69e2e | 394 | case (2): |
vanenzo | 8:e68460a69e2e | 395 | square(); |
vanenzo | 8:e68460a69e2e | 396 | break; |
vanenzo | 8:e68460a69e2e | 397 | case (3): |
vanenzo | 8:e68460a69e2e | 398 | triangle(); |
vanenzo | 8:e68460a69e2e | 399 | break; |
vanenzo | 8:e68460a69e2e | 400 | } |
vanenzo | 8:e68460a69e2e | 401 | } |
vanenzo | 8:e68460a69e2e | 402 | |
vanenzo | 8:e68460a69e2e | 403 | void emux_init() |
vanenzo | 8:e68460a69e2e | 404 | { |
vanenzo | 8:e68460a69e2e | 405 | P = 15; P0=&IE0; P1=&IE1; P2=&IE2; P3=&IE3; |
vanenzo | 8:e68460a69e2e | 406 | mux(); |
vanenzo | 8:e68460a69e2e | 407 | } |
vanenzo | 8:e68460a69e2e | 408 | |
vanenzo | 8:e68460a69e2e | 409 | void emux() |
vanenzo | 8:e68460a69e2e | 410 | { |
vanenzo | 8:e68460a69e2e | 411 | P = IE; P0=&IE0; P1=&IE1; P2=&IE2; P3=&IE3; |
vanenzo | 8:e68460a69e2e | 412 | mux(); |
vanenzo | 8:e68460a69e2e | 413 | } |
vanenzo | 8:e68460a69e2e | 414 | |
vanenzo | 8:e68460a69e2e | 415 | void imux() |
vanenzo | 8:e68460a69e2e | 416 | { |
vanenzo | 8:e68460a69e2e | 417 | P = II; P0=&II0; P1=&II1; P2=&II2; P3=&II3; |
vanenzo | 8:e68460a69e2e | 418 | mux(); |
vanenzo | 8:e68460a69e2e | 419 | } |
vanenzo | 8:e68460a69e2e | 420 | |
vanenzo | 8:e68460a69e2e | 421 | void igmux() |
vanenzo | 8:e68460a69e2e | 422 | { |
vanenzo | 8:e68460a69e2e | 423 | P = IG; P0=&IG0; P1=&IG1; P2=&IG2; P3=&IG3; |
vanenzo | 8:e68460a69e2e | 424 | mux(); |
vanenzo | 8:e68460a69e2e | 425 | } |
vanenzo | 8:e68460a69e2e | 426 | |
vanenzo | 8:e68460a69e2e | 427 | void DI1mux() |
vanenzo | 8:e68460a69e2e | 428 | { |
vanenzo | 8:e68460a69e2e | 429 | P = DI1; P0=&DI10; P1=&DI11; P2=&DI12; P3=&DI13; |
vanenzo | 8:e68460a69e2e | 430 | mux(); |
vanenzo | 8:e68460a69e2e | 431 | } |
vanenzo | 8:e68460a69e2e | 432 | |
vanenzo | 8:e68460a69e2e | 433 | void DI2mux() |
vanenzo | 8:e68460a69e2e | 434 | { |
vanenzo | 8:e68460a69e2e | 435 | P = DI2; P0=&DI20; P1=&DI21; P2=&DI22; P3=&DI23; |
vanenzo | 8:e68460a69e2e | 436 | mux(); |
vanenzo | 8:e68460a69e2e | 437 | } |
vanenzo | 8:e68460a69e2e | 438 | |
vanenzo | 8:e68460a69e2e | 439 | |
vanenzo | 8:e68460a69e2e | 440 | void mux() |
vanenzo | 8:e68460a69e2e | 441 | { |
vanenzo | 8:e68460a69e2e | 442 | switch (P) { |
vanenzo | 8:e68460a69e2e | 443 | case (0): {*P0=0; *P1=0; *P2=0; *P3=0;} break; |
vanenzo | 8:e68460a69e2e | 444 | case (1): {*P0=1; *P1=0; *P2=0; *P3=0;} break; |
vanenzo | 8:e68460a69e2e | 445 | case (2): {*P0=0; *P1=1; *P2=0; *P3=0;} break; |
vanenzo | 8:e68460a69e2e | 446 | case (3): {*P0=1; *P1=1; *P2=0; *P3=0;} break; |
vanenzo | 8:e68460a69e2e | 447 | case (4): {*P0=0; *P1=0; *P2=1; *P3=0;} break; |
vanenzo | 8:e68460a69e2e | 448 | case (5): {*P0=1; *P1=0; *P2=1; *P3=0;} break; |
vanenzo | 8:e68460a69e2e | 449 | case (6): {*P0=0; *P1=1; *P2=1; *P3=0;} break; |
vanenzo | 8:e68460a69e2e | 450 | case (7): {*P0=1; *P1=1; *P2=1; *P3=0;} break; |
vanenzo | 8:e68460a69e2e | 451 | case (8): {*P0=0; *P1=0; *P2=0; *P3=1;} break; |
vanenzo | 8:e68460a69e2e | 452 | case (9): {*P0=1; *P1=0; *P2=0; *P3=1;} break; |
vanenzo | 8:e68460a69e2e | 453 | case (10): {*P0=0; *P1=1; *P2=0; *P3=1;} break; |
vanenzo | 8:e68460a69e2e | 454 | case (11): {*P0=1; *P1=1; *P2=0; *P3=1;} break; |
vanenzo | 8:e68460a69e2e | 455 | case (12): {*P0=0; *P1=0; *P2=1; *P3=1;} break; |
vanenzo | 8:e68460a69e2e | 456 | case (13): {*P0=1; *P1=0; *P2=1; *P3=1;} break; |
vanenzo | 8:e68460a69e2e | 457 | case (14): {*P0=0; *P1=1; *P2=1; *P3=1;} break; |
vanenzo | 8:e68460a69e2e | 458 | case (15): {*P0=1; *P1=1; *P2=1; *P3=1;} break; |
vanenzo | 3:59a57634f1fa | 459 | } |
vanenzo | 4:2a0242bfbe0c | 460 | } |
vanenzo | 0:957268dd05c4 | 461 | |
vanenzo | 8:e68460a69e2e | 462 | void preamp() |
vanenzo | 0:957268dd05c4 | 463 | { |
vanenzo | 8:e68460a69e2e | 464 | switch (PA) |
vanenzo | 8:e68460a69e2e | 465 | { |
vanenzo | 8:e68460a69e2e | 466 | case(1): {AA0=0;AA1=0;} break; |
vanenzo | 8:e68460a69e2e | 467 | case(10): {AA0=0;AA1=1;} break; |
vanenzo | 8:e68460a69e2e | 468 | case(100): {AA0=1;AA1=0;} break; |
vanenzo | 8:e68460a69e2e | 469 | case(1000): {AA0=1;AA1=1;} break; |
vanenzo | 0:957268dd05c4 | 470 | } |
vanenzo | 5:dcaed6b6b3cb | 471 | } |
vanenzo | 5:dcaed6b6b3cb | 472 | |
vanenzo | 5:dcaed6b6b3cb | 473 | |
vanenzo | 8:e68460a69e2e | 474 | void mux_group() |
vanenzo | 8:e68460a69e2e | 475 | { |
vanenzo | 8:e68460a69e2e | 476 | for (IE = 0; IE < 1; IE++) { |
vanenzo | 8:e68460a69e2e | 477 | emux(); |
vanenzo | 8:e68460a69e2e | 478 | PA=1; range=1;preamp(); |
vanenzo | 8:e68460a69e2e | 479 | wait_ms(20); |
vanenzo | 8:e68460a69e2e | 480 | channel(); |
vanenzo | 8:e68460a69e2e | 481 | } |
vanenzo | 8:e68460a69e2e | 482 | mclkstop; |
vanenzo | 8:e68460a69e2e | 483 | } |
vanenzo | 8:e68460a69e2e | 484 | |
vanenzo | 8:e68460a69e2e | 485 | void channel() |
vanenzo | 5:dcaed6b6b3cb | 486 | { |
vanenzo | 8:e68460a69e2e | 487 | j = 0;//inject |
vanenzo | 8:e68460a69e2e | 488 | k = 0;//measure |
vanenzo | 8:e68460a69e2e | 489 | for (j = 0; j<16; j++) { |
vanenzo | 8:e68460a69e2e | 490 | //button_check(); |
vanenzo | 8:e68460a69e2e | 491 | if (j==15) {IG = j; II = 0;} else {IG = j; II = j+1;} |
vanenzo | 8:e68460a69e2e | 492 | DI2=j;igmux(); imux();DI2mux(); |
vanenzo | 8:e68460a69e2e | 493 | for (k = 0; k<16; k++) { |
vanenzo | 8:e68460a69e2e | 494 | DI1 = k; |
vanenzo | 8:e68460a69e2e | 495 | DI1mux(); |
vanenzo | 8:e68460a69e2e | 496 | wait_us(50); |
vanenzo | 8:e68460a69e2e | 497 | measure(); |
vanenzo | 8:e68460a69e2e | 498 | // printf("\r\n"); |
vanenzo | 8:e68460a69e2e | 499 | } |
vanenzo | 5:dcaed6b6b3cb | 500 | } |
vanenzo | 8:e68460a69e2e | 501 | |
vanenzo | 8:e68460a69e2e | 502 | /* for (j = 0; j<16; j++) { |
vanenzo | 8:e68460a69e2e | 503 | //button_check(); |
vanenzo | 8:e68460a69e2e | 504 | if (j==15) {IG = j; II = 0;} else {IG = j; II = j+1;} |
vanenzo | 8:e68460a69e2e | 505 | DI1 = II;igmux(); imux();DI1mux(); |
vanenzo | 8:e68460a69e2e | 506 | |
vanenzo | 8:e68460a69e2e | 507 | wait_ms(2); |
vanenzo | 8:e68460a69e2e | 508 | |
vanenzo | 8:e68460a69e2e | 509 | measure();}*/ |
vanenzo | 8:e68460a69e2e | 510 | /* while(1){ |
vanenzo | 8:e68460a69e2e | 511 | printf("%s\r\n", "vvod II inJect "); |
vanenzo | 8:e68460a69e2e | 512 | fflush(stdout); |
vanenzo | 8:e68460a69e2e | 513 | scanf("%i",&II);//инжект |
vanenzo | 8:e68460a69e2e | 514 | printf("%s\r\n", "vvod IG inJect "); |
vanenzo | 8:e68460a69e2e | 515 | fflush(stdout); |
vanenzo | 8:e68460a69e2e | 516 | scanf("%i",&IG);//инжектIG |
vanenzo | 8:e68460a69e2e | 517 | igmux(); imux(); |
vanenzo | 8:e68460a69e2e | 518 | //button_check(); |
vanenzo | 8:e68460a69e2e | 519 | printf("%s\r\n", "vvod DI1"); |
vanenzo | 8:e68460a69e2e | 520 | fflush(stdout); |
vanenzo | 8:e68460a69e2e | 521 | scanf("%i",&DI1);//инжект |
vanenzo | 8:e68460a69e2e | 522 | DI1mux(); measure();}*/ |
vanenzo | 8:e68460a69e2e | 523 | |
vanenzo | 5:dcaed6b6b3cb | 524 | } |
vanenzo | 5:dcaed6b6b3cb | 525 | |
vanenzo | 8:e68460a69e2e | 526 | |
vanenzo | 8:e68460a69e2e | 527 | void measure() |
vanenzo | 8:e68460a69e2e | 528 | { |
vanenzo | 8:e68460a69e2e | 529 | ranging(); |
vanenzo | 8:e68460a69e2e | 530 | adc_read(); |
vanenzo | 8:e68460a69e2e | 531 | } |
vanenzo | 8:e68460a69e2e | 532 | |
vanenzo | 8:e68460a69e2e | 533 | void ranging()//определение коэффициента усиления и знака |
vanenzo | 8:e68460a69e2e | 534 | { |
vanenzo | 9:996abe9af847 | 535 | int xa = (int)5000/freqdata; |
vanenzo | 9:996abe9af847 | 536 | if (xa < 50){xa=50;} |
vanenzo | 9:996abe9af847 | 537 | else if (xa > 500){xa=500;}; |
vanenzo | 9:996abe9af847 | 538 | int xaa = (int)xa/10; |
vanenzo | 9:996abe9af847 | 539 | uint16_t x[xa]; |
vanenzo | 8:e68460a69e2e | 540 | int s_ok=0; |
vanenzo | 8:e68460a69e2e | 541 | //IG = 0; II = 1;DI1 = II;DI2=IG;igmux();imux();DI1mux();DI2mux();wait_ms(10); |
vanenzo | 8:e68460a69e2e | 542 | PA=1; preamp(); |
vanenzo | 9:996abe9af847 | 543 | //while(s_ok==0){ |
vanenzo | 8:e68460a69e2e | 544 | adc_init(); |
vanenzo | 8:e68460a69e2e | 545 | dma_init(); |
vanenzo | 8:e68460a69e2e | 546 | memset(x,0,sizeof x); |
vanenzo | 9:996abe9af847 | 547 | adc_readn(x,xa); |
vanenzo | 9:996abe9af847 | 548 | printf("non_sorted\r\n"); |
vanenzo | 9:996abe9af847 | 549 | for (s_ok = 0; s_ok < xa; s_ok++) {printf("%i\r\n",x[s_ok]);}; |
vanenzo | 9:996abe9af847 | 550 | sort(x+xaa,x + xa); |
vanenzo | 9:996abe9af847 | 551 | printf("sorted\r\n"); |
vanenzo | 9:996abe9af847 | 552 | for (s_ok = 0; s_ok < xa; s_ok++) {printf("%i\r\n",x[s_ok]);}; |
vanenzo | 9:996abe9af847 | 553 | ymax = (int)(x[xa-1]-x[xaa]); |
vanenzo | 9:996abe9af847 | 554 | if (ymax < 2) {range=1000;s_ok=1;wait_us(50);} |
vanenzo | 9:996abe9af847 | 555 | else if (((ymax >= 2)&&(ymax < 20))) {range=100;s_ok=1;wait_us(10);} |
vanenzo | 9:996abe9af847 | 556 | else if(((ymax >= 20)&&(ymax < 205))) {range=10;s_ok=1;wait_us(10);} |
vanenzo | 9:996abe9af847 | 557 | else {range=1;s_ok=1;wait_us(10);}; |
vanenzo | 9:996abe9af847 | 558 | //} |
vanenzo | 9:996abe9af847 | 559 | PA = range; preamp(); |
vanenzo | 9:996abe9af847 | 560 | //printf("%i,%i,%i,%i\r\n",ymax,x[xa-(xaa+1)], x[0], range); |
vanenzo | 8:e68460a69e2e | 561 | memset(x,0,sizeof x); |
vanenzo | 5:dcaed6b6b3cb | 562 | } |
vanenzo | 5:dcaed6b6b3cb | 563 | |
vanenzo | 8:e68460a69e2e | 564 | void swap() |
vanenzo | 8:e68460a69e2e | 565 | { |
vanenzo | 8:e68460a69e2e | 566 | int diff = DI1; |
vanenzo | 8:e68460a69e2e | 567 | DI1 = DI2; |
vanenzo | 8:e68460a69e2e | 568 | DI2 = diff; |
vanenzo | 8:e68460a69e2e | 569 | DI1mux(); |
vanenzo | 8:e68460a69e2e | 570 | DI2mux(); |
vanenzo | 8:e68460a69e2e | 571 | } |
vanenzo | 8:e68460a69e2e | 572 | |
vanenzo | 8:e68460a69e2e | 573 | void adc_read()//измерение и вывод со всеми коэффициентами |
vanenzo | 8:e68460a69e2e | 574 | { |
vanenzo | 9:996abe9af847 | 575 | int ya = (int)10000/freqdata; |
vanenzo | 9:996abe9af847 | 576 | float ym = 0; |
vanenzo | 9:996abe9af847 | 577 | uint16_t y[ya]; |
vanenzo | 8:e68460a69e2e | 578 | adc_init(); |
vanenzo | 8:e68460a69e2e | 579 | dma_init(); |
vanenzo | 8:e68460a69e2e | 580 | memset(y,0,sizeof y); |
vanenzo | 9:996abe9af847 | 581 | adc_readn(y,ya); |
vanenzo | 8:e68460a69e2e | 582 | // for (yp = 0; yp < 400; yp++) {printf("%i\r\n",y[yp]);}; |
vanenzo | 9:996abe9af847 | 583 | sort(y,y + ya); |
vanenzo | 9:996abe9af847 | 584 | ym = ((y[ya-2]+y[ya-3]+y[ya-4]+y[ya-5]+y[ya-6])-(y[1]+y[2]+y[3]+y[4]+y[5]))/10; |
vanenzo | 9:996abe9af847 | 585 | yprint[yp]=(((ym)*3.3*10)/(4096*range));yp++; |
vanenzo | 8:e68460a69e2e | 586 | memset(y,0,sizeof y); |
vanenzo | 8:e68460a69e2e | 587 | |
vanenzo | 8:e68460a69e2e | 588 | } |
vanenzo | 8:e68460a69e2e | 589 | |
vanenzo | 8:e68460a69e2e | 590 | |
vanenzo | 8:e68460a69e2e | 591 | void button_check() |
vanenzo | 8:e68460a69e2e | 592 | { |
vanenzo | 8:e68460a69e2e | 593 | if (button.read() == 1) { |
vanenzo | 5:dcaed6b6b3cb | 594 | wait_ms(10); |
vanenzo | 8:e68460a69e2e | 595 | if (button.read() == 1) { |
vanenzo | 8:e68460a69e2e | 596 | int amp1; |
vanenzo | 8:e68460a69e2e | 597 | amp1 = amp; |
vanenzo | 8:e68460a69e2e | 598 | amp = 0.1; |
vanenzo | 8:e68460a69e2e | 599 | amplitude(); |
vanenzo | 8:e68460a69e2e | 600 | while (button.read() == 1); |
vanenzo | 8:e68460a69e2e | 601 | amp = amp1; |
vanenzo | 8:e68460a69e2e | 602 | amplitude(); |
vanenzo | 5:dcaed6b6b3cb | 603 | } |
vanenzo | 5:dcaed6b6b3cb | 604 | } |
vanenzo | 8:e68460a69e2e | 605 | } |