Dmitry Kovalev
/
LGstaandart
forkd
Fork of LG2 by
main.c
- Committer:
- igor_v
- Date:
- 2016-02-11
- Revision:
- 52:30f2e52a493f
- Parent:
- 51:81f47b817071
- Child:
- 53:7d25cd871094
File content as of revision 52:30f2e52a493f:
//ssdfwewedfsfds /****************************************Copyright (c)**************************************************** **--------------File Info--------------------------------------------------------------------------------- ** File name: main.c ** Last modified Date: 2011-10-24 ** Last Version: V1.00 ** Descriptions: The main() function ** **-------------------------------------------------------------------------------------------------------- ** Created by: Electrooptica Incorp. ** Created date: 2011-08-22 ** Version: V1.00 ** Descriptions: **-------------------------------------------------------------------------------------------------------- последнии изменения //2016_02_03_17_47 //2016_02_06 igor //2016_06 Dima //2016_02_06 21:20 Kovalev_D *********************************************************************************************************/ #include "Global.h" //#include <math.h> /****************************************************************************** ** Main Function main() ******************************************************************************/ extern uint32_t CMD_Mode; unsigned int secPuls; float DACF, K_DAC; int main (void) { Gyro.SOC_Out=0xDD; Gyro.Firmware_Version =0x15; //версия программы Gyro.GLD_Serial = 0x20; //серийный номер Gyro.My_Addres = 0; //адрес глд Gyro.Discharg = StartDischarg; Gyro.BackLight = StartBackLight; Spi.DAC_A = 0x7fff; Spi.DAC_B = 0x7fff; K_DAC=65535.0/(65535.0+(deltaDAC+deltaDAC/2)); K_DAC=0.8; secPuls =0; Pulse_midl = 0; PulseHalf = 0; CuruAngle = 0; Event1Hz = 0; Event1K = 0; Event100K = 0; EventVibro = 0; Time1K = 0; Time100K = 0; Time1Hz = 0; Pulse_8Point = 0; Pulse_16Point = 0; Pulse_32Point = 0; Temp_AMP=0; Temp_ADC_2=0; Temp_ADC_3=0; Temp_ADC_4=0; Temp_ADC_5=0; //инициализация SystemInit1(); // Инициализация контроллера: установка тактовых частот Init_Pin(); ///* //DMA_Init(); // Инициализация DMA не используем FlashDMA_Init(); // Загрузка параметров с флэш SystemCoreClockUpdate1(); // расчет тактовой частоты процессора перед инициализацией UART - 100MHz UARTInit(); // инициализация UART0 на скорость 38400. UART1_Init(); // инициализация UART1 на скорость 38400. DAC_ADC_Exchange_Init(); // инициализация обмена АЦП и ЦАП. DACInit(); // инициализация ЦАП. SOI_Init(); // Инициализация квадратурного энкодера. IntLatch_Init(); // инициализация внутренней защелки. ExtLatch_Init(); // инициализация внешней защелки. LoadFlashParam(FromFLASH); //загрузка параметров. //UART_DMA_Init(); //инициализация DMA для UART.//не используем G_Photo_Init(); //инициализация интерфейса I2C для фотодетектора. Out_G_photo(60, 60); //запись в буфер мастера принятые от функции данные (60,60) и установка флага старта передачи и занятой шины. // WDTInit(); open_all_loops(); //#define open_all_loops() RgConA = 0 (Основной регистр управления устройства (0 - включить, 1 - отключить)). Output.Str.HF_reg = Device_blk.Str.HF_min; //HFO output voltage = максивальное напряжение на ГВЧ. init_PLC(); //Инициализация СРП(регулировка периметра) init_Dither_reg(); //инициализация вибропривода RgConB = RATE_VIBRO_1; // дополнительный регистр управления = разность вибросчетчиков после фильтра скольз.среднего(#define RATE_VIBRO_1 0x0001) init_Vibro(); init_timer(TIME_INTERVAL ); //Timer 1: CCLK / 7812 = 12800.819Hz; Vibro: Timer1/32 = 400.025Hz; 10ms??? enable_timer1(); Init_TIM2(); //Timer 2: CCLK / 4 / 250 = 100kHz enable_timer2(); close_all_loops(); LPC_GPIO0->FIOCLR = (1<<5); for (int i = 0; i < 16; i++ ) { Buff_ADC_1[i] = 0; // ампл ацп. Buff_ADC_2[i] = 0; Buff_ADC_3[i] = 0; Buff_ADC_4[i] = 0; Buff_ADC_5[i] = 0; } for (int i = 0; i < 32; i++ ) { Buff_16Point[i] = 0x00; Buff_8Point[i] = 0x00; Buff_32Point[i] = 0x00; Buff_16PointD[i] = 0x00; } WriteCon1("\n\r ...GL start programm uart ACK.... "); WriteCon("\n\r ...GL start programm uart Tech.... "); sprintf(Time,"\r\nCompiled: %s %s.",__DATE__, __TIME__ ); //Подготовка даты и времени компиляции WriteCon(Time); while ( 1 ) { //основной цикл. Concol (); // Проврка 0 консоли (вход и выход) Concol1 (); // Проврка 0 консоли (вход и выход) if (OutBufConCount) OutBufConCount--; if (ReadCon (Time)) { if (Time[0] == 'h') { // если ввели буквц h то выдать подсказку. сделанно через принф ОЧЕНЬ плохо в работе не использовать sprintf(Time,"\r\nCompiled: %s %s.",__DATE__, __TIME__ ); //Подготовка даты и времени компиляции WriteCon(Time); sprintf(Time,"--%d.%3.d.%2.d.",Time1Hz,Time1K,Time100K); //Временно выдачпа временни из трех чисел WriteCon(Time); } if (Time[0] == 'D') { Gyro.Discharg = StartDischarg; } if (Time[0] == 'L') { Gyro.BackLight = StartBackLight; } if (Time[0] == '1') { // выдача технологическая sprintf(Time,"\r\n"); for (int i = 0; i < 32; i++ )sprintf((Time + i * 9)," <%05d> ",Buff_32Point[i]); WriteCon(Time); } } if (OutBufCon1Count) OutBufCon1Count--; if (Event1Hz) {// событие раз в 1 Гц Event1Hz--; //============================= блок управления поджигом, сделанно через сдвиг====================== if (Gyro.Discharg) { //Проверка поджига Gyro.Discharg = Gyro.Discharg >> 1; if (Gyro.Discharg & 0x01) Gyro.PinReg |= PinRegBitD; else Gyro.PinReg &= ~PinRegBitD; } //============================= блок управления подсветкой, сделанно через сдвиг====================== if (Gyro.BackLight) { //Проверка подсветки Gyro.BackLight = Gyro.BackLight >> 1; if (Gyro.BackLight & 0x01) Gyro.PinReg |= PinRegBitL; else Gyro.PinReg &= ~PinRegBitL; } // CMD_Rate(); // WriteCon("."); //Так просто выдавать в секунду 1 байт ,что гирос жив } if (Event1K) {// событие раз в 1 кГц Event1K --; Time1K++; if (Time1K == 1000) { Time1K = 0; Event1Hz ++; Time1Hz++; } } if (Event100K) { // событие раз в 100 кГц Event100K --; Time100K++; PinCheng(); // чтение регистра состояния выводов(вибро, полсветка, поджиг, LED) и управление выводами. if (OutBufCon1Count) OutBufCon1Count--; // обратный отсчет для управления ногой и формирование задержки на выдачу if (Time100K == 100) { Time100K = 0; Event1K ++; } } if (EventVibro) {// событие от вибр EventVibro --; } Read_CMD(); // VibroOut(); //CMD_Rate(); ButtonLightUP(); //Device_blk.Str. // TakeFromBuff(); // paramV=TakeParam(1); }// main infinie loop } /****************************************************************************** ** End Of File ******************************************************************************/