fork

Dependencies:   mbed

Fork of LG by igor Apu

Revision:
40:8a6494f61326
Parent:
39:15782b3b2ab2
Child:
41:70d12776d1ef
--- a/main.c	Sat Feb 06 14:48:44 2016 +0000
+++ b/main.c	Sat Feb 06 18:16:06 2016 +0000
@@ -63,20 +63,22 @@
     }
 }
 
-long LED_TEMP=0;
-
-
-
 
 int main (void)
 {
+    Gyro.Firmware_Version	=0x15; //версия программы
+    Gyro.GLD_Serial 		= 0x20; //серийный номер
+    Gyro.My_Addres			= 0; //адрес глд
+    
+    
+    
     K_DAC=65535.0/(65535.0+(deltaDAC+deltaDAC/2));
     K_DAC=0.8;
 
-    Gyro.Firmware_Version	=0x15;
-    Gyro.GLD_Serial 		= 0x20;
-    Gyro.My_Addres			= 0;
+
 
+    Gyro.Discharg = 0x7;  // инициализация время поджига    3 сек  (в событии 1HZ)
+    Gyro.BackLight=0x3ff;// инициализация время подсветки 10 сек  (в событии 1HZ)
     secPuls =0;
     Pulse_midl = 0;
     PulseHalf = 0;
@@ -186,8 +188,8 @@
     Time100K	= 0;
     Time1Hz		= 0;
     Clock1Hz	= 0;
- 	Gyro.Discharg = StartDischarg;
- 
+    Gyro.Discharg = StartDischarg;
+
     Pulse_8Point = 0;
     Pulse_16Point = 0;
     Pulse_32Point = 0;
@@ -208,8 +210,8 @@
         Buff_ADC_4[y] 		= 0;
         Buff_ADC_5[y] 		= 0;
     }
-   	WriteCon("\n\r ...GL start programm uart 0.... ");
-   	WriteCon1("\n\r ...GL start programm uart 1.... ");
+    WriteCon("\n\r ...GL start programm uart 0.... ");
+    WriteCon1("\n\r ...GL start programm uart 1.... ");
     sprintf(Time,"\r\nCompiled: %s %s.",__DATE__,  __TIME__ );                 //Подготовка даты и времени компиляции
     WriteCon(Time);
 
@@ -236,14 +238,21 @@
             Event1Hz --;
             Clock1Hz++;
 
-//============================= блок управления поджигом и подсветкой, сделанно через сдвиг======================
-            if (Gyro.Discharg){	//Проверка поджига
-	               if (Gyro.Discharg & 0x01) Gyro.PinReg |= PinRegBitD; else Gyro.PinReg &= ~PinRegBitD;
+//============================= блок управления поджигом, сделанно через сдвиг======================
+            if (Gyro.Discharg) {	//Проверка поджига
+                if (Gyro.Discharg & 0x01) Gyro.PinReg |= PinRegBitD;
+                else Gyro.PinReg &= ~PinRegBitD;
                 Gyro.Discharg = Gyro.Discharg >> 1;
             }
- 
-       		CMD_Rate();
-			WriteCon(".");				//Так просто выдавать в секунду 1 баййт ,что гирос жив
+//============================= блок управления подсветкой, сделанно через сдвиг======================
+            if (Gyro.BackLight) {	//Проверка подсветки
+                if (Gyro.BackLight & 0x01) Gyro.PinReg |= PinRegBitL;
+                else Gyro.PinReg &= ~PinRegBitL;
+                Gyro.BackLight = Gyro.BackLight >> 1;
+            }
+
+            CMD_Rate();
+            WriteCon(".");				//Так просто выдавать в секунду 1 байт ,что гирос жив
 
         }
         if (Event1K)	{// событие раз в 1 кГц
@@ -254,11 +263,16 @@
                 Event1Hz ++;
 
             }
-        
+
         }
         if (Event100K)	{// событие раз в 100 кГц
             Event100K --;
             Time100K++;
+            
+            
+            PinCheng();// чтение регистра состояния выводов(вибро, полсветка, поджиг, LED) и управление выводами.
+            
+            
             if (Time100K == 100) {
                 Time100K = 0;
                 Event1K ++;
@@ -267,9 +281,9 @@
         if (EventVibro)	{// событие от вибр
             EventVibro --;
         }
-	    Read_CMD();
+        Read_CMD();
 
- //	VibroOut();
+//	VibroOut();
 
         if(Time_1kHz>100) {
 
@@ -296,82 +310,82 @@
 
 
         if (0)
-        	if (LPC_PWM1->IR & 0x0001) { // Если в регистре прерываний ШИМ1 (регистр PWM1IR) есть влаг прерывания совпадения счетчика с МАТСН (lim0 ?) то:
+            if (LPC_PWM1->IR & 0x0001) { // Если в регистре прерываний ШИМ1 (регистр PWM1IR) есть влаг прерывания совпадения счетчика с МАТСН (lim0 ?) то:
 
-            /*	ResetCS(ADC);					  	//prepare ADC for sampling
-            	SetDAC(DAC);
-                LPC_GPIO2->FIOSET |= 0x0000004;			// turn on the LED
-                LPC_GPIO2->FIOSET |= 0x0000004;			// turn on the LED
-                LPC_GPIO2->FIOSET |= 0x0000004;			// turn on the LED
-            	SetCS(ADC);					    	//start ADC sampling
-            	ResetDAC(DAC);  	    			//start DAC prepearing for writing
-            */
+                /*	ResetCS(ADC);					  	//prepare ADC for sampling
+                	SetDAC(DAC);
+                    LPC_GPIO2->FIOSET |= 0x0000004;			// turn on the LED
+                    LPC_GPIO2->FIOSET |= 0x0000004;			// turn on the LED
+                    LPC_GPIO2->FIOSET |= 0x0000004;			// turn on the LED
+                	SetCS(ADC);					    	//start ADC sampling
+                	ResetDAC(DAC);  	    			//start DAC prepearing for writing
+                */
 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-            secPuls++;
-            tmpSec++;
-            mSec++;
+                secPuls++;
+                tmpSec++;
+                mSec++;
 
-            i1++;
-            if(i1>10000)
-                //if(CountV31>30)
-            {
-                WriteCon(".");
-                i1=0;
-                /*
-                SendToBuffStr("\n\r");
-                //	if (Buff_ADC_1	[y] > 65535)SendToBuffStr(" 0 "); else SendToBuffStr(" 1 ");
-                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);
-                // sprintf (BuffTemp,"<%07d> <%07d> <%07d> <%07d> <%07d>", Spi.ADC1,Spi.ADC2,Spi.ADC3,Spi.ADC4,Spi.ADC5);
-                	SendToBuffStr(BuffTemp);
-                */
-                /*
-                WriteConByte (Gyro.T_Vib&0xff00);
-                WriteConByte (Gyro.T_Vib&0x00ff);
-                WriteConByte (Gyro.T_Vib);
-                */
-                /*
+                i1++;
+                if(i1>10000)
+                    //if(CountV31>30)
+                {
+                    WriteCon(".");
+                    i1=0;
+                    /*
+                    SendToBuffStr("\n\r");
+                    //	if (Buff_ADC_1	[y] > 65535)SendToBuffStr(" 0 "); else SendToBuffStr(" 1 ");
+                    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);
+                    // sprintf (BuffTemp,"<%07d> <%07d> <%07d> <%07d> <%07d>", Spi.ADC1,Spi.ADC2,Spi.ADC3,Spi.ADC4,Spi.ADC5);
+                    	SendToBuffStr(BuffTemp);
+                    */
+                    /*
+                    WriteConByte (Gyro.T_Vib&0xff00);
+                    WriteConByte (Gyro.T_Vib&0x00ff);
+                    WriteConByte (Gyro.T_Vib);
+                    */
+                    /*
 
-                for (y = 0; y < 32; y++ )
-                			{
+                    for (y = 0; y < 32; y++ )
+                    			{
 
-                		  	 WriteCon(BuffTemp);
-                			}	WriteCon("\n\r");
+                    		  	 WriteCon(BuffTemp);
+                    			}	WriteCon("\n\r");
 
-                */
-                /*
-                Gyro.T_Vib=((7680000*16/Gyro.Frq)*4096);
-                         th=   Gyro.T_Vib&0xff00;
-                         tt=   Gyro.T_Vib&0x00ff;
-                            sprintf(BuffTemp,"<%07d  >",( (Gyro.T_Vib&0xff00)));
-                						SendToBuffStr(BuffTemp);
+                    */
+                    /*
+                    Gyro.T_Vib=((7680000*16/Gyro.Frq)*4096);
+                             th=   Gyro.T_Vib&0xff00;
+                             tt=   Gyro.T_Vib&0x00ff;
+                                sprintf(BuffTemp,"<%07d  >",( (Gyro.T_Vib&0xff00)));
+                    						SendToBuffStr(BuffTemp);
 
-                						sprintf(BuffTemp,"<%07d  >",( ( Gyro.T_Vib&0x00ff)));
-                						SendToBuffStr(BuffTemp);
+                    						sprintf(BuffTemp,"<%07d  >",( ( Gyro.T_Vib&0x00ff)));
+                    						SendToBuffStr(BuffTemp);
 
-                						CuruAngleOld=CuruAngle;*/
-                // Spi.ADC1=Spi.ADC1*0.000061;
+                    						CuruAngleOld=CuruAngle;*/
+                    // Spi.ADC1=Spi.ADC1*0.000061;
 
 
 
 
-                /*
+                    /*
 
-                   	sprintf(BuffTemp,"\n\r<%05d><%05d><%05d><%05d><%05d>",Spi.ADC1,Spi.ADC2,Spi.ADC3,Spi.ADC4,Spi.ADC5);
-                SendToBuffStr(BuffTemp);
+                       	sprintf(BuffTemp,"\n\r<%05d><%05d><%05d><%05d><%05d>",Spi.ADC1,Spi.ADC2,Spi.ADC3,Spi.ADC4,Spi.ADC5);
+                    SendToBuffStr(BuffTemp);
 
-                */
+                    */
 
-                /*	sprintf(BuffTemp,"<%d>",(FrecTemp));
-                	SendToBuffStr(BuffTemp);
-                for (y = 0; y < 32; y++ )
-                {
-                sprintf(BuffTemp,"   <%07d>", (Buff_16PointD [y]-65535));
-                SendToBuffStr(BuffTemp);
-                }		*/
+                    /*	sprintf(BuffTemp,"<%d>",(FrecTemp));
+                    	SendToBuffStr(BuffTemp);
+                    for (y = 0; y < 32; y++ )
+                    {
+                    sprintf(BuffTemp,"   <%07d>", (Buff_16PointD [y]-65535));
+                    SendToBuffStr(BuffTemp);
+                    }		*/
 
-            }
+                }
 
 
 
@@ -387,46 +401,46 @@
 
 
 
-            LPC_GPIO2->FIOSET |= 0x0000004;		// turn on the LED
+                LPC_GPIO2->FIOSET |= 0x0000004;		// turn on the LED
 
 
-            Curr_Cnt_Vib = LPC_QEI->POS;		// записать в переменную	Curr_Cnt_Vib текущее положение Энкодера.	(текущее количество импульсов)
-            Latch_Event(); //определение защелки
+                Curr_Cnt_Vib = LPC_QEI->POS;		// записать в переменную	Curr_Cnt_Vib текущее положение Энкодера.	(текущее количество импульсов)
+                Latch_Event(); //определение защелки
 
-            clc_Pulses(); // счетчик импульсов. RATE_REPER_OR_REFMEANDR или RATE_VIBRO_1
+                clc_Pulses(); // счетчик импульсов. RATE_REPER_OR_REFMEANDR или RATE_VIBRO_1
 
 
-            //ADC_Input();  // проверка флагов заполнения буфера и четение Thermo1, Thermo2, HF_out в масив  Input.ArrayIn[n].
-            //DAC_ADC_Exchange();//  проверка флагов заполнения буфера и зпись в ЦАПы.
-            ServiceTime();//секундный таймер.
-            clc_ThermoSensors();//расчет средней температуры за секунду
-            clc_HFO(); //расчет значения для передачи в контур ГВЧ(на цап).
+                //ADC_Input();  // проверка флагов заполнения буфера и четение Thermo1, Thermo2, HF_out в масив  Input.ArrayIn[n].
+                //DAC_ADC_Exchange();//  проверка флагов заполнения буфера и зпись в ЦАПы.
+                ServiceTime();//секундный таймер.
+                clc_ThermoSensors();//расчет средней температуры за секунду
+                clc_HFO(); //расчет значения для передачи в контур ГВЧ(на цап).
 
-            clc_PLC();
-            //	clc_Dith_regulator();
-            clc_OutFreq_regulator();
-            Output.Str.WP_sin = clc_WP_sin();
-            contrl_GLD();
-            G_Photo_Exchange();
-            //  Output.Str.T_Vibro = paramV*48;
+                clc_PLC();
+                //	clc_Dith_regulator();
+                clc_OutFreq_regulator();
+                Output.Str.WP_sin = clc_WP_sin();
+                contrl_GLD();
+                G_Photo_Exchange();
+                //  Output.Str.T_Vibro = paramV*48;
 
 
-            Line_1_Rcv();
-            decode_CMD();
-            transm_DAT();
-            //îòêëþ÷åíèå ïîäæèãà.
+                Line_1_Rcv();
+                decode_CMD();
+                transm_DAT();
+                //îòêëþ÷åíèå ïîäæèãà.
 
 
 //			data_Rdy &= ~RESET_PERIOD;
 
 
-            LPC_PWM1->IR = 0x0001;				 //e. clear interrupt flag
-            LPC_GPIO2->FIOCLR |= 0x0000004;		// turn off the LED
+                LPC_PWM1->IR = 0x0001;				 //e. clear interrupt flag
+                LPC_GPIO2->FIOCLR |= 0x0000004;		// turn off the LED
 
 //		WDTFeed();
 //SPI_Exchange();
 
-        }
+            }
 
     }	while ( 1 );	    // main infinie loop
 }