forkd

Dependencies:   mbed

Fork of LG2 by Dmitry Kovalev

Committer:
Kovalev_D
Date:
Wed Feb 10 14:06:57 2016 +0000
Revision:
47:d902ef6f7564
Parent:
46:2670fa0fcebc
Child:
48:8697dfe679b9
??????? ???? ?????????? ????

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 0:8ad47e2b6f00 43 void Led_init()
igor_v 0:8ad47e2b6f00 44 {
igor_v 3:ed8744c5f67a 45 LPC_PINCON->PINSEL0 = (0x00<<28);
igor_v 3:ed8744c5f67a 46 LPC_GPIO1->FIODIR = (0x1<<30);
igor_v 3:ed8744c5f67a 47 LPC_PINCON->PINMODE0 = (0x3<<28);
igor_v 3:ed8744c5f67a 48 // LPC_GPIO1->FIOSET = (0x0<<30);
igor_v 3:ed8744c5f67a 49 // LPC_GPIO0->FIOSET = (1<<4);
igor_v 0:8ad47e2b6f00 50 }
igor_v 3:ed8744c5f67a 51
igor_v 0:8ad47e2b6f00 52 int flag=0, TIME=0,t=0, Sec=0,tmpSec=0,SEC=0, mSec=0;
igor_v 0:8ad47e2b6f00 53 int tempsec=0;
igor_v 0:8ad47e2b6f00 54 float DACF, K_DAC;
igor_v 3:ed8744c5f67a 55
igor_v 0:8ad47e2b6f00 56 void Led_Blink()
igor_v 0:8ad47e2b6f00 57 {
igor_v 3:ed8744c5f67a 58 if (flag == 0) {
igor_v 3:ed8744c5f67a 59 LPC_GPIO1->FIOSET = (0x1<<30);
igor_v 3:ed8744c5f67a 60 flag=1;
igor_v 3:ed8744c5f67a 61 } else {
igor_v 3:ed8744c5f67a 62 flag =0;
igor_v 3:ed8744c5f67a 63 LPC_GPIO1->FIOCLR = (0x01<<30);
igor_v 3:ed8744c5f67a 64 }
igor_v 0:8ad47e2b6f00 65 }
igor_v 0:8ad47e2b6f00 66
igor_v 37:bdd52117b56e 67
igor_v 0:8ad47e2b6f00 68 int main (void)
igor_v 0:8ad47e2b6f00 69 {
Kovalev_D 45:cbc955aecebe 70 Gyro.SOC_Out=0xDD;
Kovalev_D 40:8a6494f61326 71 Gyro.Firmware_Version =0x15; //версия программы
Kovalev_D 40:8a6494f61326 72 Gyro.GLD_Serial = 0x20; //серийный номер
Kovalev_D 40:8a6494f61326 73 Gyro.My_Addres = 0; //адрес глд
Kovalev_D 40:8a6494f61326 74
Kovalev_D 40:8a6494f61326 75
Kovalev_D 40:8a6494f61326 76
igor_v 5:02e9f559395c 77 K_DAC=65535.0/(65535.0+(deltaDAC+deltaDAC/2));
igor_v 5:02e9f559395c 78 K_DAC=0.8;
igor_v 0:8ad47e2b6f00 79
Kovalev_D 40:8a6494f61326 80
igor_v 30:17c84ed091b3 81
Kovalev_D 40:8a6494f61326 82 Gyro.Discharg = 0x7; // инициализация время поджига 3 сек (в событии 1HZ)
Kovalev_D 40:8a6494f61326 83 Gyro.BackLight=0x3ff;// инициализация время подсветки 10 сек (в событии 1HZ)
igor_v 37:bdd52117b56e 84 secPuls =0;
igor_v 37:bdd52117b56e 85 Pulse_midl = 0;
igor_v 37:bdd52117b56e 86 PulseHalf = 0;
igor_v 37:bdd52117b56e 87 CuruAngle = 0;
igor_v 37:bdd52117b56e 88 Spi.DAC_A = 0x7fff;
igor_v 37:bdd52117b56e 89 Spi.DAC_B = 0x7fff;
igor_v 21:bc8c1cec3da6 90 //инициализация
Diletant 46:2670fa0fcebc 91 SystemInit1(); // Инициализация контроллера: установка тактовых частот
igor_v 30:17c84ed091b3 92 Led_init();
igor_v 11:af609f6dee46 93
igor_v 30:17c84ed091b3 94 ///*
igor_v 30:17c84ed091b3 95 //Конфигурирование сигнала поджига
igor_v 37:bdd52117b56e 96 LPC_PINCON->PINSEL0 &= ~(3<<8); //e. P0.4 is GPIO pin (запись ( 00 ) в 9:8 бит PISEL0 выбор P0.4 как GPIO)
igor_v 37:bdd52117b56e 97 LPC_PINCON->PINMODE0 |= (3<<8); //e. P0.4 is GPIO pin (запись ( 11 ) в 9:8 бит PINMODE0 "для включения подтягивающего резистора")
igor_v 37:bdd52117b56e 98 LPC_GPIO0->FIODIR |= (1<<4); //e. P0.4 is output (запись ( 1 ) в 5 бит FIODIR выбор P0.4 как выход)
igor_v 30:17c84ed091b3 99 LightUpON //e. P0.4 is output (запись ( 1 ) в 5 бит CLR устанавливаем на P0.4 низкий уровень сигнала)
igor_v 30:17c84ed091b3 100 /*
igor_v 30:17c84ed091b3 101 LPC_PINCON->PINSEL0 &= ~(3<<10); //e. P0.4 is GPIO pin (запись ( 00 ) в 9:8 бит PISEL0 выбор P0.4 как GPIO)
igor_v 30:17c84ed091b3 102 LPC_PINCON->PINMODE0 |= (3<<10); //e. P0.4 is GPIO pin (запись ( 11 ) в 9:8 бит PINMODE0 "для включения подтягивающего резистора")
igor_v 30:17c84ed091b3 103 LPC_GPIO0->FIODIR |= (1<<5); //e. P0.4 is output (запись ( 1 ) в 5 бит FIODIR выбор P0.4 как выход)
igor_v 30:17c84ed091b3 104 LPC_GPIO0->FIOCLR |= (1<<5); //e. P0.4 is output (запись ( 1 ) в 5 бит CLR устанавливаем на P0.4 низкий уровень сигнала)*/
igor_v 12:74bd0ecf7f83 105
igor_v 3:ed8744c5f67a 106 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
igor_v 0:8ad47e2b6f00 107 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
igor_v 3:ed8744c5f67a 108
igor_v 30:17c84ed091b3 109
igor_v 30:17c84ed091b3 110 LPC_PINCON->PINSEL3 = (0x00<<18); //e. P1.25 is GPIO pin
igor_v 30:17c84ed091b3 111 LPC_PINCON->PINMODE3 |= (3<<18); //e. P1.25 (включениe подтягивающего резистора")
igor_v 30:17c84ed091b3 112 LPC_GPIO1->FIODIR |= (1<<25); //e. P0.5 is output (запись ( 1 ) в 5 бит FIODIR выбор P0.5 как выход)
igor_v 30:17c84ed091b3 113 LPC_GPIO1->FIOCLR |= (1<<25);
igor_v 30:17c84ed091b3 114
igor_v 30:17c84ed091b3 115
igor_v 0:8ad47e2b6f00 116 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
igor_v 30:17c84ed091b3 117
igor_v 30:17c84ed091b3 118 LPC_PINCON->PINSEL3 = (0x00<<24); //e. P1.28 is GPIO pin
igor_v 30:17c84ed091b3 119 LPC_PINCON->PINMODE3 |= (3<<24); //e. P1.28 is GPIO pin (запись ( 11 ) в бит PINMODE0 "для включения подтягивающего резистора")
igor_v 30:17c84ed091b3 120 LPC_GPIO1->FIODIR |= (1<<28); //e. P1.28 is output (запись ( 1 ) в 5 бит FIODIR выбор P0.5 как выход)
igor_v 30:17c84ed091b3 121 LPC_GPIO1->FIOCLR |= (1<<28);
igor_v 30:17c84ed091b3 122 // init_timer(TIME_INTERVAL ); // 10ms
igor_v 30:17c84ed091b3 123 // enable_timer1();
igor_v 21:bc8c1cec3da6 124 ///иНИциализация подсветки
igor_v 30:17c84ed091b3 125 LPC_PINCON->PINSEL2 = (0x00<<24); //e. P2.12 is GPIO pin
igor_v 30:17c84ed091b3 126 LPC_PINCON->PINMODE3 |= (3<<24); //e. P1.28 is GPIO pin (запись ( 11 ) в бит PINMODE0 "для включения подтягивающего резистора")
igor_v 30:17c84ed091b3 127 LPC_GPIO2->FIODIR |= (1<<12); //e. P1.28 is output (запись ( 1 ) в 5 бит FIODIR выбор P0.5 как выход)
igor_v 30:17c84ed091b3 128 LPC_GPIO2->FIOCLR |= (1<<12);
igor_v 30:17c84ed091b3 129
Kovalev_D 47:d902ef6f7564 130
Kovalev_D 47:d902ef6f7564 131
Kovalev_D 47:d902ef6f7564 132 LPC_GPIO2->FIODIR |= (1<<7);
Kovalev_D 47:d902ef6f7564 133 TXOff;
Kovalev_D 47:d902ef6f7564 134
igor_v 0:8ad47e2b6f00 135 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
igor_v 30:17c84ed091b3 136 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
igor_v 30:17c84ed091b3 137 /*
igor_v 30:17c84ed091b3 138 //конфигурирование сигнала поджига оторваная нога (поджиг на 80 ноге вместо 81)
igor_v 30:17c84ed091b3 139 LPC_PINCON->PINSEL0 = (0x00<<10); //e. P0.5 is GPIO pin (запись ( 00 ) в 11:10 бит PISEL0 выбор P0.5 как GPIO)
igor_v 30:17c84ed091b3 140 LPC_PINCON->PINMODE0 |= (3<<10); //e. P0.5 is GPIO pin (запись ( 11 ) в 11:10 бит PINMODE0 "для включения подтягивающего резистора")
igor_v 30:17c84ed091b3 141 LPC_GPIO0->FIODIR |= (1<<5); //e. P0.5 is output (запись ( 1 ) в 5 бит FIODIR выбор P0.5 как выход)
igor_v 30:17c84ed091b3 142 LPC_GPIO0->FIOCLR |= (1<<5); //e. P0.5 is output (запись ( 1 ) в 5 бит CLR устанавливаем на P0.5 низкий уровень сигнала)
igor_v 30:17c84ed091b3 143 */
Diletant 46:2670fa0fcebc 144 DMA_Init(); // Инициализация DMA
Diletant 46:2670fa0fcebc 145 FlashDMA_Init(); // Загрузка параметров с флэш
igor_v 30:17c84ed091b3 146
Diletant 46:2670fa0fcebc 147 SystemCoreClockUpdate1(); // расчет тактовой частоты процессора перед инициализацией UART - 100MHz
Diletant 46:2670fa0fcebc 148 UARTInit(); // инициализация UART0 на скорость 38400.
igor_v 37:bdd52117b56e 149 UART1_Init(); // инициализация UART1 на скорость 38400.
igor_v 30:17c84ed091b3 150
igor_v 30:17c84ed091b3 151
igor_v 30:17c84ed091b3 152 DAC_ADC_Exchange_Init(); // инициализация обмена АЦП и ЦАП.
igor_v 30:17c84ed091b3 153 DACInit(); // инициализация ЦАП.
Diletant 46:2670fa0fcebc 154 SOI_Init(); // Инициализация квадратурного энкодера.
igor_v 30:17c84ed091b3 155
Diletant 46:2670fa0fcebc 156 IntLatch_Init(); // инициализация внутренней защелки.
Diletant 46:2670fa0fcebc 157 ExtLatch_Init(); // инициализация внешней защелки.
igor_v 0:8ad47e2b6f00 158
igor_v 3:ed8744c5f67a 159 //----------------debug-------------------------
igor_v 5:02e9f559395c 160 //LPC_GPIO2->FIODIR = 0x5C; // P2.0...P2.7 defined as Outputs
igor_v 5:02e9f559395c 161 //LPC_GPIO2->FIOCLR = 0x5C; // turn off all the LEDs
igor_v 3:ed8744c5f67a 162 //----------------debug-------------------------
igor_v 3:ed8744c5f67a 163
igor_v 3:ed8744c5f67a 164
igor_v 13:e2a1d18677b8 165
igor_v 21:bc8c1cec3da6 166 LoadFlashParam(FromFLASH); //загрузка параметров.
igor_v 21:bc8c1cec3da6 167 UART_DMA_Init(); //инициализация DMA для UART.
igor_v 21:bc8c1cec3da6 168 G_Photo_Init(); //инициализация интерфейса I2C для фотодетектора.
igor_v 21:bc8c1cec3da6 169 Out_G_photo(60, 60); //запись в буфер мастера принятые от функции данные (60,60) и установка флага старта передачи и занятой шины.
igor_v 0:8ad47e2b6f00 170 // WDTInit();
igor_v 0:8ad47e2b6f00 171
igor_v 0:8ad47e2b6f00 172
igor_v 30:17c84ed091b3 173 open_all_loops(); //#define open_all_loops() RgConA = 0 (Основной регистр управления устройства (0 - включить, 1 - отключить)).
igor_v 30:17c84ed091b3 174 Output.Str.HF_reg = Device_blk.Str.HF_min; //HFO output voltage = максивальное напряжение на ГВЧ.
igor_v 30:17c84ed091b3 175 init_PLC(); //Инициализация СРП(регулировка периметра)
igor_v 30:17c84ed091b3 176 init_Dither_reg(); //инициализация вибропривода
igor_v 30:17c84ed091b3 177 RgConB = RATE_VIBRO_1; // дополнительный регистр управления = разность вибросчетчиков после фильтра скольз.среднего(#define RATE_VIBRO_1 0x0001)
igor_v 21:bc8c1cec3da6 178
igor_v 5:02e9f559395c 179 init_Vibro();
Diletant 46:2670fa0fcebc 180 init_timer(TIME_INTERVAL ); //Timer 1: 7812 - 10ms
igor_v 5:02e9f559395c 181 enable_timer1();
Diletant 46:2670fa0fcebc 182 Init_TIM2(); //Timer 2: 250
igor_v 5:02e9f559395c 183 enable_timer2();
igor_v 5:02e9f559395c 184 close_all_loops();
igor_v 0:8ad47e2b6f00 185
igor_v 13:e2a1d18677b8 186
igor_v 5:02e9f559395c 187 LPC_GPIO0->FIOCLR = (1<<5);
igor_v 5:02e9f559395c 188
igor_v 3:ed8744c5f67a 189
igor_v 15:f5191a1c3805 190 Event1Hz = 0;
igor_v 15:f5191a1c3805 191 Event1K = 0;
igor_v 15:f5191a1c3805 192 Event100K = 0;
igor_v 15:f5191a1c3805 193 EventVibro = 0;
igor_v 15:f5191a1c3805 194 Time1K = 0;
igor_v 15:f5191a1c3805 195 Time100K = 0;
igor_v 15:f5191a1c3805 196 Time1Hz = 0;
igor_v 15:f5191a1c3805 197 Clock1Hz = 0;
Kovalev_D 40:8a6494f61326 198 Gyro.Discharg = StartDischarg;
Kovalev_D 40:8a6494f61326 199
igor_v 3:ed8744c5f67a 200 Pulse_8Point = 0;
igor_v 3:ed8744c5f67a 201 Pulse_16Point = 0;
igor_v 3:ed8744c5f67a 202 Pulse_32Point = 0;
igor_v 0:8ad47e2b6f00 203
igor_v 3:ed8744c5f67a 204 Temp_AMP=0;
igor_v 3:ed8744c5f67a 205 Temp_ADC_2=0;
igor_v 3:ed8744c5f67a 206 Temp_ADC_3=0;
igor_v 3:ed8744c5f67a 207 Temp_ADC_4=0;
igor_v 3:ed8744c5f67a 208 Temp_ADC_5=0;
igor_v 0:8ad47e2b6f00 209
igor_v 3:ed8744c5f67a 210 for (y = 0; y < 256; y++ ) {
igor_v 5:02e9f559395c 211 Buff_16Point[y] = 0xffff;
igor_v 5:02e9f559395c 212 Buff_8Point[y] = 0xffff;
igor_v 5:02e9f559395c 213 Buff_32Point[y] = 0xffff;
igor_v 21:bc8c1cec3da6 214 Buff_ADC_1[y] = 0; // ампл ацп.
igor_v 5:02e9f559395c 215 Buff_ADC_2[y] = 0;
igor_v 5:02e9f559395c 216 Buff_ADC_3[y] = 0;
igor_v 5:02e9f559395c 217 Buff_ADC_4[y] = 0;
igor_v 5:02e9f559395c 218 Buff_ADC_5[y] = 0;
igor_v 3:ed8744c5f67a 219 }
Kovalev_D 47:d902ef6f7564 220 WriteCon1("\n\r ...GL start programm uart ACK.... ");
Kovalev_D 47:d902ef6f7564 221 WriteCon("\n\r ...GL start programm uart Tech.... ");
igor_v 15:f5191a1c3805 222 sprintf(Time,"\r\nCompiled: %s %s.",__DATE__, __TIME__ ); //Подготовка даты и времени компиляции
igor_v 13:e2a1d18677b8 223 WriteCon(Time);
igor_v 11:af609f6dee46 224
igor_v 37:bdd52117b56e 225
igor_v 11:af609f6dee46 226
igor_v 21:bc8c1cec3da6 227 do { //основной цикл.
Kovalev_D 47:d902ef6f7564 228 Concol (); // Проврка 0 консоли (вход и выход)
Kovalev_D 47:d902ef6f7564 229 Concol1 (); // Проврка 0 консоли (вход и выход)
igor_v 3:ed8744c5f67a 230 if (OutBufConCount) OutBufConCount--;
igor_v 15:f5191a1c3805 231 if (ReadCon (Time)) {
igor_v 16:18e3fd7b92d0 232 if (Time[0] == 'h') { // если ввели буквц h то выдать подсказку. сделанно через принф ОЧЕНЬ плохо в работе не использовать
igor_v 15:f5191a1c3805 233 sprintf(Time,"\r\nCompiled: %s %s.",__DATE__, __TIME__ ); //Подготовка даты и времени компиляции
igor_v 15:f5191a1c3805 234 WriteCon(Time);
igor_v 15:f5191a1c3805 235 sprintf(Time,"--%d.%3.d.%2.d.",Clock1Hz,Time1K,Time100K); //Временно выдачпа временни из трех чисел
igor_v 15:f5191a1c3805 236 WriteCon(Time);
Kovalev_D 47:d902ef6f7564 237
igor_v 15:f5191a1c3805 238 }
Kovalev_D 47:d902ef6f7564 239
Kovalev_D 47:d902ef6f7564 240 if (Time[0] == 'L'){Gyro.PinReg |= PinRegBitTXE; WriteCon("\n\r On");}
Kovalev_D 47:d902ef6f7564 241 if (Time[0] == 'l'){Gyro.PinReg &= ~PinRegBitTXE; WriteCon("\n\r Off");}
Kovalev_D 47:d902ef6f7564 242
igor_v 15:f5191a1c3805 243 }
Kovalev_D 47:d902ef6f7564 244
igor_v 38:716472a4492e 245 if (OutBufCon1Count) OutBufCon1Count--;
igor_v 15:f5191a1c3805 246 if (Event1Hz) {// событие раз в 1 Гц
Kovalev_D 47:d902ef6f7564 247
igor_v 15:f5191a1c3805 248 Clock1Hz++;
igor_v 16:18e3fd7b92d0 249
Kovalev_D 40:8a6494f61326 250 //============================= блок управления поджигом, сделанно через сдвиг======================
Kovalev_D 40:8a6494f61326 251 if (Gyro.Discharg) { //Проверка поджига
Kovalev_D 40:8a6494f61326 252 if (Gyro.Discharg & 0x01) Gyro.PinReg |= PinRegBitD;
Kovalev_D 40:8a6494f61326 253 else Gyro.PinReg &= ~PinRegBitD;
igor_v 33:341521841d3a 254 Gyro.Discharg = Gyro.Discharg >> 1;
igor_v 16:18e3fd7b92d0 255 }
Kovalev_D 40:8a6494f61326 256 //============================= блок управления подсветкой, сделанно через сдвиг======================
Kovalev_D 40:8a6494f61326 257 if (Gyro.BackLight) { //Проверка подсветки
Kovalev_D 40:8a6494f61326 258 if (Gyro.BackLight & 0x01) Gyro.PinReg |= PinRegBitL;
Kovalev_D 40:8a6494f61326 259 else Gyro.PinReg &= ~PinRegBitL;
Kovalev_D 40:8a6494f61326 260 Gyro.BackLight = Gyro.BackLight >> 1;
Kovalev_D 47:d902ef6f7564 261
Kovalev_D 47:d902ef6f7564 262
Kovalev_D 47:d902ef6f7564 263
Kovalev_D 47:d902ef6f7564 264
Kovalev_D 47:d902ef6f7564 265
Kovalev_D 40:8a6494f61326 266 }
Kovalev_D 40:8a6494f61326 267
Kovalev_D 47:d902ef6f7564 268 // CMD_Rate();
Kovalev_D 40:8a6494f61326 269 WriteCon("."); //Так просто выдавать в секунду 1 байт ,что гирос жив
Kovalev_D 47:d902ef6f7564 270 /*
Kovalev_D 47:d902ef6f7564 271 for (y = 0; y < 32; y++ ){
Kovalev_D 47:d902ef6f7564 272 sprintf(Time," <%05d> ",Buff_32Point[y]);
Kovalev_D 47:d902ef6f7564 273 }sprintf(Time,"\r\n");
Kovalev_D 47:d902ef6f7564 274 WriteCon(Time);*/
Kovalev_D 47:d902ef6f7564 275
igor_v 15:f5191a1c3805 276 }
Kovalev_D 47:d902ef6f7564 277
Kovalev_D 47:d902ef6f7564 278
Kovalev_D 47:d902ef6f7564 279
Kovalev_D 47:d902ef6f7564 280
Kovalev_D 47:d902ef6f7564 281
igor_v 15:f5191a1c3805 282 if (Event1K) {// событие раз в 1 кГц
igor_v 15:f5191a1c3805 283 Event1K --;
igor_v 15:f5191a1c3805 284 Time1K++;
igor_v 15:f5191a1c3805 285 if (Time1K == 1000) {
igor_v 15:f5191a1c3805 286 Time1K = 0;
igor_v 15:f5191a1c3805 287 Event1Hz ++;
igor_v 16:18e3fd7b92d0 288
igor_v 15:f5191a1c3805 289 }
Kovalev_D 40:8a6494f61326 290
igor_v 15:f5191a1c3805 291 }
igor_v 42:6fc307c4963e 292 if (Event100K) { // событие раз в 100 кГц
igor_v 15:f5191a1c3805 293 Event100K --;
igor_v 15:f5191a1c3805 294 Time100K++;
igor_v 43:3f7c8a0ea59c 295
igor_v 42:6fc307c4963e 296 PinCheng(); // чтение регистра состояния выводов(вибро, полсветка, поджиг, LED) и управление выводами.
igor_v 43:3f7c8a0ea59c 297 if (OutBufCon1Count) OutBufCon1Count--; // обратный отсчет для управления ногой и формирование задержки на выдачу
igor_v 43:3f7c8a0ea59c 298 if (Time100K == 100) {
igor_v 15:f5191a1c3805 299 Time100K = 0;
igor_v 15:f5191a1c3805 300 Event1K ++;
igor_v 15:f5191a1c3805 301 }
igor_v 15:f5191a1c3805 302 }
igor_v 15:f5191a1c3805 303 if (EventVibro) {// событие от вибр
igor_v 15:f5191a1c3805 304 EventVibro --;
igor_v 15:f5191a1c3805 305 }
Kovalev_D 40:8a6494f61326 306 Read_CMD();
igor_v 37:bdd52117b56e 307
Kovalev_D 40:8a6494f61326 308 // VibroOut();
igor_v 3:ed8744c5f67a 309
igor_v 3:ed8744c5f67a 310 if(Time_1kHz>100) {
igor_v 3:ed8744c5f67a 311
igor_v 3:ed8744c5f67a 312 SEC++;
igor_v 5:02e9f559395c 313 if(Rate_Flag==1 && SEC>500) {
igor_v 3:ed8744c5f67a 314 SEC-=500;
igor_v 12:74bd0ecf7f83 315 // CMD_Rate();
igor_v 3:ed8744c5f67a 316 }
igor_v 3:ed8744c5f67a 317
igor_v 3:ed8744c5f67a 318 Time_1kHz-=100;
igor_v 37:bdd52117b56e 319
igor_v 37:bdd52117b56e 320
igor_v 37:bdd52117b56e 321
igor_v 37:bdd52117b56e 322
igor_v 3:ed8744c5f67a 323 }
igor_v 3:ed8744c5f67a 324 ButtonLightUP();
igor_v 3:ed8744c5f67a 325 //Device_blk.Str.
igor_v 15:f5191a1c3805 326 // TakeFromBuff();
igor_v 3:ed8744c5f67a 327
igor_v 21:bc8c1cec3da6 328 //отключение поджига.
igor_v 21:bc8c1cec3da6 329
igor_v 3:ed8744c5f67a 330 // paramV=TakeParam(1);
igor_v 3:ed8744c5f67a 331
igor_v 3:ed8744c5f67a 332
igor_v 15:f5191a1c3805 333
igor_v 42:6fc307c4963e 334 if (0) // временно отключил олгоритм Сергея
Kovalev_D 40:8a6494f61326 335 if (LPC_PWM1->IR & 0x0001) { // Если в регистре прерываний ШИМ1 (регистр PWM1IR) есть влаг прерывания совпадения счетчика с МАТСН (lim0 ?) то:
igor_v 21:bc8c1cec3da6 336
Kovalev_D 40:8a6494f61326 337 /* ResetCS(ADC); //prepare ADC for sampling
Kovalev_D 40:8a6494f61326 338 SetDAC(DAC);
Kovalev_D 40:8a6494f61326 339 LPC_GPIO2->FIOSET |= 0x0000004; // turn on the LED
Kovalev_D 40:8a6494f61326 340 LPC_GPIO2->FIOSET |= 0x0000004; // turn on the LED
Kovalev_D 40:8a6494f61326 341 LPC_GPIO2->FIOSET |= 0x0000004; // turn on the LED
Kovalev_D 40:8a6494f61326 342 SetCS(ADC); //start ADC sampling
Kovalev_D 40:8a6494f61326 343 ResetDAC(DAC); //start DAC prepearing for writing
Kovalev_D 40:8a6494f61326 344 */
igor_v 3:ed8744c5f67a 345 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
igor_v 0:8ad47e2b6f00 346 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
igor_v 0:8ad47e2b6f00 347 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Kovalev_D 40:8a6494f61326 348 secPuls++;
Kovalev_D 40:8a6494f61326 349 tmpSec++;
Kovalev_D 40:8a6494f61326 350 mSec++;
igor_v 0:8ad47e2b6f00 351
Kovalev_D 40:8a6494f61326 352 i1++;
Kovalev_D 40:8a6494f61326 353 if(i1>10000)
Kovalev_D 40:8a6494f61326 354 //if(CountV31>30)
Kovalev_D 40:8a6494f61326 355 {
Kovalev_D 40:8a6494f61326 356 WriteCon(".");
Kovalev_D 40:8a6494f61326 357 i1=0;
Kovalev_D 40:8a6494f61326 358 /*
Kovalev_D 40:8a6494f61326 359 SendToBuffStr("\n\r");
Kovalev_D 40:8a6494f61326 360 // if (Buff_ADC_1 [y] > 65535)SendToBuffStr(" 0 "); else SendToBuffStr(" 1 ");
Kovalev_D 40:8a6494f61326 361 sprintf (BuffTemp,"<%05d> <%05d> <%05d> <%05d> <%05d>", Temp_AMP>>5,Temp_ADC_2>>5,Temp_ADC_3>>5,Temp_ADC_4>>5,Temp_ADC_5>>5);
Kovalev_D 40:8a6494f61326 362 // sprintf (BuffTemp,"<%07d> <%07d> <%07d> <%07d> <%07d>", Spi.ADC1,Spi.ADC2,Spi.ADC3,Spi.ADC4,Spi.ADC5);
Kovalev_D 40:8a6494f61326 363 SendToBuffStr(BuffTemp);
Kovalev_D 40:8a6494f61326 364 */
Kovalev_D 40:8a6494f61326 365 /*
Kovalev_D 40:8a6494f61326 366 WriteConByte (Gyro.T_Vib&0xff00);
Kovalev_D 40:8a6494f61326 367 WriteConByte (Gyro.T_Vib&0x00ff);
Kovalev_D 40:8a6494f61326 368 WriteConByte (Gyro.T_Vib);
Kovalev_D 40:8a6494f61326 369 */
Kovalev_D 40:8a6494f61326 370 /*
igor_v 3:ed8744c5f67a 371
Kovalev_D 40:8a6494f61326 372 for (y = 0; y < 32; y++ )
Kovalev_D 40:8a6494f61326 373 {
igor_v 3:ed8744c5f67a 374
Kovalev_D 40:8a6494f61326 375 WriteCon(BuffTemp);
Kovalev_D 40:8a6494f61326 376 } WriteCon("\n\r");
igor_v 0:8ad47e2b6f00 377
Kovalev_D 40:8a6494f61326 378 */
Kovalev_D 40:8a6494f61326 379 /*
Kovalev_D 40:8a6494f61326 380 Gyro.T_Vib=((7680000*16/Gyro.Frq)*4096);
Kovalev_D 40:8a6494f61326 381 th= Gyro.T_Vib&0xff00;
Kovalev_D 40:8a6494f61326 382 tt= Gyro.T_Vib&0x00ff;
Kovalev_D 40:8a6494f61326 383 sprintf(BuffTemp,"<%07d >",( (Gyro.T_Vib&0xff00)));
Kovalev_D 40:8a6494f61326 384 SendToBuffStr(BuffTemp);
igor_v 3:ed8744c5f67a 385
Kovalev_D 40:8a6494f61326 386 sprintf(BuffTemp,"<%07d >",( ( Gyro.T_Vib&0x00ff)));
Kovalev_D 40:8a6494f61326 387 SendToBuffStr(BuffTemp);
igor_v 15:f5191a1c3805 388
Kovalev_D 40:8a6494f61326 389 CuruAngleOld=CuruAngle;*/
Kovalev_D 40:8a6494f61326 390 // Spi.ADC1=Spi.ADC1*0.000061;
igor_v 3:ed8744c5f67a 391
igor_v 3:ed8744c5f67a 392
igor_v 3:ed8744c5f67a 393
igor_v 3:ed8744c5f67a 394
Kovalev_D 40:8a6494f61326 395 /*
igor_v 3:ed8744c5f67a 396
Kovalev_D 40:8a6494f61326 397 sprintf(BuffTemp,"\n\r<%05d><%05d><%05d><%05d><%05d>",Spi.ADC1,Spi.ADC2,Spi.ADC3,Spi.ADC4,Spi.ADC5);
Kovalev_D 40:8a6494f61326 398 SendToBuffStr(BuffTemp);
igor_v 3:ed8744c5f67a 399
Kovalev_D 40:8a6494f61326 400 */
igor_v 3:ed8744c5f67a 401
Kovalev_D 40:8a6494f61326 402 /* sprintf(BuffTemp,"<%d>",(FrecTemp));
Kovalev_D 40:8a6494f61326 403 SendToBuffStr(BuffTemp);
Kovalev_D 40:8a6494f61326 404 for (y = 0; y < 32; y++ )
Kovalev_D 40:8a6494f61326 405 {
Kovalev_D 40:8a6494f61326 406 sprintf(BuffTemp," <%07d>", (Buff_16PointD [y]-65535));
Kovalev_D 40:8a6494f61326 407 SendToBuffStr(BuffTemp);
Kovalev_D 40:8a6494f61326 408 } */
igor_v 15:f5191a1c3805 409
Kovalev_D 40:8a6494f61326 410 }
igor_v 3:ed8744c5f67a 411
igor_v 3:ed8744c5f67a 412
igor_v 3:ed8744c5f67a 413
igor_v 3:ed8744c5f67a 414
igor_v 0:8ad47e2b6f00 415
igor_v 0:8ad47e2b6f00 416
igor_v 0:8ad47e2b6f00 417
igor_v 0:8ad47e2b6f00 418
igor_v 0:8ad47e2b6f00 419 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
igor_v 0:8ad47e2b6f00 420 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
igor_v 0:8ad47e2b6f00 421 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
igor_v 0:8ad47e2b6f00 422
igor_v 0:8ad47e2b6f00 423
igor_v 0:8ad47e2b6f00 424
igor_v 3:ed8744c5f67a 425
Kovalev_D 40:8a6494f61326 426 LPC_GPIO2->FIOSET |= 0x0000004; // turn on the LED
igor_v 3:ed8744c5f67a 427
igor_v 0:8ad47e2b6f00 428
Kovalev_D 40:8a6494f61326 429 Curr_Cnt_Vib = LPC_QEI->POS; // записать в переменную Curr_Cnt_Vib текущее положение Энкодера. (текущее количество импульсов)
Kovalev_D 40:8a6494f61326 430 Latch_Event(); //определение защелки
igor_v 3:ed8744c5f67a 431
Kovalev_D 40:8a6494f61326 432 clc_Pulses(); // счетчик импульсов. RATE_REPER_OR_REFMEANDR или RATE_VIBRO_1
igor_v 0:8ad47e2b6f00 433
igor_v 0:8ad47e2b6f00 434
Kovalev_D 40:8a6494f61326 435 //ADC_Input(); // проверка флагов заполнения буфера и четение Thermo1, Thermo2, HF_out в масив Input.ArrayIn[n].
Kovalev_D 40:8a6494f61326 436 //DAC_ADC_Exchange();// проверка флагов заполнения буфера и зпись в ЦАПы.
Kovalev_D 40:8a6494f61326 437 ServiceTime();//секундный таймер.
Kovalev_D 40:8a6494f61326 438 clc_ThermoSensors();//расчет средней температуры за секунду
Kovalev_D 40:8a6494f61326 439 clc_HFO(); //расчет значения для передачи в контур ГВЧ(на цап).
igor_v 21:bc8c1cec3da6 440
Kovalev_D 40:8a6494f61326 441 clc_PLC();
Kovalev_D 40:8a6494f61326 442 // clc_Dith_regulator();
Kovalev_D 40:8a6494f61326 443 clc_OutFreq_regulator();
Kovalev_D 40:8a6494f61326 444 Output.Str.WP_sin = clc_WP_sin();
Kovalev_D 40:8a6494f61326 445 contrl_GLD();
Kovalev_D 40:8a6494f61326 446 G_Photo_Exchange();
Kovalev_D 40:8a6494f61326 447 // Output.Str.T_Vibro = paramV*48;
igor_v 0:8ad47e2b6f00 448
igor_v 3:ed8744c5f67a 449
Kovalev_D 40:8a6494f61326 450 Line_1_Rcv();
Kovalev_D 40:8a6494f61326 451 decode_CMD();
Kovalev_D 40:8a6494f61326 452 transm_DAT();
Kovalev_D 40:8a6494f61326 453 //îòêëþ÷åíèå ïîäæèãà.
igor_v 3:ed8744c5f67a 454
igor_v 3:ed8744c5f67a 455
igor_v 13:e2a1d18677b8 456 // data_Rdy &= ~RESET_PERIOD;
igor_v 0:8ad47e2b6f00 457
igor_v 0:8ad47e2b6f00 458
Kovalev_D 40:8a6494f61326 459 LPC_PWM1->IR = 0x0001; //e. clear interrupt flag
Kovalev_D 40:8a6494f61326 460 LPC_GPIO2->FIOCLR |= 0x0000004; // turn off the LED
igor_v 0:8ad47e2b6f00 461 // WDTFeed();
igor_v 0:8ad47e2b6f00 462 //SPI_Exchange();
igor_v 3:ed8744c5f67a 463
Kovalev_D 40:8a6494f61326 464 }
igor_v 3:ed8744c5f67a 465
igor_v 3:ed8744c5f67a 466 } while ( 1 ); // main infinie loop
igor_v 0:8ad47e2b6f00 467 }
igor_v 0:8ad47e2b6f00 468
igor_v 0:8ad47e2b6f00 469 /******************************************************************************
igor_v 0:8ad47e2b6f00 470 ** End Of File
igor_v 0:8ad47e2b6f00 471 ******************************************************************************/
igor_v 0:8ad47e2b6f00 472
igor_v 0:8ad47e2b6f00 473