igor Apu / Mbed 2 deprecated LG Featured

Dependencies:   mbed

Fork of LG by igor Apu

Files at this revision

API Documentation at this revision

Comitter:
Kovalev_D
Date:
Fri Apr 08 14:20:35 2016 +0000
Parent:
123:6dd1df6230e9
Child:
125:9400e64d0636
Commit message:
Delta500Hz Delta_ext

Changed in this revision

Command.c Show annotated file Show diff for this revision Revisions of this file
Global.c Show annotated file Show diff for this revision Revisions of this file
Global.h Show annotated file Show diff for this revision Revisions of this file
MTimer.c Show annotated file Show diff for this revision Revisions of this file
MTimer.h Show annotated file Show diff for this revision Revisions of this file
main.c Show annotated file Show diff for this revision Revisions of this file
system_LPC17xx.c Show annotated file Show diff for this revision Revisions of this file
uart_m.c Show annotated file Show diff for this revision Revisions of this file
vibro.c Show annotated file Show diff for this revision Revisions of this file
vibro.h Show annotated file Show diff for this revision Revisions of this file
--- a/Command.c	Thu Apr 07 20:16:24 2016 +0000
+++ b/Command.c	Fri Apr 08 14:20:35 2016 +0000
@@ -11,6 +11,7 @@
 unsigned int Param4=0;
 unsigned int Consol=123;
 unsigned int TempParam=1;
+unsigned int CountParam=0;
 /*
 void exec_CMD(void)       //r. === процедура окончательной дешифрации и исполнения команды
 {
@@ -25,34 +26,341 @@
 {
 
     BuffTemp[0] =  Gyro.SOC_Out;
-    BuffTemp[1] =  Gyro .My_Addres;
-    BuffTemp[2] =  Gyro .Firmware_Version;
-    BuffTemp[3] = Gyro .GLD_Serial;
+    BuffTemp[1] =  Gyro.My_Addres;
+    BuffTemp[2] =  Gyro.Firmware_Version;
+    BuffTemp[3] = Gyro.GLD_Serial;
     BuffTemp[4]=0x00;
     BuffTemp[5]=0x00;
     Check(BuffTemp, 8);
     WriteConN (BuffTemp,8);
    
 }
-void CMD_Rate3(void)
-{	
+void CMD_Delta_500Hz(void)
+{   
+    Gyro.Delta500_Event=0;
     unsigned int Temp;
-    BuffTemp[ 0] = Gyro.SOC_Out;
+	BuffTemp[ 0] = Gyro.SOC_Out;
     BuffTemp[ 1] = Gyro.My_Addres;
+    
+    Temp = Gyro.CuruAngle;
+    Gyro.CuruAngle = 0;
+
+    BuffTemp[ 2] =(Temp >> 8) & 0xff;//старший байт разности счетчиков
+    BuffTemp[ 3] =(Temp >> 0) & 0xff;//младший байт разности счетчиков
+    
+    BuffTemp[ 4] = CountParam;
+     switch(CountParam) {
+   
+   
+      
+    //F_ras  
+     case 0:
+           Temp = Gyro.F_ras;
+           BuffTemp[5] = (Temp >> 8) & 0xff;
+     break;  
+     
+     case 1:
+           BuffTemp[5] = (Temp >> 0) & 0xff;
+     break; 
+    
+    
+     
+     //HFO
+     case 2:
+           Temp = 0;//HFO
+           BuffTemp[5] = (Temp >> 8) & 0xff;
+     break;     
+     
+     case 3:
+           Temp = 0;//HFO
+           BuffTemp[5] = (Temp >> 0) & 0xff;
+     break;  
+   
+   
+     
+     //T_Vibro
+     case 4:
+           Temp = (unsigned int)((7680000*16/(Gyro.Frq>>12))); 
+           BuffTemp[5] = (Temp >> 8) & 0xff;
+     break;  
+    
+     case 5:
+           BuffTemp[5] = (Temp >> 0) & 0xff;
+     break; 
+    
+    
+     
+     //L_Vibro  
+     case 6:
+          Temp = (unsigned int)(((7680000*16/200) *Gyro.AmpPer /(Gyro.Frq>>12))); 
+          BuffTemp[5]  =  (Temp >> 8) & 0xff;
+ 
+     break;  
+   
+     case 7:
+          BuffTemp[5]  =  (Temp >> 0) & 0xff;
+     break;  
+     
+     
+     
+     //Напряжение на регуляторе периметра
+     case 8:
+          Temp = Spi.DAC_B - 0x7fff;
+          BuffTemp[5] =  (Temp >> 8) & 0xff;
+  
+     break;  
+   
+     case 9:
+          BuffTemp[5] =  (Temp >> 0) & 0xff;
+     break;  
+     
+     
+     
+     //темпкратурный канал 0
+     case 10:
+          Temp = 100;
+          BuffTemp[5] =  (Temp >> 8) & 0xff;
 
-    Temp=0x00;
-    BuffTemp[ 2] =(Temp >> 8) & 0xff;//
-    BuffTemp[ 3] =(Temp >> 0) & 0xff;//
-    Temp=0x00;
-    BuffTemp[ 4] =(Temp >> 8) & 0xff;//
-    BuffTemp[ 5] =(Temp >> 0) & 0xff;//
+     break;  
+    
+     case 11:
+         BuffTemp[5] =  (Temp >> 0) & 0xff;
+     break;
+     
+       
+       
+     //темпкратурный канал 1 
+     case 12:
+        Temp = Gyro.AD_Slow >> 16;
+        BuffTemp[5] = (Temp >> 8) & 0xff;
+   
+     break;  
+   
+     case 13:
+        BuffTemp[5] = (Temp >> 0) & 0xff;
+     break; 
+     
+          
+      
+     //ток 1
+     case 14:
+        Temp = Gyro.In1;
+        BuffTemp[5] = (Temp >> 8) & 0xff;//in1//2
+        
+     break;  
+    
+     case 15:
+        BuffTemp[5] = (Temp >> 0) & 0xff;
+     break; 
+     
+      
+      
+     //ток 2
+     case 16:
+        Temp = Gyro.In2;
+        BuffTemp[5] = (Temp >> 8) & 0xff;
+     break;  
+     
+     case 17:
+        BuffTemp[5] = (Temp >> 0) & 0xff;//in2//3      
+     break;  
+     
+     
+     
+     //разностный температурный канал Delta Temp
+     case 18:
+        Temp = Gyro.DeltaT;
+        BuffTemp[5] = (Temp >> 8) & 0xff;//дельта
+     break;  
+    
+     case 19:
+        BuffTemp[5] = (Temp >> 0) & 0xff;
+     break; 
+     
+     
+     
+     //температурный канал 5
+     case 20:
+        Temp = Gyro.Termo;//0xa4=164
+        BuffTemp[5] =(Temp >> 8) & 0xff;//температура
+    
+     break;       
+     
+     case 21:
+        BuffTemp[5] =(Temp >> 0) & 0xff;//ADC6   sesnsor 5
+     break; 
+     } 
+    Check(BuffTemp, 6);
+    WriteConN (BuffTemp,6);  
+    CountParam++;
+    
+    if(CountParam>21)CountParam=0;//зацикливания буфера от 0 до 21
+    
+}
+void CMD_Delta_Ext(void)
+{   
+    unsigned int Temp;
+	BuffTemp[ 0] = Gyro.SOC_Out;
+    BuffTemp[ 1] = Gyro.My_Addres;
+    
+    Temp = Gyro.CuruAngle;
+    Gyro.CuruAngle = 0;
+
+    BuffTemp[ 2] =(Temp >> 8) & 0xff;//старший байт разности счетчиков
+    BuffTemp[ 3] =(Temp >> 0) & 0xff;//младший байт разности счетчиков
+    
+    BuffTemp[ 4] = CountParam;
+     switch(CountParam) {
+   
+   
+      
+    //F_ras  
+     case 0:
+           Temp = Gyro.F_ras;
+           BuffTemp[5] = (Temp >> 8) & 0xff;
+     break;  
+     
+     case 1:
+           BuffTemp[5] = (Temp >> 0) & 0xff;
+     break; 
+    
+    
+     
+     //HFO
+     case 2:
+           Temp = 0;//HFO
+           BuffTemp[5] = (Temp >> 8) & 0xff;
+     break;     
+     
+     case 3:
+           Temp = 0;//HFO
+           BuffTemp[5] = (Temp >> 0) & 0xff;
+     break;  
+   
+   
+     
+     //T_Vibro
+     case 4:
+           Temp = (unsigned int)((7680000*16/(Gyro.Frq>>12))); 
+           BuffTemp[5] = (Temp >> 8) & 0xff;
+     break;  
+    
+     case 5:
+           BuffTemp[5] = (Temp >> 0) & 0xff;
+     break; 
+    
+    
+     
+     //L_Vibro  
+     case 6:
+          Temp = (unsigned int)(((7680000*16/200) *Gyro.AmpPer /(Gyro.Frq>>12))); 
+          BuffTemp[5]  =  (Temp >> 8) & 0xff;
  
-    Check(BuffTemp, 44);
-    WriteConN (BuffTemp,44);
+     break;  
+   
+     case 7:
+          BuffTemp[5]  =  (Temp >> 0) & 0xff;
+     break;  
+     
+     
+     
+     //Напряжение на регуляторе периметра
+     case 8:
+          Temp = Spi.DAC_B - 0x7fff;
+          BuffTemp[5] =  (Temp >> 8) & 0xff;
+  
+     break;  
+   
+     case 9:
+          BuffTemp[5] =  (Temp >> 0) & 0xff;
+     break;  
+     
+     
+     
+     //темпкратурный канал 0
+     case 10:
+          Temp = 100;
+          BuffTemp[5] =  (Temp >> 8) & 0xff;
+
+     break;  
+    
+     case 11:
+         BuffTemp[5] =  (Temp >> 0) & 0xff;
+     break;
+     
+       
+       
+     //темпкратурный канал 1 
+     case 12:
+        Temp = Gyro.AD_Slow >> 16;
+        BuffTemp[5] = (Temp >> 8) & 0xff;
+   
+     break;  
+   
+     case 13:
+        BuffTemp[5] = (Temp >> 0) & 0xff;
+     break; 
+     
+          
+      
+     //ток 1
+     case 14:
+        Temp = Gyro.In1;
+        BuffTemp[5] = (Temp >> 8) & 0xff;//in1//2
+        
+     break;  
+    
+     case 15:
+        BuffTemp[5] = (Temp >> 0) & 0xff;
+     break; 
+     
+      
+      
+     //ток 2
+     case 16:
+        Temp = Gyro.In2;
+        BuffTemp[5] = (Temp >> 8) & 0xff;
+     break;  
+     
+     case 17:
+        BuffTemp[5] = (Temp >> 0) & 0xff;//in2//3      
+     break;  
+     
+     
+     
+     //разностный температурный канал Delta Temp
+     case 18:
+        Temp = Gyro.DeltaT;
+        BuffTemp[5] = (Temp >> 8) & 0xff;//дельта
+     break;  
+    
+     case 19:
+        BuffTemp[5] = (Temp >> 0) & 0xff;
+     break; 
+     
+     
+     
+     //температурный канал 5
+     case 20:
+        Temp = Gyro.Termo;//0xa4=164
+        BuffTemp[5] =(Temp >> 8) & 0xff;//температура
+    
+     break;       
+     
+     case 21:
+        BuffTemp[5] =(Temp >> 0) & 0xff;//ADC6   sesnsor 5
+     break; 
+     } 
+    Check(BuffTemp, 6);
+    WriteConN (BuffTemp,6);  
+    CountParam++;
+    
+    if(CountParam>21)CountParam=0;//зацикливания буфера от 0 до 21
 }
+
 void CMD_Rate2(void)
 {
-	Rate2VibFlag=0;
+	Gyro.Rate2_Event=0;
     BuffTemp[ 0] = Gyro.SOC_Out;
     BuffTemp[ 1] = Gyro.My_Addres;
 
@@ -62,17 +370,15 @@
  
     BuffTemp[ 4] =(Gyro.CaunMin >> 8) & 0xff;//старший байт счетчика -.
     BuffTemp[ 5] =(Gyro.CaunMin >> 0) & 0xff;//младший байт счетчика -.
- 
-
- 
- 
+  
     Check(BuffTemp, 8);
     WriteConN (BuffTemp,8);
 }
+
 void CMD_Rate(void)
 {
-  
-     
+   
+    Gyro.Rate1_Event=0;
    	unsigned int Temp;
     
     Gyro.Firmware_Version=0xff; /// промежуточная затычка
@@ -353,7 +659,13 @@
             lengf=6;
             CRC_N=44;
             break;
-
+            
+        case 0xA0://Delta_PS
+            lengf=6;
+            CRC_N=8;
+            break;
+            
+            
         case 0xB0://DeviceMode
 
             lengf=6;
@@ -441,12 +753,19 @@
             switch(Gyro.CMD_In) {
                 Rate_Flag=0;
                 case 0x99:
-                	Rate_Flag=0;
+                    Gyro.ModeOut=0;
                     CMD_Maintenance();
-                  
+                break;
+                case 0xA0:
+                  TempParam=(BuffTemp[3]) & 0x90; 
+                  if      (TempParam==Delta_500)        CMD_Delta_500Hz();
+                  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;
                 case 0xD8:
                     CMD_M_Control_D8();
+                    break;
                 case 0xD9:
                     CMD_M_Control_D9();
                     break;
@@ -454,13 +773,11 @@
                     CMD_M_Stymul();
                     break;
                 case 0xDD:
-                 Rate_Flag=0;
-                 TempParam=(BuffTemp[3]) & 0x9f;
-                 if      (TempParam == 0x01)        { Rate_Flag=0; CMD_Rate(); 			WriteCon("Rate11");}
-                 else if (TempParam == 0x02)        { Rate_Flag=0; CMD_Rate2(); 		WriteCon("Rate21");}
-                 else if (TempParam == 0x81)        { Rate_Flag=1; 						WriteCon("Rate12");}
-                 else if (TempParam == 0x82)        { Rate_Flag=2; Rate2VibFlag==0;		WriteCon("Rate22");}
-
+                 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:
                     CMD_M_vib();
--- a/Global.c	Thu Apr 07 20:16:24 2016 +0000
+++ b/Global.c	Fri Apr 08 14:20:35 2016 +0000
@@ -8,11 +8,14 @@
 unsigned char	BuffTemp[100];
 unsigned char 	Time[500];
 unsigned int 	Event1Hz;
+unsigned int 	Event500Hz;
 unsigned int 	Event1K ;
 unsigned int 	Event100K;
 unsigned int 	EventVibro;
+
+unsigned int 	Time100K;
 unsigned int 	Time1K;
-unsigned int 	Time100K;
+unsigned int 	Time500Hz;
 unsigned int 	Time1Hz;
 unsigned int 	Clock1Hz;
 unsigned int    ShiftD;
@@ -48,6 +51,8 @@
     Clock1Hz	= 0;
     ShiftD		= 0;
     ShiftL		= 0;
+    Event500Hz  = 0;
+    Time500Hz   = 0;
 /////////////////////////////////////////////
 /////////////////////////////////////////////
 
--- a/Global.h	Thu Apr 07 20:16:24 2016 +0000
+++ b/Global.h	Fri Apr 08 14:20:35 2016 +0000
@@ -49,12 +49,14 @@
 extern unsigned char BuffTemp[];
 extern unsigned char Time[];
 extern unsigned int    Event1Hz;
+extern unsigned int    Event500Hz;
 extern unsigned int    Event1K;  
 extern unsigned int    Event100K;  
 extern unsigned int    EventVibro;
 extern unsigned int    Time1K;  
 extern unsigned int    Time100K;  
 extern unsigned int    Time1Hz;
+extern unsigned int    Time500Hz;
 extern unsigned int    Clock1Hz;  
 
 extern void GLD_Init(void);
--- a/MTimer.c	Thu Apr 07 20:16:24 2016 +0000
+++ b/MTimer.c	Fri Apr 08 14:20:35 2016 +0000
@@ -13,7 +13,7 @@
 //unsigned int CountVf=0 ;
 unsigned int CountV31=0;
 unsigned int CountV255=0,f ;
-
+int loop=0;
 
 
 
@@ -34,16 +34,13 @@
 {   int i,t;
     
     if (Event1Hz)	
-    {
-
-   
-        
-       
+    {  
+       Gyro.Rate1_Event = 1; 
        Event1Hz--;
        Time1Hz++;
        Discharg ();
        BackLight ();
-       if(Rate_Flag == 1) CMD_Rate();
+       
     }
 }
 /////////////////////////////////////////////////////
@@ -55,19 +52,35 @@
     {
         Event1K --;
         Time1K++;//первый ++ работает каждые 125 (event100kHz)второй был в 100 кГц
-        
-    /*
-     */ 
+        Time500Hz++;
+     LoopOn
         if (Time1K == 1000) 
         {
             Time1K = 0;
             Event1Hz ++;
-            /*Time1Hz++;*/
+           
         }
-       // LoopOff
+        if (Time500Hz == 2) 
+        {
+            Time500Hz = 0;
+            Event500Hz ++;
+       }
+       LoopOff
           
     }
 }
+void Event_500Hz(void)// событие раз в 500 Гц
+{
+	if(Event500Hz)
+	{  // if(loop=0)BackLightON 
+	   // else {BackLightOFF loop=1;}
+		BackLightON 
+		Event500Hz--;
+		Gyro.Delta500_Event=1;
+		BackLightOFF
+		
+	}
+}
 /////////////////////////////////////////////////////
 ///////////////////// 100kHz //////////////////////////
 /////////////////////////////////////////////////////
@@ -75,20 +88,19 @@
 {
     if (Event100K)	{
         Event100K --;
-BackLightON       
+//BackLightON       
         
-        if (OutBufCon1Count)  {
-            OutBufCon1Count--;   // обратный отсчет для управления ногой и формирование задержки на выдачу
-        }
-        
-        PinCheng();	// чтение регистра состояния выводов(вибро, полсветка, поджиг, LED) и управление выводами.
+        if (OutBufCon1Count)OutBufCon1Count--;  // обратный отсчет для управления ногой и формирование задержки на выдачу
+       
+         PinCheng();	// чтение регистра состояния выводов(вибро, полсветка, поджиг, LED) и управление выводами.
         
         Time100K++;
-        if (Time100K == 100) {//(было 100)  125 так 1кГц и 1 Гц ближе к правде.
+        if (Time100K == 100)
+         {
             Time100K = 0;
             Event1K ++;
-        }
-BackLightOFF
+         }
+//BackLightOFF
     }
 }
 /////////////////////////////////////////////////////
@@ -149,7 +161,7 @@
 //////////////////////////////////////////////////////////////////////
 unsigned int Init_TIM2 (void)
 {
-    LPC_TIM2->MR0 = 250;
+    LPC_TIM2->MR0 = 257;
     LPC_TIM2->MCR = 3;				/* Interrupt and Reset on MR0 */
     NVIC_EnableIRQ(TIMER2_IRQn);
     return 1;
@@ -207,7 +219,7 @@
 {
     LPC_TIM2->IR = 1;
 
-LoopOn  
+
     Global_Time++;
 
     Time_UART++;
@@ -217,5 +229,5 @@
     Gyro.VibroOutF=1;
     
     Event100K ++;
-LoopOff
+
 }
\ No newline at end of file
--- a/MTimer.h	Thu Apr 07 20:16:24 2016 +0000
+++ b/MTimer.h	Fri Apr 08 14:20:35 2016 +0000
@@ -9,7 +9,7 @@
 extern unsigned int CountV31;
 extern unsigned int CountV255;
 
-
+extern void Event_500Hz(void);
 extern void Event_1Hz(void);        // событие раз в 1 Гц
 extern void Event_1KHz(void)  ;     // событие раз в 1 кГц
 extern void Event_100KHz(void);     //событие раз в 100кГц
--- a/main.c	Thu Apr 07 20:16:24 2016 +0000
+++ b/main.c	Fri Apr 08 14:20:35 2016 +0000
@@ -58,8 +58,8 @@
 
 
     UART_InitSet (0, 921600, 0x03);  // надо проверить, мож чо с ногам
-//    UART_InitSet (1, 992600, 0x03);
-    UART_InitSet (1, 115200, 0x03);
+    UART_InitSet (1, 921600, 0x03);
+   //UART_InitSet (1, 115200, 0x03);
     
     ////////////
     //DAC_ADC_Exchange_Init();  // инициализация  обмена АЦП и ЦАП.
@@ -260,14 +260,22 @@
           
         Event_100KHz();
         Event_1KHz();
+        Event_500Hz();
         Event_1Hz();
-       
+        
         Event_Vibro();
-	
-	if((Rate2VibFlag==1) && (Rate_Flag==2))CMD_Rate2();//набор rate2 выдается по выставлению (логической)ноги в 1.
-	
-
-
+        
+	 switch(Gyro.ModeOut) {
+     case 1:
+            if(Gyro.Rate1_Event==1)CMD_Rate();
+     break;  
+     case 2:
+            if(Gyro.Rate2_Event==1)CMD_Rate2();
+     break;   
+     case 3:
+            if(Gyro.Delta500_Event==1)CMD_Delta_500Hz();
+     break;       		
+     } 
 	if (Spi.ADC_NewData == 1)  // был приход новых данных по ацп сдесь сделать обработку информации и подготовку для выдачи делается 1 раз за вибро
 	{
 // можно апихнкть в функцию
--- a/system_LPC17xx.c	Thu Apr 07 20:16:24 2016 +0000
+++ b/system_LPC17xx.c	Fri Apr 08 14:20:35 2016 +0000
@@ -322,7 +322,7 @@
 //  bits 0...14 - PLL0 multiplier value minus 1. Supported multiplier M range 6...512
 //  bits 16...23 - PLL0 Pre-Divider value minus 1. Supported divider N range 1...32
 //  Fcc0 = (2 * M * Fin) / N
-#define PLL0CFG_Val           0x00050063//M - 100, N - 6, output = 2 * 100 * 12MHz / 6 = 400MHz
+#define PLL0CFG_Val           0x00040055//M - 86, N - 5, output = 2 * 86 * 12MHz / 5 = 400MHz
 
 #define PLL1_SETUP            1
 #define PLL1CFG_Val           0x00000023//M - 36, N - 1, output = 2 * 36 * 12MHz / 1 = 864MHz?
--- a/uart_m.c	Thu Apr 07 20:16:24 2016 +0000
+++ b/uart_m.c	Fri Apr 08 14:20:35 2016 +0000
@@ -33,8 +33,8 @@
 
 
 //#define FPCLK                   (100000000 / 4)                        //� pll  
-#define FPCLK                   (100000000)                        //� pll  
-
+//#define FPCLK                   (100000000)                        //� pll  
+  #define FPCLK                   (103200000)        
 //#define FPCLK                     (25000000)                        //� pll  
 
 
@@ -218,7 +218,7 @@
     LPC_UART3->DLM  = 	usFdiv / 256;
     LPC_UART3->DLL  = 	usFdiv % 256; 
     LPC_UART3->LCR  =  	SetLsr; 
-		LPC_UART3->FCR  = 	0x07;
+	LPC_UART3->FCR  = 	0x07;
 }
 
 
--- a/vibro.c	Thu Apr 07 20:16:24 2016 +0000
+++ b/vibro.c	Fri Apr 08 14:20:35 2016 +0000
@@ -119,6 +119,11 @@
 //////////////////////////////////////////////////////////////////////////////
 void cheng(void)
 {  
+    
+ /*   
+if (CountV255 == 0) Gyro.Rate2_Event=1; 
+if (CountV255 == 127) Gyro.Rate2_Event=1;  
+*/
     switch(CountV31) {
      case 0:
           
@@ -131,7 +136,7 @@
 	 case 16:
             Time_vibro=0;
             Gyro.VibroFrqRegulF=1;
-            Rate2VibFlag=1;
+            Gyro.Rate2_Event=1;
      break;
             
 	 case 24:
--- a/vibro.h	Thu Apr 07 20:16:24 2016 +0000
+++ b/vibro.h	Fri Apr 08 14:20:35 2016 +0000
@@ -19,11 +19,23 @@
 extern int tempAMP;
 typedef struct _Gyro {
     
-   unsigned int OutMode;
-   #define  Rate1     0x1<<0
-   #define  Rate2     0x1<<1
-   #define  Delta500  0x1<<2
-   #define  DeltaEXT  0x1<<3
+   unsigned int ModeOut;
+   unsigned int Rate1_Flag;
+   unsigned int Rate1_Event;
+   unsigned int Rate2_Flag;
+   unsigned int Rate2_Event;
+   #define  Rate1       0x01    
+   #define  Rate2       0x02  
+   #define  PRate1      0x81
+   #define  PRate2      0x82
+   
+   
+   unsigned int DeltaEXT_Event;
+   unsigned int Delta500_Event;
+   #define   Delta_500   0x0
+   #define  PDelta_500   0x80
+   #define   Delta_EXT   0x10
+   #define  PDelta_EXT   0x90
    unsigned int RgConA;
    unsigned int RgConB;