fork

Dependencies:   mbed

Fork of LG by igor Apu

Committer:
Kovalev_D
Date:
Thu Feb 11 14:36:33 2016 +0000
Revision:
50:0e3d47f18a50
Parent:
49:53277d871197
Child:
51:81f47b817071
???????????? ?????? ? ????????

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