fork

Dependencies:   mbed

Fork of LG by igor Apu

Revision:
112:4a96133a1311
Parent:
108:030cdde08314
Child:
169:140743e3bb96
--- a/QEI.c	Mon Apr 04 03:21:25 2016 +0000
+++ b/QEI.c	Mon Apr 04 11:09:56 2016 +0000
@@ -13,76 +13,44 @@
 int Pulse_16Point;
 int Pulse_32Point;
 int Pulse_16PointD;
-int Iras=0,Temp_F_ras=0;
 
-int CaunAddPlus	=0;
-int CaunAddMin	=0;
-
-int CaunPlus	=0;
-int CaunMin		=0;
+int CaunAddPlus	=0;//счетчик ипульсов энкодера"+" за такт ВП
+int CaunAddMin	=0;//счетчик ипульсов энкодера"-" за такт ВП
 
-
-
+int unsigned Cur_QEI, Last_QEI; //текушее и предыдущее,(единичное) значение энкодера
 
-int yy = 0;
-
-
-
-
+int Buff_1Point			[256];			// этот на 256
 int Buff_32Point		[32];			
 int Buff_16Point		[32];
 int Buff_16PointD		[32];
 int Buff_8Point			[32];
 int Buff_Restored_sin 	[32];
 
-int Buff_1Point			[256];			// этот на 256
-
-
-
-int unsigned Cur_QEI, Last_QEI;
-
-// ДАВАЙ попробуем сделать буфера в целых (знаковы)
-/*__irq void QEI_IRQHandler (void)
-{
-    Cur_QEI =  LPC_QEI->POS & 0xFFFF;		//e. read accumulated value of counter
-    LPC_QEI->CLR = 0x1fff;			//e. reset interrupt request //r. сбросить запрос прерывания
-}*/
-
 void D_QEI(void)
 {
     Dif_QEI=0;
     Cur_QEI  =  LPC_QEI->POS & 0xFFFF; // считывание текущего значения энкодера.
     Dif_QEI  =  (Cur_QEI - Last_QEI);  // получение приращения.()
     Last_QEI =  Cur_QEI;               // запись текущего значения энкодера в регистр предыдущего значения.
+
     if (Dif_QEI < -0xfff)  Dif_QEI += 0x10000;   // обработка прохода значения через ноль
     if (Dif_QEI >  0xfff)  Dif_QEI -= 0x10000;    // обработка прохода значения через ноль
     Buff_1Point[CountV255] = Dif_QEI ; 	// накопление в буфер еденичных значений приращения по каждому такту.
 
- 
-    ////////////////////////////////////////////////////////////////////////////////////////////
-    ///////////////////////////////////////////////////////////////////////////////////////////
-/*
-    if (LPC_QEI->STAT) {					//e. "+" direction //r. стали вращаться в "+" сторону
-        Gyro.Cnt_Mns -= Cur_QEI;
-    } else {
-        Gyro.Cnt_Pls = Cur_QEI;
-    }
-*/
-    ////////// ???? Заплатка
-    ////////// ???? Проблема начального заполнения буферов
+
     //////////////////////////////////////////////////////////////////////////////////////////////
         Pulse_8Point += Buff_1Point[CountV255];
         Pulse_8Point -= Buff_1Point[(CountV255-8) & 0xff];                    // заполнение буфера накопленых приращений за 8 тактов
-        Buff_8Point[CountV31] = /*(unsigned int)*/ (Pulse_8Point/* + 0xffff*/);
+        Buff_8Point[CountV31] = (Pulse_8Point);
 
         Pulse_16Point += Buff_1Point[CountV255];
         Pulse_16Point -= Buff_1Point[(CountV255-16) & 0xff];									// заполнение буфера накопленых приращений за 16 тактов
-        Buff_16Point[CountV31] = /*(unsigned int)*/ (Pulse_16Point /*+ 0xffff*/);
+        Buff_16Point[CountV31] =  (Pulse_16Point );
 
         Pulse_32Point += Buff_1Point[CountV255];
         Pulse_32Point -= Buff_1Point[(CountV255-32) & 0xff];  								// заполнение буфера накопленых приращений за 32 тактов
-        Gyro.Cnt_Dif  =  (Pulse_32Point/*+ 0xffff*/);
-        Buff_32Point[CountV31] = /*(unsigned int)*/ (Pulse_32Point /*+ 0xffff*/);
+        Gyro.Cnt_Dif  =  (Pulse_32Point);
+        Buff_32Point[CountV31] = (Pulse_32Point );
 
         Pulse_16PointD += Buff_1Point[CountV255];
         Pulse_16PointD -= Buff_1Point[(CountV255-16) & 0xff];									// заполнение буфера накопленых приращений за 16 тактов Двойныз
@@ -94,11 +62,10 @@
         Buff_Restored_sin [CountV31]= Buff_16PointD [ CountV31] - Buff_32Point[CountV31] ;
 
    	
- //  	if(Buff_Restored_sin [CountV31] > 0)Temp_F_ras += Buff_Restored_sin [CountV31];
- //   	else Temp_F_ras -= Buff_Restored_sin [CountV31]; 			// расчет амплитуды
+
     
     	if((Buff_Restored_sin [CountV31]) > 0)	CaunAddPlus += Buff_Restored_sin  [CountV31];
     	else 									CaunAddMin	-= (Buff_Restored_sin [CountV31]); 			// расчет амплитуды
 
-    
+        Gyro.CuruAngle += 	Buff_32Point [CountV31];
 }