123

Dependencies:   mbed

Fork of LG by igor Apu

Committer:
Kovalev_D
Date:
Thu Mar 17 10:51:11 2016 +0000
Revision:
83:3b2399101978
Parent:
75:cc1942179a2f
,

Who changed what in which revision?

UserRevisionLine numberNew contents of line
igor_v 7: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 28:17c84ed091b3 15 последнии изменения
igor_v 28:17c84ed091b3 16 //2016_02_03_17_47
igor_v 29: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;
igor_v 51:81f47b817071 35
igor_v 52:30f2e52a493f 36 int main (void)
igor_v 52:30f2e52a493f 37 {
igor_v 52:30f2e52a493f 38 Gyro.SOC_Out=0xDD;
igor_v 52:30f2e52a493f 39 Gyro.Firmware_Version =0x15; //версия программы
igor_v 52:30f2e52a493f 40 Gyro.GLD_Serial = 0x20; //серийный номер
igor_v 52:30f2e52a493f 41 Gyro.My_Addres = 0; //адрес глд
igor_v 52:30f2e52a493f 42 Gyro.Discharg = StartDischarg;
igor_v 52:30f2e52a493f 43 Gyro.BackLight = StartBackLight;
igor_v 52:30f2e52a493f 44
igor_v 52:30f2e52a493f 45 Spi.DAC_A = 0x7fff;
igor_v 52:30f2e52a493f 46 Spi.DAC_B = 0x7fff;
igor_v 0:8ad47e2b6f00 47
igor_v 51:81f47b817071 48
igor_v 48:8697dfe679b9 49
igor_v 52:30f2e52a493f 50 K_DAC=65535.0/(65535.0+(deltaDAC+deltaDAC/2));
igor_v 52:30f2e52a493f 51 K_DAC=0.8;
igor_v 52:30f2e52a493f 52 secPuls =0;
igor_v 52:30f2e52a493f 53 Pulse_midl = 0;
igor_v 52:30f2e52a493f 54 PulseHalf = 0;
igor_v 52:30f2e52a493f 55 CuruAngle = 0;
igor_v 52:30f2e52a493f 56
igor_v 52:30f2e52a493f 57
igor_v 52:30f2e52a493f 58 Event1Hz = 0;
igor_v 52:30f2e52a493f 59 Event1K = 0;
igor_v 52:30f2e52a493f 60 Event100K = 0;
igor_v 52:30f2e52a493f 61 EventVibro = 0;
igor_v 52:30f2e52a493f 62 Time1K = 0;
igor_v 52:30f2e52a493f 63 Time100K = 0;
igor_v 52:30f2e52a493f 64 Time1Hz = 0;
igor_v 48:8697dfe679b9 65
igor_v 52:30f2e52a493f 66 Pulse_8Point = 0;
igor_v 52:30f2e52a493f 67 Pulse_16Point = 0;
igor_v 52:30f2e52a493f 68 Pulse_32Point = 0;
igor_v 48:8697dfe679b9 69
igor_v 52:30f2e52a493f 70 Temp_AMP=0;
igor_v 52:30f2e52a493f 71 Temp_ADC_2=0;
igor_v 52:30f2e52a493f 72 Temp_ADC_3=0;
igor_v 52:30f2e52a493f 73 Temp_ADC_4=0;
igor_v 52:30f2e52a493f 74 Temp_ADC_5=0;
igor_v 3:ed8744c5f67a 75
igor_v 48:8697dfe679b9 76
igor_v 48:8697dfe679b9 77
igor_v 0:8ad47e2b6f00 78
igor_v 37:bdd52117b56e 79
igor_v 21:bc8c1cec3da6 80 //инициализация
Diletant 46:2670fa0fcebc 81 SystemInit1(); // Инициализация контроллера: установка тактовых частот
igor_v 48:8697dfe679b9 82 Init_Pin();
igor_v 11:af609f6dee46 83
igor_v 28:17c84ed091b3 84 ///*
igor_v 12:74bd0ecf7f83 85
igor_v 28:17c84ed091b3 86
Kovalev_D 47:d902ef6f7564 87
Kovalev_D 47:d902ef6f7564 88
igor_v 48:8697dfe679b9 89
igor_v 48:8697dfe679b9 90
igor_v 48:8697dfe679b9 91
Kovalev_D 47:d902ef6f7564 92
igor_v 48:8697dfe679b9 93
igor_v 48:8697dfe679b9 94
igor_v 48:8697dfe679b9 95
igor_v 48:8697dfe679b9 96
Kovalev_D 50:0e3d47f18a50 97 //DMA_Init(); // Инициализация DMA не используем
Diletant 46:2670fa0fcebc 98 FlashDMA_Init(); // Загрузка параметров с флэш
igor_v 28:17c84ed091b3 99
Diletant 46:2670fa0fcebc 100 SystemCoreClockUpdate1(); // расчет тактовой частоты процессора перед инициализацией UART - 100MHz
igor_v 51:81f47b817071 101
Diletant 46:2670fa0fcebc 102 UARTInit(); // инициализация UART0 на скорость 38400.
igor_v 37:bdd52117b56e 103 UART1_Init(); // инициализация UART1 на скорость 38400.
igor_v 28:17c84ed091b3 104
igor_v 28:17c84ed091b3 105
igor_v 28:17c84ed091b3 106 DAC_ADC_Exchange_Init(); // инициализация обмена АЦП и ЦАП.
igor_v 28:17c84ed091b3 107 DACInit(); // инициализация ЦАП.
Diletant 46:2670fa0fcebc 108 SOI_Init(); // Инициализация квадратурного энкодера.
igor_v 28:17c84ed091b3 109
Diletant 46:2670fa0fcebc 110 IntLatch_Init(); // инициализация внутренней защелки.
Diletant 46:2670fa0fcebc 111 ExtLatch_Init(); // инициализация внешней защелки.
igor_v 0:8ad47e2b6f00 112
igor_v 48:8697dfe679b9 113
igor_v 3:ed8744c5f67a 114
igor_v 3:ed8744c5f67a 115
igor_v 13:e2a1d18677b8 116
igor_v 21:bc8c1cec3da6 117 LoadFlashParam(FromFLASH); //загрузка параметров.
Kovalev_D 50:0e3d47f18a50 118 //UART_DMA_Init(); //инициализация DMA для UART.//не используем
igor_v 21:bc8c1cec3da6 119 G_Photo_Init(); //инициализация интерфейса I2C для фотодетектора.
igor_v 21:bc8c1cec3da6 120 Out_G_photo(60, 60); //запись в буфер мастера принятые от функции данные (60,60) и установка флага старта передачи и занятой шины.
igor_v 0:8ad47e2b6f00 121 // WDTInit();
igor_v 0:8ad47e2b6f00 122
igor_v 0:8ad47e2b6f00 123
Kovalev_D 83:3b2399101978 124 //open_all_loops(); //#define open_all_loops() RgConA = 0 (Основной регистр управления устройства (0 - включить, 1 - отключить)).
igor_v 28:17c84ed091b3 125 Output.Str.HF_reg = Device_blk.Str.HF_min; //HFO output voltage = максивальное напряжение на ГВЧ.
Kovalev_D 83:3b2399101978 126
Kovalev_D 83:3b2399101978 127
igor_v 51:81f47b817071 128
igor_v 51:81f47b817071 129
igor_v 28:17c84ed091b3 130 RgConB = RATE_VIBRO_1; // дополнительный регистр управления = разность вибросчетчиков после фильтра скольз.среднего(#define RATE_VIBRO_1 0x0001)
igor_v 21:bc8c1cec3da6 131
igor_v 5:02e9f559395c 132 init_Vibro();
Diletant 49:53277d871197 133 init_timer(TIME_INTERVAL ); //Timer 1: CCLK / 7812 = 12800.819Hz; Vibro: Timer1/32 = 400.025Hz; 10ms???
igor_v 5:02e9f559395c 134 enable_timer1();
Diletant 49:53277d871197 135 Init_TIM2(); //Timer 2: CCLK / 4 / 250 = 100kHz
igor_v 5:02e9f559395c 136 enable_timer2();
Kovalev_D 83:3b2399101978 137 // close_all_loops();
igor_v 0:8ad47e2b6f00 138
igor_v 52:30f2e52a493f 139 LPC_GPIO0->FIOCLR = (1<<5);
igor_v 13:e2a1d18677b8 140
igor_v 52:30f2e52a493f 141
igor_v 52:30f2e52a493f 142
Kovalev_D 83:3b2399101978 143 /*
Kovalev_D 83:3b2399101978 144 init_PLC(); //Инициализация СРП(регулировка периметра)
Kovalev_D 83:3b2399101978 145 init_Dither_reg(); //инициализация вибропривода
Kovalev_D 83:3b2399101978 146 */
Kovalev_D 83:3b2399101978 147
igor_v 5:02e9f559395c 148
igor_v 3:ed8744c5f67a 149
igor_v 52:30f2e52a493f 150
Kovalev_D 40:8a6494f61326 151
igor_v 0:8ad47e2b6f00 152
igor_v 0:8ad47e2b6f00 153
igor_v 51:81f47b817071 154
igor_v 51:81f47b817071 155 for (int i = 0; i < 16; i++ ) {
igor_v 51:81f47b817071 156 Buff_ADC_1[i] = 0; // ампл ацп.
igor_v 51:81f47b817071 157 Buff_ADC_2[i] = 0;
igor_v 51:81f47b817071 158 Buff_ADC_3[i] = 0;
igor_v 51:81f47b817071 159 Buff_ADC_4[i] = 0;
igor_v 51:81f47b817071 160 Buff_ADC_5[i] = 0;
igor_v 3:ed8744c5f67a 161 }
igor_v 52:30f2e52a493f 162 for (int i = 0; i < 32; i++ ) {
igor_v 51:81f47b817071 163
igor_v 51:81f47b817071 164 Buff_16Point[i] = 0x00;
igor_v 51:81f47b817071 165 Buff_8Point[i] = 0x00;
igor_v 51:81f47b817071 166 Buff_32Point[i] = 0x00;
igor_v 51:81f47b817071 167 Buff_16PointD[i] = 0x00;
igor_v 51:81f47b817071 168 }
igor_v 51:81f47b817071 169
igor_v 51:81f47b817071 170
igor_v 51:81f47b817071 171
igor_v 51:81f47b817071 172
igor_v 51:81f47b817071 173
Kovalev_D 47:d902ef6f7564 174 WriteCon1("\n\r ...GL start programm uart ACK.... ");
Kovalev_D 47:d902ef6f7564 175 WriteCon("\n\r ...GL start programm uart Tech.... ");
igor_v 15:f5191a1c3805 176 sprintf(Time,"\r\nCompiled: %s %s.",__DATE__, __TIME__ ); //Подготовка даты и времени компиляции
igor_v 13:e2a1d18677b8 177 WriteCon(Time);
igor_v 11:af609f6dee46 178
igor_v 37:bdd52117b56e 179
igor_v 11:af609f6dee46 180
Kovalev_D 50:0e3d47f18a50 181 while ( 1 ) { //основной цикл.
Kovalev_D 47:d902ef6f7564 182 Concol (); // Проврка 0 консоли (вход и выход)
Kovalev_D 47:d902ef6f7564 183 Concol1 (); // Проврка 0 консоли (вход и выход)
igor_v 3:ed8744c5f67a 184 if (OutBufConCount) OutBufConCount--;
igor_v 48:8697dfe679b9 185
igor_v 52:30f2e52a493f 186 if (ReadCon (Time)) {
igor_v 48:8697dfe679b9 187
igor_v 16:18e3fd7b92d0 188 if (Time[0] == 'h') { // если ввели буквц h то выдать подсказку. сделанно через принф ОЧЕНЬ плохо в работе не использовать
igor_v 15:f5191a1c3805 189 sprintf(Time,"\r\nCompiled: %s %s.",__DATE__, __TIME__ ); //Подготовка даты и времени компиляции
igor_v 15:f5191a1c3805 190 WriteCon(Time);
igor_v 52:30f2e52a493f 191 sprintf(Time,"--%d.%3.d.%2.d.",Time1Hz,Time1K,Time100K); //Временно выдачпа временни из трех чисел
igor_v 15:f5191a1c3805 192 WriteCon(Time);
igor_v 52:30f2e52a493f 193
igor_v 52:30f2e52a493f 194 }
igor_v 52:30f2e52a493f 195 if (Time[0] == 'D') {
igor_v 52:30f2e52a493f 196 Gyro.Discharg = StartDischarg;
igor_v 15:f5191a1c3805 197 }
igor_v 52:30f2e52a493f 198 if (Time[0] == 'L') {
igor_v 52:30f2e52a493f 199 Gyro.BackLight = StartBackLight;
igor_v 52:30f2e52a493f 200 }
igor_v 52:30f2e52a493f 201 if (Time[0] == '1') { // выдача технологическая
igor_v 52:30f2e52a493f 202 sprintf(Time,"\r\n");
igor_v 52:30f2e52a493f 203 for (int i = 0; i < 32; i++ )sprintf((Time + i * 9)," <%05d> ",Buff_32Point[i]);
igor_v 52:30f2e52a493f 204 WriteCon(Time);
igor_v 52:30f2e52a493f 205 }
igor_v 15:f5191a1c3805 206 }
igor_v 38:716472a4492e 207 if (OutBufCon1Count) OutBufCon1Count--;
igor_v 15:f5191a1c3805 208 if (Event1Hz) {// событие раз в 1 Гц
igor_v 52:30f2e52a493f 209 Event1Hz--;
Kovalev_D 40:8a6494f61326 210 //============================= блок управления поджигом, сделанно через сдвиг======================
Kovalev_D 40:8a6494f61326 211 if (Gyro.Discharg) { //Проверка поджига
Kovalev_D 50:0e3d47f18a50 212 Gyro.Discharg = Gyro.Discharg >> 1;
Kovalev_D 40:8a6494f61326 213 if (Gyro.Discharg & 0x01) Gyro.PinReg |= PinRegBitD;
Kovalev_D 40:8a6494f61326 214 else Gyro.PinReg &= ~PinRegBitD;
igor_v 52:30f2e52a493f 215
igor_v 16:18e3fd7b92d0 216 }
Kovalev_D 40:8a6494f61326 217 //============================= блок управления подсветкой, сделанно через сдвиг======================
Kovalev_D 40:8a6494f61326 218 if (Gyro.BackLight) { //Проверка подсветки
igor_v 52:30f2e52a493f 219 Gyro.BackLight = Gyro.BackLight >> 1;
Kovalev_D 40:8a6494f61326 220 if (Gyro.BackLight & 0x01) Gyro.PinReg |= PinRegBitL;
Kovalev_D 40:8a6494f61326 221 else Gyro.PinReg &= ~PinRegBitL;
igor_v 52:30f2e52a493f 222
Kovalev_D 40:8a6494f61326 223 }
igor_v 52:30f2e52a493f 224 // CMD_Rate();
igor_v 52:30f2e52a493f 225 // WriteCon("."); //Так просто выдавать в секунду 1 байт ,что гирос жив
igor_v 52:30f2e52a493f 226
igor_v 52:30f2e52a493f 227
igor_v 52:30f2e52a493f 228
igor_v 52:30f2e52a493f 229
igor_v 15:f5191a1c3805 230 }
igor_v 15:f5191a1c3805 231 if (Event1K) {// событие раз в 1 кГц
igor_v 15:f5191a1c3805 232 Event1K --;
igor_v 15:f5191a1c3805 233 Time1K++;
igor_v 15:f5191a1c3805 234 if (Time1K == 1000) {
igor_v 15:f5191a1c3805 235 Time1K = 0;
igor_v 15:f5191a1c3805 236 Event1Hz ++;
igor_v 52:30f2e52a493f 237 Time1Hz++;
igor_v 16:18e3fd7b92d0 238
igor_v 15:f5191a1c3805 239 }
Kovalev_D 40:8a6494f61326 240
igor_v 15:f5191a1c3805 241 }
igor_v 42:6fc307c4963e 242 if (Event100K) { // событие раз в 100 кГц
igor_v 15:f5191a1c3805 243 Event100K --;
igor_v 15:f5191a1c3805 244 Time100K++;
igor_v 52:30f2e52a493f 245
igor_v 42:6fc307c4963e 246 PinCheng(); // чтение регистра состояния выводов(вибро, полсветка, поджиг, LED) и управление выводами.
igor_v 52:30f2e52a493f 247 if (OutBufCon1Count) OutBufCon1Count--; // обратный отсчет для управления ногой и формирование задержки на выдачу
igor_v 52:30f2e52a493f 248 if (Time100K == 100) {
igor_v 15:f5191a1c3805 249 Time100K = 0;
igor_v 15:f5191a1c3805 250 Event1K ++;
igor_v 15:f5191a1c3805 251 }
igor_v 15:f5191a1c3805 252 }
igor_v 15:f5191a1c3805 253 if (EventVibro) {// событие от вибр
igor_v 15:f5191a1c3805 254 EventVibro --;
igor_v 15:f5191a1c3805 255 }
Kovalev_D 40:8a6494f61326 256 Read_CMD();
igor_v 37:bdd52117b56e 257
igor_v 37:bdd52117b56e 258
igor_v 37:bdd52117b56e 259
igor_v 53:7d25cd871094 260 //VibroOut();
igor_v 53:7d25cd871094 261 //CMD_Rate();
igor_v 37:bdd52117b56e 262
igor_v 52:30f2e52a493f 263
igor_v 3:ed8744c5f67a 264 ButtonLightUP();
igor_v 3:ed8744c5f67a 265 //Device_blk.Str.
igor_v 52:30f2e52a493f 266 // TakeFromBuff();
igor_v 52:30f2e52a493f 267 // paramV=TakeParam(1);
igor_v 53:7d25cd871094 268
igor_v 52:30f2e52a493f 269 }// main infinie loop
igor_v 0:8ad47e2b6f00 270 }
igor_v 0:8ad47e2b6f00 271
igor_v 0:8ad47e2b6f00 272 /******************************************************************************
igor_v 0:8ad47e2b6f00 273 ** End Of File
igor_v 0:8ad47e2b6f00 274 ******************************************************************************/
igor_v 0:8ad47e2b6f00 275
igor_v 0:8ad47e2b6f00 276