fork

Dependencies:   mbed

Fork of LG by igor Apu

Revision:
147:1aed74f19a8f
Parent:
145:f023b2f18b82
Child:
148:7ce8c1fd00f7
--- a/Command.c	Thu Apr 28 13:54:29 2016 +0000
+++ b/Command.c	Fri Apr 29 07:27:50 2016 +0000
@@ -13,15 +13,48 @@
 unsigned int TempParam=1;
 unsigned int CountParam=0;
 
-
+ int ttemp;
 
 
 unsigned int pDestT ; 
 GyroParam *Flash;
+ ///////////////flah and boot///////////
+void GoBoot(void)
+  {
+ 	/*	Prepare Sectors to be flashed */
+    NVIC_DisableIRQ(TIMER1_IRQn);
+    NVIC_DisableIRQ(TIMER2_IRQn);
+ 	NVIC_DisableIRQ(TIMER3_IRQn);
+ 	NVIC_DisableIRQ(EINT3_IRQn);
+    SystemInitDef();
+    vIAP_ReinvokeISP();
+  } 
+ 
+void WriteFlash(void)
+  {
+ 	 
+    NVIC_DisableIRQ(TIMER1_IRQn);
+    NVIC_DisableIRQ(TIMER2_IRQn);
+ 	NVIC_DisableIRQ(TIMER3_IRQn);
+ 	NVIC_DisableIRQ(EINT3_IRQn);
+ 
+   SystemInitDef();
+   WriteCon("\r\n Start Prepare Sectors");
+   if(u32IAP_PrepareSectors(18, 21) == IAP_STA_CMD_SUCCESS)
+     {
+      WriteCon("\r\nPrepare Sectors OK");
+      WriteCon("\r\n Start Erase");
+      u32IAP_EraseSectors(IMG_START_SECTOR, IMG_END_SECTOR);
+      WriteCon("\r\n AND Erase");
+     }
+     else WriteCon("\r\nPrepare Sectors ERROR");  
+          SystemInit1(); 
+          Gyro.FlashMod = 0;
+   }
   
- 
  void ReadFlash ( void)
  {
+  Gyro.FlashMod = 0;
   WriteCon("\r\n Pirivet Flash");
   pDestT= (unsigned int) (0x10000);
   Flash = (GyroParam*) pDestT;
@@ -31,7 +64,7 @@
  
  }
  
- 
+ /////////////////////////////////////////
  
  unsigned int memdump( char *base, int n )
 {
@@ -793,25 +826,24 @@
 
 void Read_CMD(void)
 {
- 
- 						
-    Gyro.RsErrLine = (Gyro.RsErrLine)& 0xffff;//для сброса ошибки
-
-    CountBuFFIn=ReadChekCon1(BuffTemp);		// чтение данных из консоли
-
-    if(CountBuFFIn==1) { 					// если есть первый байт 
-        if (BuffTemp[0] != SOC_In) {
-            ReadCon1(BuffTemp);
-            Gyro.RsErrLine += 0x100;//WriteCon("\n\r ...Error.... ");
-            BuffTemp[99]=Gyro.RsErrLine; 
-            
-        }
-    } else if(CountBuFFIn==2) {		//если второй ,fqn
-        if (BuffTemp[1] != Gyro.My_Addres) {
+ Gyro.RsErrLine = (Gyro.RsErrLine)& 0xffff;//для сброса ошибки
+ CountBuFFIn=ReadChekCon1(BuffTemp);		// чтение данных из консоли
+ if(CountBuFFIn==1) { 					// если есть первый байт 
+    if (BuffTemp[0] != SOC_In) {
+       ReadCon1(BuffTemp);
+       Gyro.RsErrLine += 0x100;//WriteCon("\n\r ...Error.... ");
+       BuffTemp[99]=Gyro.RsErrLine; 
+       }
+    } 
+    else if(CountBuFFIn==2) //если второй ,fqn
+    {		
+         if (BuffTemp[1] != Gyro.My_Addres) {
             ReadCon1(BuffTemp); 
             Gyro.RsErrLine += 0x1;//WriteCon("\n\r ...Error_ADDRES.... ");
-        }
-    } else if(CountBuFFIn==3) {				// если ьоетий байт
+          }
+    } 
+    else if(CountBuFFIn==3) // если ьоетий байт
+    {				
         Gyro.CMD_In=BuffTemp[2];
         N=Getlengf(); 
     } 
@@ -821,19 +853,18 @@
     } 
     else if((CountBuFFIn==5)&&(N==7)) 
     {
-       
         Param1=BuffTemp[3];
         Param2=BuffTemp[4];
 
     } 
     else if((CountBuFFIn==6)&&(N==8))
-     {
+    {
         Param1=BuffTemp[3];
         Param2=BuffTemp[4];
         Param3=BuffTemp[5];
     } 
     else if((CountBuFFIn==8)&&(N==10))
-     {
+    {
         Param1=BuffTemp[4];
         Param2=BuffTemp[5];
         Param3=BuffTemp[6];
@@ -842,10 +873,9 @@
   
     else if(CountBuFFIn > (N-1))
      {
-        ReadCon1(BuffTemp); 
-            switch(Gyro.CMD_In) {
-                Rate_Flag=0;
-               
+      ReadCon1(BuffTemp); 
+      switch(Gyro.CMD_In) {
+             Rate_Flag=0;
                 case 0x99:
                     Gyro.ModeOut=0;
                     CMD_Maintenance();
@@ -857,57 +887,195 @@
                   else if (TempParam==Delta_EXT)        CMD_Delta_Ext();
                   else if (TempParam==PDelta_500)      { Gyro.ModeOut=3; Gyro.Delta500_Event=0; WriteCon("Delta500"); }
                   else if (TempParam==PDelta_EXT)      { Gyro.ModeOut=4; Gyro.DeltaEXT_Event=0; WriteCon("deltaEXT"); }
-                    break;
+                break;
                
                 case 0xD8:
                     CMD_M_Control_D8();
-                    break;
+                break;
                
                 case 0xE9://чтение параметров
                     CMD_M_Param_R();
-                    break;
+                break;
                     
                 case 0xE8://запись параметра
                     CMD_M_Param_W();
-                    break;          
+                break;          
                
                 case 0xD9:
                     CMD_M_Control_D9();
-                    break;
+                break;
                
                 case 0x0A:
                     CMD_M_Stymul();
-                    break;
+                break;
                
                 case 0xDD:
-                 TempParam=(BuffTemp[3]) & 0x9f; 
-                 if      (TempParam == Rate1)        { CMD_Rate(); 		     	                    WriteCon("Rate11");}
-                 else if (TempParam == Rate2)        { CMD_Rate2(); 		                        WriteCon("Rate21");}
-                 else if (TempParam == PRate1)       { Gyro.ModeOut=1; Gyro.Rate1_Event=0;	        WriteCon("Rate12");}
-                 else if (TempParam == PRate2)       { Gyro.ModeOut=2; Gyro.Rate2_Event=0;		    WriteCon("Rate22");}
-                 break; 
+	                TempParam=(BuffTemp[3]) & 0x9f; 
+	                if      (TempParam == Rate1)        { CMD_Rate(); 		     	                    WriteCon("Rate11");}
+	                else if (TempParam == Rate2)        { CMD_Rate2(); 		                        WriteCon("Rate21");}
+	                else if (TempParam == PRate1)       { Gyro.ModeOut=1; Gyro.Rate1_Event=0;	        WriteCon("Rate12");}
+	                else if (TempParam == PRate2)       { Gyro.ModeOut=2; Gyro.Rate2_Event=0;		    WriteCon("Rate22");}
+                break; 
               
-               case 0xE4:
+                case 0xE4:
                     CMD_M_vib();
-                    break; 
+                break; 
               
                case 0xE6:
                     Gph_W();
-                    break; 
-              
-                    
-                    Gyro.RsErrLine = 0;
-                    
-                      
+               break; 
+               Gyro.RsErrLine = 0;                   
+          }
      }
-    
-    }
-//  else if(CountBuFFIn > 40 )
-//     {
-//       ReadCon1(BuffTemp); 
-//     }
+}
+void TechLog(void)
+{
+ if (ReadCon (Time)) {
+/////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////
+//////////////////////Выбор FlashMod///////////////////////////
+////////////////////////////////////////////////////////////////
 
+            if (Time[0] == 'B') {Gyro.FlashMod=1;}  
+            if (Time[0] == 'W') {Gyro.FlashMod=2;}
+            if (Time[0] == 'R') {Gyro.FlashMod=3;}
+///////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////
+            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] == 'F') {		// выдача технологическая
+                sprintf(Time,"\r\n");
+                WriteCon(Time);
+                sprintf((Time)," Gyro.Termo = <%07d>  Spi.ADC1 = <%07d>  Spi.ADC1_Accum = <%07d>",Spi.ADC4,Spi.ADC4,Spi.ADC4_Accum );
+                WriteCon(Time);
+            }   
+            if (Time[0] == 'q') {		// внешняя защелка
+                Gyro.EXT_Latch=1;
+            }   
+            if (Time[0] == '1') {		// выдача технологическая
+                sprintf(Time,"\r\n");
+                WriteCon(Time);
+                for (int i = 0; i < 32; i++ )sprintf((Time + i * 9)," <%05d> ",Buff_1Point[i]);
+                WriteCon(Time);
+            }
+            if (Time[0] == '2') {		// выдача технологическая
+                sprintf(Time,"\r\n");
+                WriteCon(Time);
+                for (int i = 0; i < 32; i++ )sprintf((Time + i * 9)," <%05d> ",    Buff_8Point[i]);
+                WriteCon(Time);
+            }
+            if (Time[0] == '3') {		// выдача технологическая
+                sprintf(Time,"\r\n");
+                WriteCon(Time);
+                for (int i = 0; i < 32; i++ )sprintf((Time + i * 9)," <%05d> ",    Buff_16Point[i]);
+                WriteCon(Time);
+            }
+            if (Time[0] == '4') {		// выдача технологическая
+                sprintf(Time,"\r\n");
+                WriteCon(Time);
+                for (int i = 0; i < 32; i++ )sprintf((Time + i * 9)," <%05d> ",    Buff_16PointD[i]);
+                WriteCon(Time);
+            }
+            if (Time[0] == 'z'){		// выдача технологическая
+                sprintf(Time,"\r\n");
+                WriteCon(Time);
+                for (int i = 0; i < 32; i++ ) 
+                  { 
+                  ttemp=(Buff_16PointD[i]);
+                  if (ttemp < 0) WriteCon("1"); else WriteCon("0");
+                  }
+            }
+            if (Time[0] == '5'){	// выдача технологическая
+                sprintf(Time,"\r\n");
+                WriteCon(Time);
+                for (int i = 0; i < 32; i++ )sprintf((Time + i * 9)," <%05d> ",Buff_32Point[i]);
+                WriteCon(Time);
+             }
+             if (Time[0] == '6') {		// выдача технологическая
+                sprintf(Time,"\r\n");
+                WriteCon(Time);
+                for (int i = 0; i < 32; i++ )sprintf((Time + i * 9)," <%05d> ",Buff_Restored_sin[i]);
+                WriteCon(Time);
+             }       
+             if (Time[0] == '7') {		// выдача технологическая
+                sprintf(Time,"\r\n");
+                WriteCon(Time);
+                for (int i = 0; i < 32; i++ )sprintf((Time + i * 10)," <%07d> ",Buff_AMP64P[i]-(Buff_AMP[i]));
+                WriteCon(Time);
+             }
+             if (Time[0] == '9') {		// выдача технологическая
+                sprintf(Time,"\r\n");
+                WriteCon(Time);
+                for (int i = 0; i < 32; i++ )sprintf((Time)," <%07d> ",Gyro.Frq);
+                WriteCon(Time);
+             }
+             if (Time[0] == 'p') {		// выдача технологическая
+                sprintf(Time,"\r\n");
+                WriteCon(Time);
+                for (int i = 0; i < 32; i++ )sprintf((Time)," <%07d> ",Cur_Amp);
+                WriteCon(Time);
+             }
+             if (Time[0] == 'm') {		// выдача технологическая
+                sprintf(Time,"\r\n");
+                WriteCon(Time);
+                sprintf((Time),"PLC_Delta  <%07d> ",	Gyro.PLC_Delta);  	    WriteCon(Time);
+                sprintf((Time),"PLC_DeltaADD  <%07d> ",	Gyro.PLC_DeltaADD);  	WriteCon(Time);
+             }
+             if (Time[0] == 'V') {		// выдача технологическая
+                Spi.DAC_B += 200;
+             }
+             if (Time[0] == 'v') {		// выдача технологическая
+                Spi.DAC_B -= 200;
+             }
+       ////////////////////////////////////////////////////////////////////////////////   
+                      /*Запись лога настройки частоты*/
+            if (Time[0] == 'y')   Gyro.LogHZ=1;           //включит передачу
+            if (Time[0] == 'u')   Gyro.StrayHZ_flag = 1;  //LPC_TIM1->MR0+1000  вносим помеху        
+            if (Time[0] == 'i')   Gyro.StrayHZ_flag = 0;  //LPC_TIM1->MR0       убираем помеху  
+            if (Time[0] == 'o')   Gyro.LogHZ=0;           //Отключить передачу
+       ////////////////////////////////////////////////////////////////////////////////////     
+                      /*Запись лога настройки периметра*/
+            if (Time[0] == 'g')   Gyro.LogPLC=1;           //включит передачу
+            if (Time[0] == 'h')   Gyro.StrayPLC_flag = 1;  //LPC_TIM1->MR0+1000  вносим помеху
+            if (Time[0] == 'j')   Gyro.StrayPLC_flag = 0;  
+            if (Time[0] == 'b')   Gyro.StrayPLC_flag = 3;  //LPC_TIM1->MR0-1000  вносим помеху
+            if (Time[0] == 'n')   Gyro.StrayPLC_flag = 2;  //LPC_TIM1->MR0       убираем помеху  
+            if (Time[0] == 'k')   Gyro.LogPLC=0;           //Отключить передачу       
+      //////////////////////////////////////////////////////////////////////////////////////     
+            if (Time[0] == '8') {		// выдача технологическая
+                sprintf(Time,"\r\n");
+                WriteCon(Time);
+                for (int i = 0; i < 32; i++ ) 
+                   { 
+                    ttemp=(Buff_AMP64P[i]-(Buff_AMP[i]));
+                    if (ttemp < 0) WriteCon("1"); else WriteCon("0");
+                   }
+              }
+             if (Time[0] == 'b') {		// выдача технологическая
+                sprintf(Time,"\r\n");
+                WriteCon(Time);
+                for (int i = 0; i < 32; i++ ) 
+                    { 
+                     ttemp=(Buff_Restored_sin[i]);
+                     if (ttemp < 0) WriteCon("1"); else WriteCon("0");
+                    }
+              }
+             if (Gyro.PLC_Error2Mode) {		// выдача технологическая
+                sprintf(Time,"\r\nPLC_Error2Mode");
+                WriteCon(Time);
+              }
+        }
 }
 
 
-