Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of LG by
main.c
00001 //ssdfwewedfsfds 00002 /****************************************Copyright (c)**************************************************** 00003 **--------------File Info--------------------------------------------------------------------------------- 00004 ** File name: main.c 00005 ** Last modified Date: 2011-10-24 00006 ** Last Version: V1.00 00007 ** Descriptions: The main() function 00008 ** 00009 **-------------------------------------------------------------------------------------------------------- 00010 ** Created by: Electrooptica Incorp. 00011 ** Created date: 2011-08-22 00012 ** Version: V1.00 00013 ** Descriptions: 00014 **-------------------------------------------------------------------------------------------------------- 00015 *********************************************************************************************************/ 00016 00017 00018 #include "Global.h" 00019 //#include <math.h> 00020 00021 00022 00023 00024 //проба верси 00025 //2016_02_03_17_47 00026 00027 00028 00029 00030 00031 /****************************************************************************** 00032 ** Main Function main() 00033 ******************************************************************************/ 00034 extern uint32_t CMD_Mode; 00035 ////////////////////////////////////////////////////////////////////////////////////////////////////////// 00036 ////////////////////////////////////////////////////////////////////////////////////////////////////////// 00037 int i1 =0; 00038 //extern unsigned int Buff_QEI[256]; 00039 volatile unsigned int IRQ_Counter=0; 00040 volatile uint32_t timer1_counter = 0; 00041 int temp111=0,temp=0; 00042 int y = 0; 00043 int CuruAngleOld=0; 00044 unsigned int LightUpCount,BackLightCount,secPuls,CountBI,CmmandIn,tt,th; 00045 00046 unsigned int paramV; 00047 00048 00049 00050 void Led_init() 00051 { 00052 LPC_PINCON->PINSEL0 = (0x00<<28); 00053 LPC_GPIO1->FIODIR = (0x1<<30); 00054 LPC_PINCON->PINMODE0 = (0x3<<28); 00055 // LPC_GPIO1->FIOSET = (0x0<<30); 00056 // LPC_GPIO0->FIOSET = (1<<4); 00057 } 00058 00059 int flag=0, TIME=0,t=0, Sec=0,tmpSec=0,SEC=0, mSec=0; 00060 int tempsec=0; 00061 float DACF, K_DAC; 00062 00063 void Led_Blink() 00064 { 00065 if (flag == 0) { 00066 LPC_GPIO1->FIOSET = (0x1<<30); 00067 flag=1; 00068 } else { 00069 flag =0; 00070 LPC_GPIO1->FIOCLR = (0x01<<30); 00071 } 00072 } 00073 00074 long LED_TEMP=0; 00075 00076 00077 00078 00079 int main (void) 00080 { 00081 K_DAC=65535.0/(65535.0+(deltaDAC+deltaDAC/2)); 00082 K_DAC=0.8; 00083 00084 Main.Firmware_Version=0x15; 00085 Main.GLD_Serial = 0x20; 00086 Main.My_Addres=0; 00087 LightUpCount=1000; 00088 BackLightCount=5000; 00089 secPuls=0; 00090 Pulse_midl = 0; 00091 PulseHalf = 0; 00092 CuruAngle = 0; 00093 Spi.DAC_A=0x7fff; 00094 Spi.DAC_B = 0x7fff; 00095 //инициализация 00096 SystemInit(); // Инициализация системы 00097 Led_init(); 00098 00099 ///* 00100 //конфигурирование сигнала поджига 00101 LPC_PINCON->PINSEL0 &= ~(3<<8); //e. P0.4 is GPIO pin (запись ( 00 ) в 9:8 бит PISEL0 выбор P0.4 как GPIO) 00102 LPC_PINCON->PINMODE0 |= (3<<8); //e. P0.4 is GPIO pin (запись ( 11 ) в 9:8 бит PINMODE0 "для включения подтягивающего резистора") 00103 LPC_GPIO0->FIODIR |= (1<<4); //e. P0.4 is output (запись ( 1 ) в 5 бит FIODIR выбор P0.4 как выход) 00104 LightUpON //e. P0.4 is output (запись ( 1 ) в 5 бит CLR устанавливаем на P0.4 низкий уровень сигнала) 00105 /* 00106 LPC_PINCON->PINSEL0 &= ~(3<<10); //e. P0.4 is GPIO pin (запись ( 00 ) в 9:8 бит PISEL0 выбор P0.4 как GPIO) 00107 LPC_PINCON->PINMODE0 |= (3<<10); //e. P0.4 is GPIO pin (запись ( 11 ) в 9:8 бит PINMODE0 "для включения подтягивающего резистора") 00108 LPC_GPIO0->FIODIR |= (1<<5); //e. P0.4 is output (запись ( 1 ) в 5 бит FIODIR выбор P0.4 как выход) 00109 LPC_GPIO0->FIOCLR |= (1<<5); //e. P0.4 is output (запись ( 1 ) в 5 бит CLR устанавливаем на P0.4 низкий уровень сигнала)*/ 00110 00111 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 00112 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 00113 00114 00115 LPC_PINCON->PINSEL3 = (0x00<<18); //e. P1.25 is GPIO pin 00116 LPC_PINCON->PINMODE3 |= (3<<18); //e. P1.25 (включениe подтягивающего резистора") 00117 LPC_GPIO1->FIODIR |= (1<<25); //e. P0.5 is output (запись ( 1 ) в 5 бит FIODIR выбор P0.5 как выход) 00118 LPC_GPIO1->FIOCLR |= (1<<25); 00119 00120 00121 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 00122 00123 LPC_PINCON->PINSEL3 = (0x00<<24); //e. P1.28 is GPIO pin 00124 LPC_PINCON->PINMODE3 |= (3<<24); //e. P1.28 is GPIO pin (запись ( 11 ) в бит PINMODE0 "для включения подтягивающего резистора") 00125 LPC_GPIO1->FIODIR |= (1<<28); //e. P1.28 is output (запись ( 1 ) в 5 бит FIODIR выбор P0.5 как выход) 00126 LPC_GPIO1->FIOCLR |= (1<<28); 00127 // init_timer(TIME_INTERVAL ); // 10ms 00128 // enable_timer1(); 00129 ///иНИциализация подсветки 00130 LPC_PINCON->PINSEL2 = (0x00<<24); //e. P2.12 is GPIO pin 00131 LPC_PINCON->PINMODE3 |= (3<<24); //e. P1.28 is GPIO pin (запись ( 11 ) в бит PINMODE0 "для включения подтягивающего резистора") 00132 LPC_GPIO2->FIODIR |= (1<<12); //e. P1.28 is output (запись ( 1 ) в 5 бит FIODIR выбор P0.5 как выход) 00133 LPC_GPIO2->FIOCLR |= (1<<12); 00134 00135 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 00136 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 00137 /* 00138 //конфигурирование сигнала поджига оторваная нога (поджиг на 80 ноге вместо 81) 00139 LPC_PINCON->PINSEL0 = (0x00<<10); //e. P0.5 is GPIO pin (запись ( 00 ) в 11:10 бит PISEL0 выбор P0.5 как GPIO) 00140 LPC_PINCON->PINMODE0 |= (3<<10); //e. P0.5 is GPIO pin (запись ( 11 ) в 11:10 бит PINMODE0 "для включения подтягивающего резистора") 00141 LPC_GPIO0->FIODIR |= (1<<5); //e. P0.5 is output (запись ( 1 ) в 5 бит FIODIR выбор P0.5 как выход) 00142 LPC_GPIO0->FIOCLR |= (1<<5); //e. P0.5 is output (запись ( 1 ) в 5 бит CLR устанавливаем на P0.5 низкий уровень сигнала) 00143 */ 00144 DMA_Init(); // Инициализация DMA 00145 FlashDMA_Init(); // Загрузка параметров с флэш 00146 00147 SystemCoreClockUpdate(); // расчет системной частоты для UART. 00148 UARTInit(); // инициализация UART0 на скорость 38400. 00149 UART1_Init(); // инициализация UART1 на скорость 38400. 00150 00151 00152 DAC_ADC_Exchange_Init(); // инициализация обмена АЦП и ЦАП. 00153 DACInit(); // инициализация ЦАП. 00154 SOI_Init(); // Инициализация квадратурного энкодера. 00155 00156 IntLatch_Init(); // инициализация внутренней защелки. 00157 ExtLatch_Init(); // инициализация внешней защелки. 00158 00159 //----------------debug------------------------- 00160 //LPC_GPIO2->FIODIR = 0x5C; // P2.0...P2.7 defined as Outputs 00161 //LPC_GPIO2->FIOCLR = 0x5C; // turn off all the LEDs 00162 //----------------debug------------------------- 00163 00164 00165 00166 LoadFlashParam(FromFLASH); //загрузка параметров. 00167 UART_DMA_Init(); //инициализация DMA для UART. 00168 G_Photo_Init(); //инициализация интерфейса I2C для фотодетектора. 00169 Out_G_photo(60, 60); //запись в буфер мастера принятые от функции данные (60,60) и установка флага старта передачи и занятой шины. 00170 // WDTInit(); 00171 00172 00173 open_all_loops(); //#define open_all_loops() RgConA = 0 (Основной регистр управления устройства (0 - включить, 1 - отключить)). 00174 Output.Str.HF_reg = Device_blk.Str.HF_min; //HFO output voltage = максивальное напряжение на ГВЧ. 00175 init_PLC(); //Инициализация СРП(регулировка периметра) 00176 init_Dither_reg(); //инициализация вибропривода 00177 RgConB = RATE_VIBRO_1; // дополнительный регистр управления = разность вибросчетчиков после фильтра скольз.среднего(#define RATE_VIBRO_1 0x0001) 00178 00179 init_Vibro(); 00180 init_timer(TIME_INTERVAL ); // 10ms 00181 enable_timer1(); 00182 Init_TIM2(); 00183 enable_timer2(); 00184 close_all_loops(); 00185 00186 00187 LPC_GPIO0->FIOCLR = (1<<5); 00188 00189 00190 Event1Hz = 0; 00191 Event1K = 0; 00192 Event100K = 0; 00193 EventVibro = 0; 00194 Time1K = 0; 00195 Time100K = 0; 00196 Time1Hz = 0; 00197 Clock1Hz = 0; 00198 Main.Discharg = StartDischarg; 00199 00200 Pulse_8Point = 0; 00201 Pulse_16Point = 0; 00202 Pulse_32Point = 0; 00203 00204 Temp_AMP=0; 00205 Temp_ADC_2=0; 00206 Temp_ADC_3=0; 00207 Temp_ADC_4=0; 00208 Temp_ADC_5=0; 00209 00210 for (y = 0; y < 256; y++ ) { 00211 Buff_16Point[y] = 0xffff; 00212 Buff_8Point[y] = 0xffff; 00213 Buff_32Point[y] = 0xffff; 00214 Buff_ADC_1[y] = 0; // ампл ацп. 00215 Buff_ADC_2[y] = 0; 00216 Buff_ADC_3[y] = 0; 00217 Buff_ADC_4[y] = 0; 00218 Buff_ADC_5[y] = 0; 00219 00220 } 00221 00222 00223 00224 00225 WriteCon("\n\r ...GL start programm uart 0.... "); 00226 sprintf(Time,"\r\nCompiled: %s %s.",__DATE__, __TIME__ ); //Подготовка даты и времени компиляции 00227 WriteCon(Time); 00228 00229 00230 00231 do { //основной цикл. 00232 Concol (); // Проврка 0 консоли (вход и выход) 00233 if (OutBufConCount) OutBufConCount--; 00234 00235 if (ReadCon (Time)) { 00236 if (Time[0] == 'h') { // если ввели буквц h то выдать подсказку. сделанно через принф ОЧЕНЬ плохо в работе не использовать 00237 sprintf(Time,"\r\nCompiled: %s %s.",__DATE__, __TIME__ ); //Подготовка даты и времени компиляции 00238 WriteCon(Time); 00239 sprintf(Time,"--%d.%3.d.%2.d.",Clock1Hz,Time1K,Time100K); //Временно выдачпа временни из трех чисел 00240 WriteCon(Time); 00241 } 00242 } 00243 00244 if (Event1Hz) {// событие раз в 1 Гц 00245 Event1Hz --; 00246 Clock1Hz++; 00247 00248 //============================= блок управления поджигом и подсветкой, сделанно через сдвиг====================== 00249 if (Main.Discharg){ //Проверка поджига 00250 if (Main.Discharg & 0x01) Main.PinReg |= PinRegBitD; else Main.PinReg &= ~PinRegBitD; 00251 Main.Discharg = Main.Discharg >> 1; 00252 } 00253 00254 00255 } 00256 if (Event1K) {// событие раз в 1 кГц 00257 Event1K --; 00258 Time1K++; 00259 if (Time1K == 1000) { 00260 Time1K = 0; 00261 Event1Hz ++; 00262 00263 } 00264 } 00265 if (Event100K) {// событие раз в 100 кГц 00266 Event100K --; 00267 Time100K++; 00268 if (Time100K == 100) { 00269 Time100K = 0; 00270 Event1K ++; 00271 } 00272 } 00273 if (EventVibro) {// событие от вибр 00274 EventVibro --; 00275 } 00276 00277 00278 00279 00280 // Concol1 (); 00281 Read_CMD(); 00282 00283 // VibroOut(); 00284 00285 if(Time_1kHz>100) { 00286 00287 SEC++; 00288 if(Rate_Flag==1 && SEC>500) { 00289 SEC-=500; 00290 // CMD_Rate(); 00291 } 00292 00293 Time_1kHz-=100; 00294 if(LightUpCount) { 00295 LightUpCount--; 00296 LightUpON 00297 } 00298 00299 else { 00300 LightUpOFF; 00301 } 00302 if(BackLightCount) { 00303 BackLightCount--; 00304 BackLightON 00305 } else { 00306 BackLightOFF; 00307 } 00308 } 00309 ButtonLightUP(); 00310 //Device_blk.Str. 00311 // TakeFromBuff(); 00312 00313 //отключение поджига. 00314 00315 // paramV=TakeParam(1); 00316 00317 00318 00319 if (LPC_PWM1->IR & 0x0001) { // Если в регистре прерываний ШИМ1 (регистр PWM1IR) есть влаг прерывания совпадения счетчика с МАТСН (lim0 ?) то: 00320 00321 /* ResetCS(ADC); //prepare ADC for sampling 00322 SetDAC(DAC); 00323 LPC_GPIO2->FIOSET |= 0x0000004; // turn on the LED 00324 LPC_GPIO2->FIOSET |= 0x0000004; // turn on the LED 00325 LPC_GPIO2->FIOSET |= 0x0000004; // turn on the LED 00326 SetCS(ADC); //start ADC sampling 00327 ResetDAC(DAC); //start DAC prepearing for writing 00328 */ 00329 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 00330 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 00331 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 00332 secPuls++; 00333 tmpSec++; 00334 mSec++; 00335 00336 i1++; 00337 if(i1>10000) 00338 //if(CountV31>30) 00339 { 00340 WriteCon("."); 00341 i1=0; 00342 /* 00343 SendToBuffStr("\n\r"); 00344 // if (Buff_ADC_1 [y] > 65535)SendToBuffStr(" 0 "); else SendToBuffStr(" 1 "); 00345 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); 00346 // sprintf (BuffTemp,"<%07d> <%07d> <%07d> <%07d> <%07d>", Spi.ADC1,Spi.ADC2,Spi.ADC3,Spi.ADC4,Spi.ADC5); 00347 SendToBuffStr(BuffTemp); 00348 */ 00349 /* 00350 WriteConByte (Main.T_Vib&0xff00); 00351 WriteConByte (Main.T_Vib&0x00ff); 00352 WriteConByte (Main.T_Vib); 00353 */ 00354 /* 00355 00356 for (y = 0; y < 32; y++ ) 00357 { 00358 00359 WriteCon(BuffTemp); 00360 } WriteCon("\n\r"); 00361 00362 */ 00363 /* 00364 Main.T_Vib=((7680000*16/Main.Frq)*4096); 00365 th= Main.T_Vib&0xff00; 00366 tt= Main.T_Vib&0x00ff; 00367 sprintf(BuffTemp,"<%07d >",( (Main.T_Vib&0xff00))); 00368 SendToBuffStr(BuffTemp); 00369 00370 sprintf(BuffTemp,"<%07d >",( ( Main.T_Vib&0x00ff))); 00371 SendToBuffStr(BuffTemp); 00372 00373 CuruAngleOld=CuruAngle;*/ 00374 // Spi.ADC1=Spi.ADC1*0.000061; 00375 00376 00377 00378 00379 /* 00380 00381 sprintf(BuffTemp,"\n\r<%05d><%05d><%05d><%05d><%05d>",Spi.ADC1,Spi.ADC2,Spi.ADC3,Spi.ADC4,Spi.ADC5); 00382 SendToBuffStr(BuffTemp); 00383 00384 */ 00385 00386 /* sprintf(BuffTemp,"<%d>",(FrecTemp)); 00387 SendToBuffStr(BuffTemp); 00388 for (y = 0; y < 32; y++ ) 00389 { 00390 sprintf(BuffTemp," <%07d>", (Buff_16PointD [y]-65535)); 00391 SendToBuffStr(BuffTemp); 00392 } */ 00393 00394 } 00395 00396 00397 00398 00399 00400 00401 00402 00403 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 00404 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 00405 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 00406 00407 00408 00409 00410 LPC_GPIO2->FIOSET |= 0x0000004; // turn on the LED 00411 00412 00413 Curr_Cnt_Vib = LPC_QEI->POS; // записать в переменную Curr_Cnt_Vib текущее положение Энкодера. (текущее количество импульсов) 00414 Latch_Event(); //определение защелки 00415 00416 clc_Pulses(); // счетчик импульсов. RATE_REPER_OR_REFMEANDR или RATE_VIBRO_1 00417 00418 00419 //ADC_Input(); // проверка флагов заполнения буфера и четение Thermo1, Thermo2, HF_out в масив Input.ArrayIn[n]. 00420 //DAC_ADC_Exchange();// проверка флагов заполнения буфера и зпись в ЦАПы. 00421 ServiceTime();//секундный таймер. 00422 clc_ThermoSensors();//расчет средней температуры за секунду 00423 clc_HFO(); //расчет значения для передачи в контур ГВЧ(на цап). 00424 00425 clc_PLC(); 00426 // clc_Dith_regulator(); 00427 clc_OutFreq_regulator(); 00428 Output.Str.WP_sin = clc_WP_sin(); 00429 contrl_GLD(); 00430 G_Photo_Exchange(); 00431 // Output.Str.T_Vibro = paramV*48; 00432 00433 00434 Line_1_Rcv(); 00435 decode_CMD(); 00436 transm_DAT(); 00437 //îòêëþ÷åíèå ïîäæèãà. 00438 00439 00440 // data_Rdy &= ~RESET_PERIOD; 00441 00442 00443 LPC_PWM1->IR = 0x0001; //e. clear interrupt flag 00444 LPC_GPIO2->FIOCLR |= 0x0000004; // turn off the LED 00445 00446 // WDTFeed(); 00447 //SPI_Exchange(); 00448 00449 } 00450 00451 } while ( 1 ); // main infinie loop 00452 } 00453 00454 /****************************************************************************** 00455 ** End Of File 00456 ******************************************************************************/ 00457 00458
Generated on Tue Jul 12 2022 15:16:11 by
1.7.2
