fork

Dependencies:   mbed

Fork of LG by igor Apu

Committer:
Kovalev_D
Date:
Thu Apr 07 16:45:25 2016 +0000
Revision:
122:fbacb932a30b
Parent:
121:bbae560cdd43
Child:
124:9ae09249f842
???? 115  .  ???? ?????? 921600 ????? (????????? ??? ?????????)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
igor_v 8:5188b1448d34 1 //ssdfwewedfsfds
igor_v 0:8ad47e2b6f00 2 /****************************************Copyright (c)****************************************************
igor_v 0:8ad47e2b6f00 3 **--------------File Info---------------------------------------------------------------------------------
igor_v 0:8ad47e2b6f00 4 ** File name: main.c
igor_v 0:8ad47e2b6f00 5 ** Last modified Date: 2011-10-24
igor_v 0:8ad47e2b6f00 6 ** Last Version: V1.00
igor_v 0:8ad47e2b6f00 7 ** Descriptions: The main() function
igor_v 0:8ad47e2b6f00 8 **
igor_v 0:8ad47e2b6f00 9 **--------------------------------------------------------------------------------------------------------
igor_v 0:8ad47e2b6f00 10 ** Created by: Electrooptica Incorp.
igor_v 0:8ad47e2b6f00 11 ** Created date: 2011-08-22
igor_v 0:8ad47e2b6f00 12 ** Version: V1.00
igor_v 3:ed8744c5f67a 13 ** Descriptions:
igor_v 3:ed8744c5f67a 14 **--------------------------------------------------------------------------------------------------------
igor_v 30:17c84ed091b3 15 последнии изменения
igor_v 30:17c84ed091b3 16 //2016_02_03_17_47
igor_v 31:c783288001b5 17 //2016_02_06 igor
igor_v 37:bdd52117b56e 18 //2016_06 Dima
Kovalev_D 41:70d12776d1ef 19 //2016_02_06 21:20 Kovalev_D
igor_v 0:8ad47e2b6f00 20 *********************************************************************************************************/
igor_v 21:bc8c1cec3da6 21
igor_v 0:8ad47e2b6f00 22
igor_v 0:8ad47e2b6f00 23 #include "Global.h"
igor_v 0:8ad47e2b6f00 24 //#include <math.h>
Diletant 74:f4d9c3403578 25 #include "Device.h"
Kovalev_D 10:8d2edc51f3c9 26
igor_v 0:8ad47e2b6f00 27 /******************************************************************************
igor_v 0:8ad47e2b6f00 28 ** Main Function main()
igor_v 0:8ad47e2b6f00 29 ******************************************************************************/
Diletant 75:cc1942179a2f 30 Device device; //Single global for all device hardware-independent algorithm
Diletant 74:f4d9c3403578 31
igor_v 0:8ad47e2b6f00 32 extern uint32_t CMD_Mode;
igor_v 52:30f2e52a493f 33 unsigned int secPuls;
igor_v 52:30f2e52a493f 34 float DACF, K_DAC;
Kovalev_D 107:4d178bcc9d8a 35 int tempAMP;
igor_v 52:30f2e52a493f 36 int main (void)
igor_v 52:30f2e52a493f 37 {
igor_v 110:6406b7ac0442 38 int ttemp;
igor_v 110:6406b7ac0442 39 unsigned int TempA;
Kovalev_D 92:c892f0311aa7 40
Kovalev_D 88:b5c1d9d338d1 41 //DMA_Init(); // Инициализация DMA не используем
Kovalev_D 88:b5c1d9d338d1 42 //DACInit(); // инициализация ЦАП.
Kovalev_D 92:c892f0311aa7 43 //UART_DMA_Init(); //инициализация DMA для UART.//не используем
Kovalev_D 89:a0d344db227e 44 //WDTInit();
Kovalev_D 99:3d8f206ceac2 45 // G_Photo_Init(); //инициализация интерфейса I2C для фотодетектора.
Kovalev_D 86:398da56ef751 46 //инициализация
Kovalev_D 92:c892f0311aa7 47
Kovalev_D 92:c892f0311aa7 48
Kovalev_D 92:c892f0311aa7 49
Kovalev_D 86:398da56ef751 50 SystemInit1(); // Инициализация контроллера: установка тактовых частот
Kovalev_D 86:398da56ef751 51 FlashDMA_Init(); // Загрузка параметров с флэш
Kovalev_D 86:398da56ef751 52 SystemCoreClockUpdate1(); // расчет тактовой частоты процессора перед инициализацией UART - 100MHz
Kovalev_D 88:b5c1d9d338d1 53
Kovalev_D 86:398da56ef751 54 GLD_Init();
Kovalev_D 92:c892f0311aa7 55 ///////////старый UART
igor_v 91:a2bb81eaa183 56 // UARTInit(); // инициализация UART0 на скорость 38400.
igor_v 91:a2bb81eaa183 57 // UART1_Init(); // инициализация UART1 на скорость 38400.
Kovalev_D 88:b5c1d9d338d1 58
igor_v 91:a2bb81eaa183 59
Kovalev_D 119:4d7fcece9e8e 60 UART_InitSet (0, 921600, 0x03); // надо проверить, мож чо с ногам
Kovalev_D 122:fbacb932a30b 61 // UART_InitSet (1, 992600, 0x03);
Kovalev_D 122:fbacb932a30b 62 UART_InitSet (1, 115200, 0x03);
Kovalev_D 99:3d8f206ceac2 63
Kovalev_D 86:398da56ef751 64 ////////////
Kovalev_D 90:d9b6a4bc5065 65 //DAC_ADC_Exchange_Init(); // инициализация обмена АЦП и ЦАП.
Kovalev_D 88:b5c1d9d338d1 66
Diletant 46:2670fa0fcebc 67 IntLatch_Init(); // инициализация внутренней защелки.
Diletant 46:2670fa0fcebc 68 ExtLatch_Init(); // инициализация внешней защелки.
igor_v 21:bc8c1cec3da6 69 LoadFlashParam(FromFLASH); //загрузка параметров.
Kovalev_D 89:a0d344db227e 70
Kovalev_D 112:4a96133a1311 71 // open_all_loops(); //#define open_all_loops() RgConA = 0 (Основной регистр управления устройства (0 - включить, 1 - отключить)).
igor_v 30:17c84ed091b3 72 Output.Str.HF_reg = Device_blk.Str.HF_min; //HFO output voltage = максивальное напряжение на ГВЧ.
igor_v 30:17c84ed091b3 73 init_PLC(); //Инициализация СРП(регулировка периметра)
igor_v 30:17c84ed091b3 74 init_Dither_reg(); //инициализация вибропривода
Kovalev_D 112:4a96133a1311 75 // RgConB = RATE_VIBRO_1; // дополнительный регистр управления = разность вибросчетчиков после фильтра скольз.среднего(#define RATE_VIBRO_1 0x0001)
Kovalev_D 112:4a96133a1311 76 // close_all_loops();
igor_v 51:81f47b817071 77
Kovalev_D 105:bd01d8d20fb6 78 Out_G_photo(200,200); //запись в буфер мастера принятые от функции данные (60,60) и установка флага старта передачи и занятой шины.
Kovalev_D 105:bd01d8d20fb6 79
Kovalev_D 47:d902ef6f7564 80 WriteCon1("\n\r ...GL start programm uart ACK.... ");
Kovalev_D 47:d902ef6f7564 81 WriteCon("\n\r ...GL start programm uart Tech.... ");
igor_v 15:f5191a1c3805 82 sprintf(Time,"\r\nCompiled: %s %s.",__DATE__, __TIME__ ); //Подготовка даты и времени компиляции
igor_v 13:e2a1d18677b8 83 WriteCon(Time);
igor_v 11:af609f6dee46 84
Kovalev_D 121:bbae560cdd43 85 Gyro.PLC_Znak = 10;
igor_v 11:af609f6dee46 86
Kovalev_D 50:0e3d47f18a50 87 while ( 1 ) { //основной цикл.
Kovalev_D 107:4d178bcc9d8a 88
Kovalev_D 108:030cdde08314 89 G_Photo_Exchange();
Kovalev_D 108:030cdde08314 90 Concol (); // Проврка 0 консоли (вход и выход)
Kovalev_D 93:b3803774f110 91 Concol1 (); // Проврка 0 консоли (вход и выход)
Kovalev_D 99:3d8f206ceac2 92 Read_CMD();
igor_v 3:ed8744c5f67a 93 if (OutBufConCount) OutBufConCount--;
Kovalev_D 108:030cdde08314 94 if (OutBufCon1Count) OutBufCon1Count--;
Kovalev_D 121:bbae560cdd43 95
Kovalev_D 95:dd51e577e114 96 if (ReadCon (Time)) {
igor_v 48:8697dfe679b9 97
igor_v 16:18e3fd7b92d0 98 if (Time[0] == 'h') { // если ввели буквц h то выдать подсказку. сделанно через принф ОЧЕНЬ плохо в работе не использовать
igor_v 15:f5191a1c3805 99 sprintf(Time,"\r\nCompiled: %s %s.",__DATE__, __TIME__ ); //Подготовка даты и времени компиляции
igor_v 15:f5191a1c3805 100 WriteCon(Time);
igor_v 52:30f2e52a493f 101 sprintf(Time,"--%d.%3.d.%2.d.",Time1Hz,Time1K,Time100K); //Временно выдачпа временни из трех чисел
igor_v 15:f5191a1c3805 102 WriteCon(Time);
igor_v 52:30f2e52a493f 103 }
igor_v 52:30f2e52a493f 104 if (Time[0] == 'D') {
igor_v 52:30f2e52a493f 105 Gyro.Discharg = StartDischarg;
igor_v 15:f5191a1c3805 106 }
igor_v 52:30f2e52a493f 107 if (Time[0] == 'L') {
igor_v 52:30f2e52a493f 108 Gyro.BackLight = StartBackLight;
igor_v 52:30f2e52a493f 109 }
Kovalev_D 98:95b8e79f13e1 110
Kovalev_D 108:030cdde08314 111 if (Time[0] == 'F') { // выдача технологическая
Kovalev_D 105:bd01d8d20fb6 112 sprintf(Time,"\r\n");
Kovalev_D 105:bd01d8d20fb6 113 WriteCon(Time);
Kovalev_D 105:bd01d8d20fb6 114 sprintf((Time)," <%07d> <%07d>",Gyro.F_ras,Param2);
Kovalev_D 105:bd01d8d20fb6 115 WriteCon(Time);
Kovalev_D 105:bd01d8d20fb6 116 }
Kovalev_D 98:95b8e79f13e1 117 if (Time[0] == '1') { // выдача технологическая
Kovalev_D 88:b5c1d9d338d1 118 sprintf(Time,"\r\n");
Kovalev_D 95:dd51e577e114 119 WriteCon(Time);
Kovalev_D 96:1c8536458119 120 for (int i = 0; i < 32; i++ )sprintf((Time + i * 9)," <%05d> ",Buff_1Point[i]);
igor_v 52:30f2e52a493f 121 WriteCon(Time);
igor_v 52:30f2e52a493f 122 }
Kovalev_D 98:95b8e79f13e1 123
Kovalev_D 98:95b8e79f13e1 124 if (Time[0] == '2') { // выдача технологическая
Kovalev_D 98:95b8e79f13e1 125 sprintf(Time,"\r\n");
Kovalev_D 98:95b8e79f13e1 126 WriteCon(Time);
Kovalev_D 98:95b8e79f13e1 127 for (int i = 0; i < 32; i++ )sprintf((Time + i * 9)," <%05d> ", Buff_8Point[i]);
Kovalev_D 98:95b8e79f13e1 128 WriteCon(Time);
Kovalev_D 98:95b8e79f13e1 129 }
Kovalev_D 98:95b8e79f13e1 130 if (Time[0] == '3') { // выдача технологическая
Kovalev_D 98:95b8e79f13e1 131 sprintf(Time,"\r\n");
Kovalev_D 98:95b8e79f13e1 132 WriteCon(Time);
Kovalev_D 98:95b8e79f13e1 133 for (int i = 0; i < 32; i++ )sprintf((Time + i * 9)," <%05d> ", Buff_16Point[i]);
Kovalev_D 98:95b8e79f13e1 134 WriteCon(Time);
Kovalev_D 98:95b8e79f13e1 135 }
Kovalev_D 98:95b8e79f13e1 136
Kovalev_D 98:95b8e79f13e1 137 if (Time[0] == '4') { // выдача технологическая
Kovalev_D 98:95b8e79f13e1 138 sprintf(Time,"\r\n");
Kovalev_D 98:95b8e79f13e1 139 WriteCon(Time);
Kovalev_D 98:95b8e79f13e1 140 for (int i = 0; i < 32; i++ )sprintf((Time + i * 9)," <%05d> ", Buff_16PointD[i]);
Kovalev_D 98:95b8e79f13e1 141 WriteCon(Time);
Kovalev_D 98:95b8e79f13e1 142 }
Kovalev_D 108:030cdde08314 143
Kovalev_D 108:030cdde08314 144
Kovalev_D 108:030cdde08314 145
Kovalev_D 104:ab1cb4ff56b2 146 if (Time[0] == 'z') { // выдача технологическая
Kovalev_D 104:ab1cb4ff56b2 147 sprintf(Time,"\r\n");
Kovalev_D 104:ab1cb4ff56b2 148 WriteCon(Time);
Kovalev_D 104:ab1cb4ff56b2 149
Kovalev_D 104:ab1cb4ff56b2 150 for (int i = 0; i < 32; i++ )
Kovalev_D 104:ab1cb4ff56b2 151 {
Kovalev_D 104:ab1cb4ff56b2 152 ttemp=(Buff_16PointD[i]);
Kovalev_D 104:ab1cb4ff56b2 153 if (ttemp < 0) WriteCon("1"); else WriteCon("0");
Kovalev_D 104:ab1cb4ff56b2 154 }
Kovalev_D 104:ab1cb4ff56b2 155
Kovalev_D 104:ab1cb4ff56b2 156 }
Kovalev_D 104:ab1cb4ff56b2 157
Kovalev_D 104:ab1cb4ff56b2 158
Kovalev_D 98:95b8e79f13e1 159 if (Time[0] == '5') { // выдача технологическая
Kovalev_D 98:95b8e79f13e1 160 sprintf(Time,"\r\n");
Kovalev_D 98:95b8e79f13e1 161 WriteCon(Time);
Kovalev_D 98:95b8e79f13e1 162 for (int i = 0; i < 32; i++ )sprintf((Time + i * 9)," <%05d> ",Buff_32Point[i]);
Kovalev_D 98:95b8e79f13e1 163 WriteCon(Time);
Kovalev_D 98:95b8e79f13e1 164 }
Kovalev_D 98:95b8e79f13e1 165
Kovalev_D 98:95b8e79f13e1 166 if (Time[0] == '6') { // выдача технологическая
Kovalev_D 98:95b8e79f13e1 167 sprintf(Time,"\r\n");
Kovalev_D 98:95b8e79f13e1 168 WriteCon(Time);
Kovalev_D 98:95b8e79f13e1 169 for (int i = 0; i < 32; i++ )sprintf((Time + i * 9)," <%05d> ",Buff_Restored_sin[i]);
Kovalev_D 98:95b8e79f13e1 170 WriteCon(Time);
Kovalev_D 98:95b8e79f13e1 171 }
Kovalev_D 95:dd51e577e114 172
Kovalev_D 95:dd51e577e114 173
Kovalev_D 104:ab1cb4ff56b2 174
Kovalev_D 104:ab1cb4ff56b2 175 if (Time[0] == 'c') { // выдача технологическая
Kovalev_D 104:ab1cb4ff56b2 176 sprintf(Time,"\r\n");
Kovalev_D 104:ab1cb4ff56b2 177 WriteCon(Time);
Kovalev_D 106:250ddd8629c6 178 sprintf((Time)," <%07d> <%07d> <%07d> <%07d>", Gyro.F_ras,Gyro.F_ras/16, Gyro.Cnt_Pls, Gyro.Cnt_Mns);
Kovalev_D 104:ab1cb4ff56b2 179 WriteCon(Time);
Kovalev_D 104:ab1cb4ff56b2 180 }
Kovalev_D 104:ab1cb4ff56b2 181
Kovalev_D 104:ab1cb4ff56b2 182
Kovalev_D 104:ab1cb4ff56b2 183
Kovalev_D 98:95b8e79f13e1 184 if (Time[0] == '7') { // выдача технологическая
Kovalev_D 95:dd51e577e114 185 sprintf(Time,"\r\n");
Kovalev_D 95:dd51e577e114 186 WriteCon(Time);
Kovalev_D 96:1c8536458119 187 for (int i = 0; i < 32; i++ )sprintf((Time + i * 10)," <%07d> ",Buff_AMP64P[i]-(Buff_AMP[i]));
Kovalev_D 95:dd51e577e114 188 WriteCon(Time);
Kovalev_D 95:dd51e577e114 189 }
Kovalev_D 98:95b8e79f13e1 190 if (Time[0] == '9') { // выдача технологическая
Kovalev_D 98:95b8e79f13e1 191 sprintf(Time,"\r\n");
Kovalev_D 98:95b8e79f13e1 192 WriteCon(Time);
Kovalev_D 98:95b8e79f13e1 193 for (int i = 0; i < 32; i++ )sprintf((Time)," <%07d> ",Gyro.Frq);
Kovalev_D 98:95b8e79f13e1 194 WriteCon(Time);
Kovalev_D 98:95b8e79f13e1 195 }
Kovalev_D 98:95b8e79f13e1 196
Kovalev_D 98:95b8e79f13e1 197 if (Time[0] == 'p') { // выдача технологическая
Kovalev_D 98:95b8e79f13e1 198 sprintf(Time,"\r\n");
Kovalev_D 98:95b8e79f13e1 199 WriteCon(Time);
Kovalev_D 99:3d8f206ceac2 200 for (int i = 0; i < 32; i++ )sprintf((Time)," <%07d> ",Cur_Amp);
Kovalev_D 98:95b8e79f13e1 201 WriteCon(Time);
Kovalev_D 98:95b8e79f13e1 202 }
Kovalev_D 99:3d8f206ceac2 203 if (Time[0] == 'm') { // выдача технологическая
Kovalev_D 99:3d8f206ceac2 204 sprintf(Time,"\r\n");
Kovalev_D 99:3d8f206ceac2 205 WriteCon(Time);
Kovalev_D 109:ee0cff33ad3b 206 sprintf((Time),"Cur_Amp <%07d> ", Cur_Amp); WriteCon(Time);
Kovalev_D 109:ee0cff33ad3b 207 sprintf((Time),"Znak_Amp <%07d> ", Znak_Amp); WriteCon(Time);
Kovalev_D 109:ee0cff33ad3b 208 sprintf((Time),"AD_Regul <%07d> ", AD_Regul); WriteCon(Time);
Kovalev_D 109:ee0cff33ad3b 209 // printf((Time),"AD_Regul <%07d> ", Delta); WriteCon(Time);
Kovalev_D 109:ee0cff33ad3b 210
Kovalev_D 109:ee0cff33ad3b 211 // sprintf((Time),"Spi.DAC_B <%07d> ",Spi.DAC_B); WriteCon(Time);*/
Kovalev_D 109:ee0cff33ad3b 212 // sprintf((Time),"MaxAmp <%07d> ", MaxAmp); WriteCon(Time);
Kovalev_D 109:ee0cff33ad3b 213 // sprintf((Time),"CaunAddPlus <%07d> ", CaunAddPlus); WriteCon(Time);
Kovalev_D 109:ee0cff33ad3b 214 // sprintf((Time),"CaunAddMin <%07d> ", CaunAddMin); WriteCon(Time);
Kovalev_D 109:ee0cff33ad3b 215 // sprintf((Time)," Gyro.Amp <%07d> ",amp); WriteCon(Time);
Kovalev_D 108:030cdde08314 216
Kovalev_D 99:3d8f206ceac2 217 }
Kovalev_D 98:95b8e79f13e1 218 if (Time[0] == 'V') { // выдача технологическая
Kovalev_D 109:ee0cff33ad3b 219 // Gyro.Frq+=65000;
Kovalev_D 121:bbae560cdd43 220 Spi.DAC_B += 200;
Kovalev_D 109:ee0cff33ad3b 221
Kovalev_D 98:95b8e79f13e1 222 }
Kovalev_D 98:95b8e79f13e1 223 if (Time[0] == 'v') { // выдача технологическая
Kovalev_D 109:ee0cff33ad3b 224 //Gyro.Frq-=65000;
Kovalev_D 121:bbae560cdd43 225 Spi.DAC_B -= 200;
Kovalev_D 98:95b8e79f13e1 226 }
Kovalev_D 96:1c8536458119 227
Kovalev_D 98:95b8e79f13e1 228 if (Time[0] == '8') { // выдача технологическая
Kovalev_D 96:1c8536458119 229 sprintf(Time,"\r\n");
Kovalev_D 96:1c8536458119 230 WriteCon(Time);
Kovalev_D 96:1c8536458119 231 // for (int i = 0; i < 32; i++ )sprintf((Time + i * 9)," <%05d> ",Buff_AMP64P[i]-(Buff_AMP[i]*2));
Kovalev_D 96:1c8536458119 232 for (int i = 0; i < 32; i++ )
Kovalev_D 96:1c8536458119 233 {
Kovalev_D 96:1c8536458119 234 ttemp=(Buff_AMP64P[i]-(Buff_AMP[i]));
Kovalev_D 96:1c8536458119 235 if (ttemp < 0) WriteCon("1"); else WriteCon("0");
Kovalev_D 96:1c8536458119 236 }
Kovalev_D 96:1c8536458119 237 // WriteCon(Time);
Kovalev_D 96:1c8536458119 238 }
Kovalev_D 95:dd51e577e114 239
Kovalev_D 98:95b8e79f13e1 240 if (Time[0] == 'b') { // выдача технологическая
Kovalev_D 92:c892f0311aa7 241 sprintf(Time,"\r\n");
Kovalev_D 95:dd51e577e114 242 WriteCon(Time);
Kovalev_D 98:95b8e79f13e1 243
Kovalev_D 98:95b8e79f13e1 244 for (int i = 0; i < 32; i++ )
Kovalev_D 98:95b8e79f13e1 245 {
Kovalev_D 98:95b8e79f13e1 246 ttemp=(Buff_Restored_sin[i]);
Kovalev_D 98:95b8e79f13e1 247 if (ttemp < 0) WriteCon("1"); else WriteCon("0");
Kovalev_D 98:95b8e79f13e1 248 }
Kovalev_D 98:95b8e79f13e1 249
Kovalev_D 92:c892f0311aa7 250 }
Kovalev_D 98:95b8e79f13e1 251
Kovalev_D 121:bbae560cdd43 252
Kovalev_D 95:dd51e577e114 253 }
Kovalev_D 108:030cdde08314 254
Kovalev_D 112:4a96133a1311 255 // Read_CMD();
igor_v 114:5cc38a53d8a7 256 //ДИМА== посмотри пожалуйста нармално ли работуют все таймеры аппаратные и програмные, то есть нет ли где затыком по времени
igor_v 114:5cc38a53d8a7 257 // с помошью ссветодиода например помаргай в разные временна, почему в режиме "рейт" передача от гироскопа идет с разной частотой
igor_v 114:5cc38a53d8a7 258 // попробуй сделать "рейт M4" посмотри в протоколе как вклбчается и на кокой скорости работает
Kovalev_D 116:66f1f0ff2dab 259
Kovalev_D 116:66f1f0ff2dab 260
Kovalev_D 116:66f1f0ff2dab 261 Event_100KHz();
Kovalev_D 88:b5c1d9d338d1 262 Event_1KHz();
Kovalev_D 116:66f1f0ff2dab 263 Event_1Hz();
Kovalev_D 121:bbae560cdd43 264
Kovalev_D 88:b5c1d9d338d1 265 Event_Vibro();
igor_v 110:6406b7ac0442 266
Kovalev_D 122:fbacb932a30b 267 if((Rate2VibFlag==1) && (Rate_Flag==2))CMD_Rate2();//набор rate2 выдается по выставлению (логической)ноги в 1.
igor_v 110:6406b7ac0442 268
igor_v 110:6406b7ac0442 269
igor_v 110:6406b7ac0442 270
igor_v 111:8ee1ef722ba7 271 if (Spi.ADC_NewData == 1) // был приход новых данных по ацп сдесь сделать обработку информации и подготовку для выдачи делается 1 раз за вибро
igor_v 110:6406b7ac0442 272 {
igor_v 114:5cc38a53d8a7 273 // можно апихнкть в функцию
igor_v 110:6406b7ac0442 274 Spi.ADC_NewData = 0;
Kovalev_D 113:8be429494918 275 Gyro.Termo = Spi.ADC1;
Kovalev_D 113:8be429494918 276 Gyro.In1 = Spi.ADC2;
Kovalev_D 113:8be429494918 277 Gyro.In2 = Spi.ADC3;
Kovalev_D 113:8be429494918 278 Gyro.DeltaT = Spi.ADC4;
igor_v 114:5cc38a53d8a7 279 TempA = (0x7fff - Spi.ADC5) << 1; // перевернем знак и умножим на два (бало 32000...0 стало 0 ...64000)
Kovalev_D 112:4a96133a1311 280
igor_v 110:6406b7ac0442 281 Gyro.ADF_Accum += TempA;
igor_v 110:6406b7ac0442 282 Gyro.ADS_Accum += TempA;
igor_v 110:6406b7ac0442 283 Gyro.ADF_Count ++;
igor_v 110:6406b7ac0442 284 Gyro.ADS_Count ++;
igor_v 110:6406b7ac0442 285
igor_v 111:8ee1ef722ba7 286 if (Gyro.ADF_Count > 15) // если прошло 16 тактов виброподвеса
igor_v 110:6406b7ac0442 287 {
igor_v 111:8ee1ef722ba7 288 Gyro.AD_Fast = Gyro.ADF_Accum << 12; //обновляем данные и приводим в один масштаб
igor_v 110:6406b7ac0442 289 Gyro.ADF_Count = 0;
igor_v 110:6406b7ac0442 290 Gyro.ADF_Accum = 0;
igor_v 110:6406b7ac0442 291 Gyro.ADF_NewData = 1;
igor_v 110:6406b7ac0442 292 }
igor_v 111:8ee1ef722ba7 293 if (Gyro.ADS_Count > 255) // если прошло 256 тактов виброподвеса
igor_v 110:6406b7ac0442 294 {
igor_v 111:8ee1ef722ba7 295 Gyro.AD_Slow = Gyro.ADS_Accum << 8; //обновляем данные и приводим в один масштаб
igor_v 110:6406b7ac0442 296 Gyro.ADS_Count = 0;
igor_v 110:6406b7ac0442 297 Gyro.ADS_Accum = 0;
igor_v 110:6406b7ac0442 298 Gyro.ADS_NewData = 1;
igor_v 110:6406b7ac0442 299 }
igor_v 110:6406b7ac0442 300 }
Kovalev_D 112:4a96133a1311 301
Kovalev_D 113:8be429494918 302
Kovalev_D 113:8be429494918 303
Kovalev_D 113:8be429494918 304
igor_v 111:8ee1ef722ba7 305 if (Gyro.ADF_NewData == 1) // был приход новых данных После быстрого фильтра AD
igor_v 111:8ee1ef722ba7 306 {
Kovalev_D 112:4a96133a1311 307 Gyro.ADF_NewData = 0;
igor_v 114:5cc38a53d8a7 308 }// можно запихнкть в функцию
igor_v 114:5cc38a53d8a7 309
igor_v 114:5cc38a53d8a7 310 if (Gyro.ADS_NewData == 1) // был приход новых данных После Медленного фильтра AD
igor_v 114:5cc38a53d8a7 311 {
Kovalev_D 116:66f1f0ff2dab 312
igor_v 114:5cc38a53d8a7 313 Gyro.ADS_NewData = 0;
igor_v 114:5cc38a53d8a7 314 PlcRegul();//Расчет
Kovalev_D 113:8be429494918 315
Kovalev_D 112:4a96133a1311 316 }// можно запихнкть в функцию
Kovalev_D 112:4a96133a1311 317
igor_v 114:5cc38a53d8a7 318 if(Gyro.VibroFrqRegulF == 1) //Регулеровка частоты виброподвеса
Kovalev_D 112:4a96133a1311 319 {
Kovalev_D 112:4a96133a1311 320 Gyro.VibroFrqRegulF = 0;
Kovalev_D 112:4a96133a1311 321 VibroFrqRegul();
Kovalev_D 112:4a96133a1311 322 }
igor_v 114:5cc38a53d8a7 323
igor_v 114:5cc38a53d8a7 324 if(Gyro.VibroAMPRegulF == 1) //Регулеровка Амплитуды виброподвеса
Kovalev_D 112:4a96133a1311 325 {
Kovalev_D 112:4a96133a1311 326 Gyro.VibroAMPRegulF = 0;
Kovalev_D 112:4a96133a1311 327 VibroAMPRegul();
Kovalev_D 112:4a96133a1311 328 }
igor_v 114:5cc38a53d8a7 329 if(Gyro.VibroNoiseF == 1) //регулеровка ошумления, наверно нужно объеденить с регулеровкой ампитуды
Kovalev_D 112:4a96133a1311 330 {
Kovalev_D 112:4a96133a1311 331 Gyro.VibroNoiseF = 0;
Kovalev_D 112:4a96133a1311 332 CalcAmpN();
Kovalev_D 112:4a96133a1311 333 }
Kovalev_D 113:8be429494918 334
igor_v 114:5cc38a53d8a7 335 if(Gyro.VibroOutF== 1) // установка ног в регисторе тоже подумать , зачем отделный флаг? наверно
Kovalev_D 112:4a96133a1311 336 {
Kovalev_D 112:4a96133a1311 337 Gyro.VibroOutF = 0;
Kovalev_D 112:4a96133a1311 338 VibroOut(); //Чтение ADS_SPI
Kovalev_D 112:4a96133a1311 339 }
igor_v 114:5cc38a53d8a7 340
igor_v 114:5cc38a53d8a7 341
igor_v 110:6406b7ac0442 342 }//while
igor_v 110:6406b7ac0442 343 } //main
igor_v 0:8ad47e2b6f00 344
igor_v 0:8ad47e2b6f00 345 /******************************************************************************
igor_v 0:8ad47e2b6f00 346 ** End Of File
igor_v 0:8ad47e2b6f00 347 ******************************************************************************/
igor_v 0:8ad47e2b6f00 348
igor_v 0:8ad47e2b6f00 349