fork

Dependencies:   mbed

Fork of LG by igor Apu

Committer:
Kovalev_D
Date:
Thu Apr 14 16:48:48 2016 +0000
Revision:
135:c1e30e0e8949
Parent:
134:caf4c9cd5052
Child:
136:19b9e6abb86f
????????? ???? ?????? ?? ?????????

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 130:1421dda4d7e7 26 //#include "IAP.h"
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
Kovalev_D 132:2c7bec5cf6fe 31 #define IMG_START_SECTOR 0x00010000 /* Sector 16 */
Kovalev_D 132:2c7bec5cf6fe 32 #define IMG_END_SECTOR 0x00037FFF /* Sector 20 */
Kovalev_D 132:2c7bec5cf6fe 33 /*
Kovalev_D 132:2c7bec5cf6fe 34 #define IMG_START_SECTOR 0x00030000//0x00010000 /* Sector 16
Kovalev_D 132:2c7bec5cf6fe 35 #define IMG_END_SECTOR 0x00037FFF */
Kovalev_D 134:caf4c9cd5052 36 unsigned int addres = 0x1fff1fff;
Kovalev_D 134:caf4c9cd5052 37 uint32_t Result[5];
igor_v 0:8ad47e2b6f00 38 extern uint32_t CMD_Mode;
igor_v 52:30f2e52a493f 39 unsigned int secPuls;
igor_v 52:30f2e52a493f 40 float DACF, K_DAC;
Kovalev_D 107:4d178bcc9d8a 41 int tempAMP;
igor_v 52:30f2e52a493f 42 int main (void)
igor_v 52:30f2e52a493f 43 {
igor_v 110:6406b7ac0442 44 int ttemp;
igor_v 110:6406b7ac0442 45 unsigned int TempA;
Kovalev_D 92:c892f0311aa7 46
Kovalev_D 88:b5c1d9d338d1 47 //DMA_Init(); // Инициализация DMA не используем
Kovalev_D 88:b5c1d9d338d1 48 //DACInit(); // инициализация ЦАП.
Kovalev_D 92:c892f0311aa7 49 //UART_DMA_Init(); //инициализация DMA для UART.//не используем
Kovalev_D 89:a0d344db227e 50 //WDTInit();
Kovalev_D 99:3d8f206ceac2 51 // G_Photo_Init(); //инициализация интерфейса I2C для фотодетектора.
Kovalev_D 134:caf4c9cd5052 52 //инициализация/*
Kovalev_D 134:caf4c9cd5052 53 //NVIC_DisableIRQ(TIMER1_IRQn);
Kovalev_D 134:caf4c9cd5052 54 //NVIC_DisableIRQ(TIMER2_IRQn);
Kovalev_D 134:caf4c9cd5052 55 //NVIC_DisableIRQ(TIMER3_IRQn);
Kovalev_D 134:caf4c9cd5052 56 /*
Kovalev_D 134:caf4c9cd5052 57 NVIC_DisableIRQ(WDT_IRQn);
Kovalev_D 134:caf4c9cd5052 58 NVIC_DisableIRQ(TIMER0_IRQn);
Kovalev_D 134:caf4c9cd5052 59 NVIC_DisableIRQ(TIMER1_IRQn);
Kovalev_D 134:caf4c9cd5052 60 NVIC_DisableIRQ(TIMER2_IRQn);
Kovalev_D 134:caf4c9cd5052 61 NVIC_DisableIRQ(TIMER3_IRQn);
Kovalev_D 134:caf4c9cd5052 62 NVIC_DisableIRQ(UART0_IRQn);
Kovalev_D 134:caf4c9cd5052 63 NVIC_DisableIRQ(UART1_IRQn);
Kovalev_D 134:caf4c9cd5052 64 NVIC_DisableIRQ(UART2_IRQn);
Kovalev_D 134:caf4c9cd5052 65 NVIC_DisableIRQ(UART3_IRQn);
Kovalev_D 134:caf4c9cd5052 66 NVIC_DisableIRQ(PWM1_IRQn);
Kovalev_D 134:caf4c9cd5052 67 NVIC_DisableIRQ(I2C0_IRQn);
Kovalev_D 134:caf4c9cd5052 68 NVIC_DisableIRQ(I2C1_IRQn);
Kovalev_D 134:caf4c9cd5052 69 NVIC_DisableIRQ(I2C2_IRQn);
Kovalev_D 134:caf4c9cd5052 70 NVIC_DisableIRQ(SPI_IRQn);
Kovalev_D 134:caf4c9cd5052 71 NVIC_DisableIRQ(SSP1_IRQn);
Kovalev_D 134:caf4c9cd5052 72 NVIC_DisableIRQ(PLL0_IRQn);
Kovalev_D 134:caf4c9cd5052 73 NVIC_DisableIRQ(RTC_IRQn);
Kovalev_D 134:caf4c9cd5052 74 NVIC_DisableIRQ(EINT0_IRQn);
Kovalev_D 134:caf4c9cd5052 75 NVIC_DisableIRQ(EINT1_IRQn);
Kovalev_D 134:caf4c9cd5052 76 NVIC_DisableIRQ(EINT2_IRQn);
Kovalev_D 134:caf4c9cd5052 77 NVIC_DisableIRQ(EINT3_IRQn);
Kovalev_D 134:caf4c9cd5052 78 NVIC_DisableIRQ(ADC_IRQn);
Kovalev_D 134:caf4c9cd5052 79 NVIC_DisableIRQ(BOD_IRQn);
Kovalev_D 134:caf4c9cd5052 80 NVIC_DisableIRQ(USB_IRQn);
Kovalev_D 134:caf4c9cd5052 81 NVIC_DisableIRQ(CAN_IRQn);
Kovalev_D 134:caf4c9cd5052 82 NVIC_DisableIRQ(DMA_IRQn);
Kovalev_D 134:caf4c9cd5052 83 NVIC_DisableIRQ(I2S_IRQn);
Kovalev_D 134:caf4c9cd5052 84 NVIC_DisableIRQ(RIT_IRQn);
Kovalev_D 134:caf4c9cd5052 85 NVIC_DisableIRQ(MCPWM_IRQn);
Kovalev_D 134:caf4c9cd5052 86 NVIC_DisableIRQ(QEI_IRQn);
Kovalev_D 134:caf4c9cd5052 87 NVIC_DisableIRQ(PLL1_IRQn);
Kovalev_D 134:caf4c9cd5052 88 NVIC_DisableIRQ(USBActivity_IRQn);
Kovalev_D 134:caf4c9cd5052 89 NVIC_DisableIRQ(CANActivity_IRQn);
Kovalev_D 134:caf4c9cd5052 90 */
Kovalev_D 92:c892f0311aa7 91
Kovalev_D 134:caf4c9cd5052 92 //NVIC_SetPriorityGrouping(1);
Kovalev_D 135:c1e30e0e8949 93
Kovalev_D 135:c1e30e0e8949 94
Kovalev_D 135:c1e30e0e8949 95
Kovalev_D 135:c1e30e0e8949 96
Kovalev_D 135:c1e30e0e8949 97
Kovalev_D 135:c1e30e0e8949 98
Kovalev_D 135:c1e30e0e8949 99
Kovalev_D 135:c1e30e0e8949 100
Kovalev_D 135:c1e30e0e8949 101
Kovalev_D 135:c1e30e0e8949 102
Kovalev_D 135:c1e30e0e8949 103
Kovalev_D 135:c1e30e0e8949 104
Kovalev_D 135:c1e30e0e8949 105
Kovalev_D 135:c1e30e0e8949 106
Kovalev_D 135:c1e30e0e8949 107 SystemInit1(); // Инициализация контроллера: установка тактовых частот
Kovalev_D 92:c892f0311aa7 108
Kovalev_D 133:90d0bf0e2996 109
Kovalev_D 133:90d0bf0e2996 110
Kovalev_D 134:caf4c9cd5052 111 //FlashDMA_Init(); // Загрузка параметров с флэш
Kovalev_D 86:398da56ef751 112 SystemCoreClockUpdate1(); // расчет тактовой частоты процессора перед инициализацией UART - 100MHz
Kovalev_D 88:b5c1d9d338d1 113
Kovalev_D 134:caf4c9cd5052 114
Kovalev_D 134:caf4c9cd5052 115
Kovalev_D 86:398da56ef751 116 GLD_Init();
Kovalev_D 92:c892f0311aa7 117 ///////////старый UART
igor_v 91:a2bb81eaa183 118 // UARTInit(); // инициализация UART0 на скорость 38400.
igor_v 91:a2bb81eaa183 119 // UART1_Init(); // инициализация UART1 на скорость 38400.
Kovalev_D 88:b5c1d9d338d1 120
igor_v 91:a2bb81eaa183 121
Kovalev_D 134:caf4c9cd5052 122 UART_InitSet (0, 921600, 0x03); // надо проверить, мож чо с ногам
Kovalev_D 129:406995a91322 123 // UART_InitSet (1, 921600, 0x03);
Kovalev_D 129:406995a91322 124 UART_InitSet (1, 115200, 0x03);
Kovalev_D 99:3d8f206ceac2 125
Kovalev_D 86:398da56ef751 126 ////////////
Kovalev_D 90:d9b6a4bc5065 127 //DAC_ADC_Exchange_Init(); // инициализация обмена АЦП и ЦАП.
Kovalev_D 88:b5c1d9d338d1 128
Diletant 46:2670fa0fcebc 129 IntLatch_Init(); // инициализация внутренней защелки.
Diletant 46:2670fa0fcebc 130 ExtLatch_Init(); // инициализация внешней защелки.
igor_v 21:bc8c1cec3da6 131 LoadFlashParam(FromFLASH); //загрузка параметров.
Kovalev_D 89:a0d344db227e 132
Kovalev_D 112:4a96133a1311 133 // open_all_loops(); //#define open_all_loops() RgConA = 0 (Основной регистр управления устройства (0 - включить, 1 - отключить)).
Kovalev_D 129:406995a91322 134 // Output.Str.HF_reg = Device_blk.Str.HF_min; //HFO output voltage = максивальное напряжение на ГВЧ.
igor_v 30:17c84ed091b3 135 init_PLC(); //Инициализация СРП(регулировка периметра)
igor_v 30:17c84ed091b3 136 init_Dither_reg(); //инициализация вибропривода
Kovalev_D 112:4a96133a1311 137 // RgConB = RATE_VIBRO_1; // дополнительный регистр управления = разность вибросчетчиков после фильтра скольз.среднего(#define RATE_VIBRO_1 0x0001)
Kovalev_D 112:4a96133a1311 138 // close_all_loops();
igor_v 51:81f47b817071 139
Kovalev_D 105:bd01d8d20fb6 140 Out_G_photo(200,200); //запись в буфер мастера принятые от функции данные (60,60) и установка флага старта передачи и занятой шины.
Kovalev_D 105:bd01d8d20fb6 141
Kovalev_D 47:d902ef6f7564 142 WriteCon1("\n\r ...GL start programm uart ACK.... ");
Kovalev_D 47:d902ef6f7564 143 WriteCon("\n\r ...GL start programm uart Tech.... ");
igor_v 15:f5191a1c3805 144 sprintf(Time,"\r\nCompiled: %s %s.",__DATE__, __TIME__ ); //Подготовка даты и времени компиляции
igor_v 13:e2a1d18677b8 145 WriteCon(Time);
igor_v 11:af609f6dee46 146
igor_v 127:6a7472d67804 147 Gyro.PLC_Error2Mode = 10; // начальная задержка (неработает СРП)
igor_v 11:af609f6dee46 148
Kovalev_D 50:0e3d47f18a50 149 while ( 1 ) { //основной цикл.
Kovalev_D 107:4d178bcc9d8a 150
Kovalev_D 108:030cdde08314 151 G_Photo_Exchange();
Kovalev_D 108:030cdde08314 152 Concol (); // Проврка 0 консоли (вход и выход)
Kovalev_D 93:b3803774f110 153 Concol1 (); // Проврка 0 консоли (вход и выход)
Kovalev_D 99:3d8f206ceac2 154 Read_CMD();
igor_v 3:ed8744c5f67a 155 if (OutBufConCount) OutBufConCount--;
Kovalev_D 108:030cdde08314 156 if (OutBufCon1Count) OutBufCon1Count--;
Kovalev_D 121:bbae560cdd43 157
Kovalev_D 95:dd51e577e114 158 if (ReadCon (Time)) {
Kovalev_D 132:2c7bec5cf6fe 159 /////////////////////////////////////////////////////////////////
Kovalev_D 132:2c7bec5cf6fe 160 ////////////////////////////////////////////////////////////////
Kovalev_D 132:2c7bec5cf6fe 161 //////////////////////Выбор FlashMod///////////////////////////
Kovalev_D 132:2c7bec5cf6fe 162 ////////////////////////////////////////////////////////////////
Kovalev_D 132:2c7bec5cf6fe 163
Kovalev_D 132:2c7bec5cf6fe 164 if (Time[0] == 'W') {
Kovalev_D 132:2c7bec5cf6fe 165 Gyro.FlashMod=1;
Kovalev_D 132:2c7bec5cf6fe 166 }
Kovalev_D 132:2c7bec5cf6fe 167 if (Time[0] == 'R') {
Kovalev_D 132:2c7bec5cf6fe 168 Gyro.FlashMod=2;
Kovalev_D 132:2c7bec5cf6fe 169 }
Kovalev_D 132:2c7bec5cf6fe 170
Kovalev_D 132:2c7bec5cf6fe 171 ///////////////////////////////////////////////////////////////
Kovalev_D 132:2c7bec5cf6fe 172 ///////////////////////////////////////////////////////////////
Kovalev_D 132:2c7bec5cf6fe 173 ////////////////////////////////////////////////////////////////
igor_v 48:8697dfe679b9 174
igor_v 16:18e3fd7b92d0 175 if (Time[0] == 'h') { // если ввели буквц h то выдать подсказку. сделанно через принф ОЧЕНЬ плохо в работе не использовать
igor_v 15:f5191a1c3805 176 sprintf(Time,"\r\nCompiled: %s %s.",__DATE__, __TIME__ ); //Подготовка даты и времени компиляции
igor_v 15:f5191a1c3805 177 WriteCon(Time);
igor_v 52:30f2e52a493f 178 sprintf(Time,"--%d.%3.d.%2.d.",Time1Hz,Time1K,Time100K); //Временно выдачпа временни из трех чисел
igor_v 15:f5191a1c3805 179 WriteCon(Time);
igor_v 52:30f2e52a493f 180 }
igor_v 52:30f2e52a493f 181 if (Time[0] == 'D') {
igor_v 52:30f2e52a493f 182 Gyro.Discharg = StartDischarg;
igor_v 15:f5191a1c3805 183 }
igor_v 52:30f2e52a493f 184 if (Time[0] == 'L') {
igor_v 52:30f2e52a493f 185 Gyro.BackLight = StartBackLight;
igor_v 52:30f2e52a493f 186 }
Kovalev_D 98:95b8e79f13e1 187
Kovalev_D 108:030cdde08314 188 if (Time[0] == 'F') { // выдача технологическая
Kovalev_D 105:bd01d8d20fb6 189 sprintf(Time,"\r\n");
Kovalev_D 105:bd01d8d20fb6 190 WriteCon(Time);
Kovalev_D 105:bd01d8d20fb6 191 sprintf((Time)," <%07d> <%07d>",Gyro.F_ras,Param2);
Kovalev_D 105:bd01d8d20fb6 192 WriteCon(Time);
Kovalev_D 105:bd01d8d20fb6 193 }
Kovalev_D 128:1e4675a36c93 194
Kovalev_D 128:1e4675a36c93 195 if (Time[0] == 'q') { // внешняя защелка
Kovalev_D 128:1e4675a36c93 196 Gyro.EXT_Latch=1;
Kovalev_D 128:1e4675a36c93 197 }
Kovalev_D 98:95b8e79f13e1 198 if (Time[0] == '1') { // выдача технологическая
Kovalev_D 88:b5c1d9d338d1 199 sprintf(Time,"\r\n");
Kovalev_D 95:dd51e577e114 200 WriteCon(Time);
Kovalev_D 96:1c8536458119 201 for (int i = 0; i < 32; i++ )sprintf((Time + i * 9)," <%05d> ",Buff_1Point[i]);
igor_v 52:30f2e52a493f 202 WriteCon(Time);
igor_v 52:30f2e52a493f 203 }
Kovalev_D 98:95b8e79f13e1 204
Kovalev_D 98:95b8e79f13e1 205 if (Time[0] == '2') { // выдача технологическая
Kovalev_D 98:95b8e79f13e1 206 sprintf(Time,"\r\n");
Kovalev_D 98:95b8e79f13e1 207 WriteCon(Time);
Kovalev_D 98:95b8e79f13e1 208 for (int i = 0; i < 32; i++ )sprintf((Time + i * 9)," <%05d> ", Buff_8Point[i]);
Kovalev_D 98:95b8e79f13e1 209 WriteCon(Time);
Kovalev_D 98:95b8e79f13e1 210 }
Kovalev_D 98:95b8e79f13e1 211 if (Time[0] == '3') { // выдача технологическая
Kovalev_D 98:95b8e79f13e1 212 sprintf(Time,"\r\n");
Kovalev_D 98:95b8e79f13e1 213 WriteCon(Time);
Kovalev_D 98:95b8e79f13e1 214 for (int i = 0; i < 32; i++ )sprintf((Time + i * 9)," <%05d> ", Buff_16Point[i]);
Kovalev_D 98:95b8e79f13e1 215 WriteCon(Time);
Kovalev_D 98:95b8e79f13e1 216 }
Kovalev_D 98:95b8e79f13e1 217
Kovalev_D 98:95b8e79f13e1 218 if (Time[0] == '4') { // выдача технологическая
Kovalev_D 98:95b8e79f13e1 219 sprintf(Time,"\r\n");
Kovalev_D 98:95b8e79f13e1 220 WriteCon(Time);
Kovalev_D 98:95b8e79f13e1 221 for (int i = 0; i < 32; i++ )sprintf((Time + i * 9)," <%05d> ", Buff_16PointD[i]);
Kovalev_D 98:95b8e79f13e1 222 WriteCon(Time);
Kovalev_D 98:95b8e79f13e1 223 }
Kovalev_D 108:030cdde08314 224
Kovalev_D 108:030cdde08314 225
Kovalev_D 108:030cdde08314 226
Kovalev_D 104:ab1cb4ff56b2 227 if (Time[0] == 'z') { // выдача технологическая
Kovalev_D 104:ab1cb4ff56b2 228 sprintf(Time,"\r\n");
Kovalev_D 104:ab1cb4ff56b2 229 WriteCon(Time);
Kovalev_D 104:ab1cb4ff56b2 230
Kovalev_D 104:ab1cb4ff56b2 231 for (int i = 0; i < 32; i++ )
Kovalev_D 104:ab1cb4ff56b2 232 {
Kovalev_D 104:ab1cb4ff56b2 233 ttemp=(Buff_16PointD[i]);
Kovalev_D 104:ab1cb4ff56b2 234 if (ttemp < 0) WriteCon("1"); else WriteCon("0");
Kovalev_D 104:ab1cb4ff56b2 235 }
Kovalev_D 104:ab1cb4ff56b2 236
Kovalev_D 104:ab1cb4ff56b2 237 }
Kovalev_D 104:ab1cb4ff56b2 238
Kovalev_D 104:ab1cb4ff56b2 239
Kovalev_D 98:95b8e79f13e1 240 if (Time[0] == '5') { // выдача технологическая
Kovalev_D 98:95b8e79f13e1 241 sprintf(Time,"\r\n");
Kovalev_D 98:95b8e79f13e1 242 WriteCon(Time);
Kovalev_D 98:95b8e79f13e1 243 for (int i = 0; i < 32; i++ )sprintf((Time + i * 9)," <%05d> ",Buff_32Point[i]);
Kovalev_D 98:95b8e79f13e1 244 WriteCon(Time);
Kovalev_D 98:95b8e79f13e1 245 }
Kovalev_D 98:95b8e79f13e1 246
Kovalev_D 98:95b8e79f13e1 247 if (Time[0] == '6') { // выдача технологическая
Kovalev_D 98:95b8e79f13e1 248 sprintf(Time,"\r\n");
Kovalev_D 98:95b8e79f13e1 249 WriteCon(Time);
Kovalev_D 98:95b8e79f13e1 250 for (int i = 0; i < 32; i++ )sprintf((Time + i * 9)," <%05d> ",Buff_Restored_sin[i]);
Kovalev_D 98:95b8e79f13e1 251 WriteCon(Time);
Kovalev_D 98:95b8e79f13e1 252 }
Kovalev_D 95:dd51e577e114 253
Kovalev_D 95:dd51e577e114 254
Kovalev_D 104:ab1cb4ff56b2 255
Kovalev_D 104:ab1cb4ff56b2 256 if (Time[0] == 'c') { // выдача технологическая
Kovalev_D 104:ab1cb4ff56b2 257 sprintf(Time,"\r\n");
Kovalev_D 104:ab1cb4ff56b2 258 WriteCon(Time);
Kovalev_D 106:250ddd8629c6 259 sprintf((Time)," <%07d> <%07d> <%07d> <%07d>", Gyro.F_ras,Gyro.F_ras/16, Gyro.Cnt_Pls, Gyro.Cnt_Mns);
Kovalev_D 104:ab1cb4ff56b2 260 WriteCon(Time);
Kovalev_D 104:ab1cb4ff56b2 261 }
Kovalev_D 104:ab1cb4ff56b2 262
Kovalev_D 104:ab1cb4ff56b2 263
Kovalev_D 104:ab1cb4ff56b2 264
Kovalev_D 98:95b8e79f13e1 265 if (Time[0] == '7') { // выдача технологическая
Kovalev_D 95:dd51e577e114 266 sprintf(Time,"\r\n");
Kovalev_D 95:dd51e577e114 267 WriteCon(Time);
Kovalev_D 96:1c8536458119 268 for (int i = 0; i < 32; i++ )sprintf((Time + i * 10)," <%07d> ",Buff_AMP64P[i]-(Buff_AMP[i]));
Kovalev_D 95:dd51e577e114 269 WriteCon(Time);
Kovalev_D 95:dd51e577e114 270 }
Kovalev_D 98:95b8e79f13e1 271 if (Time[0] == '9') { // выдача технологическая
Kovalev_D 98:95b8e79f13e1 272 sprintf(Time,"\r\n");
Kovalev_D 98:95b8e79f13e1 273 WriteCon(Time);
Kovalev_D 98:95b8e79f13e1 274 for (int i = 0; i < 32; i++ )sprintf((Time)," <%07d> ",Gyro.Frq);
Kovalev_D 98:95b8e79f13e1 275 WriteCon(Time);
Kovalev_D 98:95b8e79f13e1 276 }
Kovalev_D 98:95b8e79f13e1 277
Kovalev_D 98:95b8e79f13e1 278 if (Time[0] == 'p') { // выдача технологическая
Kovalev_D 98:95b8e79f13e1 279 sprintf(Time,"\r\n");
Kovalev_D 98:95b8e79f13e1 280 WriteCon(Time);
Kovalev_D 99:3d8f206ceac2 281 for (int i = 0; i < 32; i++ )sprintf((Time)," <%07d> ",Cur_Amp);
Kovalev_D 98:95b8e79f13e1 282 WriteCon(Time);
Kovalev_D 98:95b8e79f13e1 283 }
Kovalev_D 99:3d8f206ceac2 284 if (Time[0] == 'm') { // выдача технологическая
Kovalev_D 99:3d8f206ceac2 285 sprintf(Time,"\r\n");
Kovalev_D 99:3d8f206ceac2 286 WriteCon(Time);
Kovalev_D 128:1e4675a36c93 287 // sprintf((Time),"Cur_Amp <%07d> ", Cur_Amp); WriteCon(Time);
Kovalev_D 128:1e4675a36c93 288 // sprintf((Time),"Znak_Amp <%07d> ", Znak_Amp); WriteCon(Time);
Kovalev_D 128:1e4675a36c93 289 // sprintf((Time),"AD_Regul <%07d> ", AD_Regul); WriteCon(Time);
Kovalev_D 128:1e4675a36c93 290
Kovalev_D 128:1e4675a36c93 291 sprintf((Time),"PLC_Delta <%07d> ", Gyro.PLC_Delta); WriteCon(Time);
Kovalev_D 128:1e4675a36c93 292 sprintf((Time),"PLC_DeltaADD <%07d> ", Gyro.PLC_DeltaADD); WriteCon(Time);
Kovalev_D 109:ee0cff33ad3b 293 // printf((Time),"AD_Regul <%07d> ", Delta); WriteCon(Time);
Kovalev_D 109:ee0cff33ad3b 294
Kovalev_D 109:ee0cff33ad3b 295 // sprintf((Time),"Spi.DAC_B <%07d> ",Spi.DAC_B); WriteCon(Time);*/
Kovalev_D 109:ee0cff33ad3b 296 // sprintf((Time),"MaxAmp <%07d> ", MaxAmp); WriteCon(Time);
Kovalev_D 109:ee0cff33ad3b 297 // sprintf((Time),"CaunAddPlus <%07d> ", CaunAddPlus); WriteCon(Time);
Kovalev_D 109:ee0cff33ad3b 298 // sprintf((Time),"CaunAddMin <%07d> ", CaunAddMin); WriteCon(Time);
Kovalev_D 109:ee0cff33ad3b 299 // sprintf((Time)," Gyro.Amp <%07d> ",amp); WriteCon(Time);
Kovalev_D 108:030cdde08314 300
Kovalev_D 99:3d8f206ceac2 301 }
Kovalev_D 98:95b8e79f13e1 302 if (Time[0] == 'V') { // выдача технологическая
Kovalev_D 109:ee0cff33ad3b 303 // Gyro.Frq+=65000;
Kovalev_D 121:bbae560cdd43 304 Spi.DAC_B += 200;
Kovalev_D 109:ee0cff33ad3b 305
Kovalev_D 98:95b8e79f13e1 306 }
Kovalev_D 98:95b8e79f13e1 307 if (Time[0] == 'v') { // выдача технологическая
Kovalev_D 109:ee0cff33ad3b 308 //Gyro.Frq-=65000;
Kovalev_D 121:bbae560cdd43 309 Spi.DAC_B -= 200;
Kovalev_D 98:95b8e79f13e1 310 }
Kovalev_D 96:1c8536458119 311
Kovalev_D 98:95b8e79f13e1 312 if (Time[0] == '8') { // выдача технологическая
Kovalev_D 96:1c8536458119 313 sprintf(Time,"\r\n");
Kovalev_D 96:1c8536458119 314 WriteCon(Time);
Kovalev_D 96:1c8536458119 315 // for (int i = 0; i < 32; i++ )sprintf((Time + i * 9)," <%05d> ",Buff_AMP64P[i]-(Buff_AMP[i]*2));
Kovalev_D 96:1c8536458119 316 for (int i = 0; i < 32; i++ )
Kovalev_D 96:1c8536458119 317 {
Kovalev_D 96:1c8536458119 318 ttemp=(Buff_AMP64P[i]-(Buff_AMP[i]));
Kovalev_D 96:1c8536458119 319 if (ttemp < 0) WriteCon("1"); else WriteCon("0");
Kovalev_D 96:1c8536458119 320 }
Kovalev_D 96:1c8536458119 321 // WriteCon(Time);
Kovalev_D 96:1c8536458119 322 }
Kovalev_D 95:dd51e577e114 323
Kovalev_D 98:95b8e79f13e1 324 if (Time[0] == 'b') { // выдача технологическая
Kovalev_D 92:c892f0311aa7 325 sprintf(Time,"\r\n");
Kovalev_D 95:dd51e577e114 326 WriteCon(Time);
Kovalev_D 98:95b8e79f13e1 327
Kovalev_D 98:95b8e79f13e1 328 for (int i = 0; i < 32; i++ )
Kovalev_D 98:95b8e79f13e1 329 {
Kovalev_D 98:95b8e79f13e1 330 ttemp=(Buff_Restored_sin[i]);
Kovalev_D 98:95b8e79f13e1 331 if (ttemp < 0) WriteCon("1"); else WriteCon("0");
Kovalev_D 98:95b8e79f13e1 332 }
Kovalev_D 98:95b8e79f13e1 333
Kovalev_D 92:c892f0311aa7 334 }
Kovalev_D 98:95b8e79f13e1 335
Kovalev_D 128:1e4675a36c93 336 if (Gyro.PLC_Error2Mode) { // выдача технологическая
Kovalev_D 128:1e4675a36c93 337 sprintf(Time,"\r\nPLC_Error2Mode");
Kovalev_D 128:1e4675a36c93 338 WriteCon(Time);
Kovalev_D 128:1e4675a36c93 339 }
Kovalev_D 121:bbae560cdd43 340
Kovalev_D 95:dd51e577e114 341 }
Kovalev_D 108:030cdde08314 342
Kovalev_D 112:4a96133a1311 343 // Read_CMD();
igor_v 114:5cc38a53d8a7 344 //ДИМА== посмотри пожалуйста нармално ли работуют все таймеры аппаратные и програмные, то есть нет ли где затыком по времени
igor_v 114:5cc38a53d8a7 345 // с помошью ссветодиода например помаргай в разные временна, почему в режиме "рейт" передача от гироскопа идет с разной частотой
igor_v 114:5cc38a53d8a7 346 // попробуй сделать "рейт M4" посмотри в протоколе как вклбчается и на кокой скорости работает
Kovalev_D 116:66f1f0ff2dab 347
Kovalev_D 116:66f1f0ff2dab 348
Kovalev_D 116:66f1f0ff2dab 349 Event_100KHz();
Kovalev_D 88:b5c1d9d338d1 350 Event_1KHz();
Kovalev_D 124:9ae09249f842 351 Event_500Hz();
Kovalev_D 116:66f1f0ff2dab 352 Event_1Hz();
Kovalev_D 124:9ae09249f842 353
Kovalev_D 88:b5c1d9d338d1 354 Event_Vibro();
Kovalev_D 124:9ae09249f842 355
Kovalev_D 124:9ae09249f842 356 switch(Gyro.ModeOut) {
Kovalev_D 124:9ae09249f842 357 case 1:
Kovalev_D 124:9ae09249f842 358 if(Gyro.Rate1_Event==1)CMD_Rate();
Kovalev_D 124:9ae09249f842 359 break;
Kovalev_D 124:9ae09249f842 360 case 2:
Kovalev_D 124:9ae09249f842 361 if(Gyro.Rate2_Event==1)CMD_Rate2();
Kovalev_D 124:9ae09249f842 362 break;
Kovalev_D 124:9ae09249f842 363 case 3:
Kovalev_D 124:9ae09249f842 364 if(Gyro.Delta500_Event==1)CMD_Delta_500Hz();
Kovalev_D 128:1e4675a36c93 365 break;
Kovalev_D 128:1e4675a36c93 366 case 4:
Kovalev_D 128:1e4675a36c93 367 if(Gyro.EXT_Latch==1){CMD_Delta_Ext();}
Kovalev_D 128:1e4675a36c93 368 break;
Kovalev_D 124:9ae09249f842 369 }
igor_v 111:8ee1ef722ba7 370 if (Spi.ADC_NewData == 1) // был приход новых данных по ацп сдесь сделать обработку информации и подготовку для выдачи делается 1 раз за вибро
igor_v 110:6406b7ac0442 371 {
igor_v 114:5cc38a53d8a7 372 // можно апихнкть в функцию
igor_v 110:6406b7ac0442 373 Spi.ADC_NewData = 0;
Kovalev_D 113:8be429494918 374 Gyro.Termo = Spi.ADC1;
Kovalev_D 113:8be429494918 375 Gyro.In1 = Spi.ADC2;
Kovalev_D 113:8be429494918 376 Gyro.In2 = Spi.ADC3;
Kovalev_D 113:8be429494918 377 Gyro.DeltaT = Spi.ADC4;
igor_v 114:5cc38a53d8a7 378 TempA = (0x7fff - Spi.ADC5) << 1; // перевернем знак и умножим на два (бало 32000...0 стало 0 ...64000)
Kovalev_D 112:4a96133a1311 379
igor_v 110:6406b7ac0442 380 Gyro.ADF_Accum += TempA;
igor_v 110:6406b7ac0442 381 Gyro.ADS_Accum += TempA;
igor_v 110:6406b7ac0442 382 Gyro.ADF_Count ++;
igor_v 110:6406b7ac0442 383 Gyro.ADS_Count ++;
igor_v 110:6406b7ac0442 384
igor_v 111:8ee1ef722ba7 385 if (Gyro.ADF_Count > 15) // если прошло 16 тактов виброподвеса
igor_v 110:6406b7ac0442 386 {
igor_v 111:8ee1ef722ba7 387 Gyro.AD_Fast = Gyro.ADF_Accum << 12; //обновляем данные и приводим в один масштаб
igor_v 110:6406b7ac0442 388 Gyro.ADF_Count = 0;
igor_v 110:6406b7ac0442 389 Gyro.ADF_Accum = 0;
igor_v 110:6406b7ac0442 390 Gyro.ADF_NewData = 1;
igor_v 110:6406b7ac0442 391 }
igor_v 111:8ee1ef722ba7 392 if (Gyro.ADS_Count > 255) // если прошло 256 тактов виброподвеса
igor_v 110:6406b7ac0442 393 {
igor_v 111:8ee1ef722ba7 394 Gyro.AD_Slow = Gyro.ADS_Accum << 8; //обновляем данные и приводим в один масштаб
igor_v 110:6406b7ac0442 395 Gyro.ADS_Count = 0;
igor_v 110:6406b7ac0442 396 Gyro.ADS_Accum = 0;
igor_v 110:6406b7ac0442 397 Gyro.ADS_NewData = 1;
igor_v 110:6406b7ac0442 398 }
igor_v 110:6406b7ac0442 399 }
Kovalev_D 112:4a96133a1311 400
Kovalev_D 113:8be429494918 401
Kovalev_D 113:8be429494918 402
Kovalev_D 113:8be429494918 403
igor_v 111:8ee1ef722ba7 404 if (Gyro.ADF_NewData == 1) // был приход новых данных После быстрого фильтра AD
igor_v 111:8ee1ef722ba7 405 {
Kovalev_D 112:4a96133a1311 406 Gyro.ADF_NewData = 0;
igor_v 114:5cc38a53d8a7 407 }// можно запихнкть в функцию
igor_v 114:5cc38a53d8a7 408
igor_v 114:5cc38a53d8a7 409 if (Gyro.ADS_NewData == 1) // был приход новых данных После Медленного фильтра AD
igor_v 114:5cc38a53d8a7 410 {
Kovalev_D 116:66f1f0ff2dab 411
igor_v 114:5cc38a53d8a7 412 Gyro.ADS_NewData = 0;
igor_v 114:5cc38a53d8a7 413 PlcRegul();//Расчет
Kovalev_D 113:8be429494918 414
Kovalev_D 112:4a96133a1311 415 }// можно запихнкть в функцию
Kovalev_D 112:4a96133a1311 416
igor_v 114:5cc38a53d8a7 417 if(Gyro.VibroFrqRegulF == 1) //Регулеровка частоты виброподвеса
Kovalev_D 112:4a96133a1311 418 {
Kovalev_D 112:4a96133a1311 419 Gyro.VibroFrqRegulF = 0;
Kovalev_D 112:4a96133a1311 420 VibroFrqRegul();
Kovalev_D 112:4a96133a1311 421 }
igor_v 114:5cc38a53d8a7 422
igor_v 114:5cc38a53d8a7 423 if(Gyro.VibroAMPRegulF == 1) //Регулеровка Амплитуды виброподвеса
Kovalev_D 112:4a96133a1311 424 {
Kovalev_D 112:4a96133a1311 425 Gyro.VibroAMPRegulF = 0;
Kovalev_D 112:4a96133a1311 426 VibroAMPRegul();
Kovalev_D 112:4a96133a1311 427 }
igor_v 114:5cc38a53d8a7 428 if(Gyro.VibroNoiseF == 1) //регулеровка ошумления, наверно нужно объеденить с регулеровкой ампитуды
Kovalev_D 112:4a96133a1311 429 {
Kovalev_D 112:4a96133a1311 430 Gyro.VibroNoiseF = 0;
Kovalev_D 112:4a96133a1311 431 CalcAmpN();
Kovalev_D 112:4a96133a1311 432 }
Kovalev_D 113:8be429494918 433
igor_v 114:5cc38a53d8a7 434 if(Gyro.VibroOutF== 1) // установка ног в регисторе тоже подумать , зачем отделный флаг? наверно
Kovalev_D 112:4a96133a1311 435 {
Kovalev_D 112:4a96133a1311 436 Gyro.VibroOutF = 0;
Kovalev_D 112:4a96133a1311 437 VibroOut(); //Чтение ADS_SPI
Kovalev_D 112:4a96133a1311 438 }
Kovalev_D 132:2c7bec5cf6fe 439 //&Gyro.Firmware_Version
Kovalev_D 132:2c7bec5cf6fe 440 /////////////////////////////////////////////////////////////////////////////////////////////////////////
Kovalev_D 132:2c7bec5cf6fe 441 /////////////////////////////////////////////////////////////////////////////////////////////////////////
Kovalev_D 132:2c7bec5cf6fe 442 /////////////////////////Работа с Flash//////////////////////////////////////////////////////////////////
Kovalev_D 132:2c7bec5cf6fe 443 /////////////////////////////////////////////////////////////////////////////////////////////////////////
Kovalev_D 132:2c7bec5cf6fe 444 if(Gyro.FlashMod == 1)
Kovalev_D 132:2c7bec5cf6fe 445 {
Kovalev_D 132:2c7bec5cf6fe 446
Kovalev_D 132:2c7bec5cf6fe 447 /* Prepare Sectors to be flashed */
Kovalev_D 134:caf4c9cd5052 448 NVIC_DisableIRQ(TIMER1_IRQn);
Kovalev_D 134:caf4c9cd5052 449 NVIC_DisableIRQ(TIMER2_IRQn);
Kovalev_D 134:caf4c9cd5052 450 NVIC_DisableIRQ(TIMER3_IRQn);
Kovalev_D 134:caf4c9cd5052 451 NVIC_DisableIRQ(EINT3_IRQn);
Kovalev_D 134:caf4c9cd5052 452 //SCB->VTOR = 0x00A000;
Kovalev_D 134:caf4c9cd5052 453 //boot_jump(addres);
Kovalev_D 135:c1e30e0e8949 454
Kovalev_D 135:c1e30e0e8949 455 SystemInitDef();
Kovalev_D 135:c1e30e0e8949 456 vIAP_ReinvokeISP();
Kovalev_D 135:c1e30e0e8949 457
Kovalev_D 134:caf4c9cd5052 458 SystemCoreClockUpdate1();
Kovalev_D 134:caf4c9cd5052 459 vIAP_ReinvokeISP();
Kovalev_D 133:90d0bf0e2996 460
Kovalev_D 133:90d0bf0e2996 461
Kovalev_D 132:2c7bec5cf6fe 462 if(u32IAP_PrepareSectors(19, 21) == IAP_STA_CMD_SUCCESS)
Kovalev_D 133:90d0bf0e2996 463
Kovalev_D 132:2c7bec5cf6fe 464 {
Kovalev_D 134:caf4c9cd5052 465
Kovalev_D 134:caf4c9cd5052 466
Kovalev_D 132:2c7bec5cf6fe 467 WriteCon("\r\nPrepare Sector OK");
Kovalev_D 132:2c7bec5cf6fe 468
Kovalev_D 132:2c7bec5cf6fe 469 /* Copy data (already) located in RAM to flash */
Kovalev_D 134:caf4c9cd5052 470 Result[0]=u32IAP_CopyRAMToFlash(IMG_START_SECTOR, &TempA, 256);
Kovalev_D 134:caf4c9cd5052 471 WriteCon("\r\nWrite");
Kovalev_D 134:caf4c9cd5052 472 if(Result[0] != IAP_STA_CMD_SUCCESS)
Kovalev_D 134:caf4c9cd5052 473 {
Kovalev_D 134:caf4c9cd5052 474 while(1); /* No way to recover. Just let Windows report a write failure */
Kovalev_D 134:caf4c9cd5052 475 }
Kovalev_D 132:2c7bec5cf6fe 476
Kovalev_D 132:2c7bec5cf6fe 477 /* Verify the flash contents with the contents in RAM */
Kovalev_D 134:caf4c9cd5052 478 if(u32IAP_Compare(IMG_START_SECTOR, &TempA, 256, 0) == IAP_STA_CMD_SUCCESS)
Kovalev_D 134:caf4c9cd5052 479 {
Kovalev_D 134:caf4c9cd5052 480 WriteCon("\r\nCompare");
Kovalev_D 134:caf4c9cd5052 481 }
Kovalev_D 134:caf4c9cd5052 482 else{WriteCon("\r\n error Compare");}
Kovalev_D 132:2c7bec5cf6fe 483 }else{WriteCon("\r\n error prepare");}
Kovalev_D 132:2c7bec5cf6fe 484 Gyro.FlashMod = 0;
Kovalev_D 134:caf4c9cd5052 485
Kovalev_D 132:2c7bec5cf6fe 486 }
Kovalev_D 132:2c7bec5cf6fe 487
Kovalev_D 134:caf4c9cd5052 488 if(Gyro.FlashMod == 2)
Kovalev_D 132:2c7bec5cf6fe 489 {
Kovalev_D 132:2c7bec5cf6fe 490 Gyro.FlashMod = 0;
Kovalev_D 134:caf4c9cd5052 491 WriteCon("\r\Read from Flash");
Kovalev_D 134:caf4c9cd5052 492 boot_jump(addres);
Kovalev_D 132:2c7bec5cf6fe 493 }
Kovalev_D 132:2c7bec5cf6fe 494
Kovalev_D 132:2c7bec5cf6fe 495
Kovalev_D 132:2c7bec5cf6fe 496
igor_v 114:5cc38a53d8a7 497
igor_v 114:5cc38a53d8a7 498
igor_v 110:6406b7ac0442 499 }//while
Kovalev_D 132:2c7bec5cf6fe 500 }//main
igor_v 0:8ad47e2b6f00 501
igor_v 0:8ad47e2b6f00 502 /******************************************************************************
igor_v 0:8ad47e2b6f00 503 ** End Of File
igor_v 0:8ad47e2b6f00 504 ******************************************************************************/
igor_v 0:8ad47e2b6f00 505
igor_v 0:8ad47e2b6f00 506