![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
fork
Fork of LG by
Diff: QEI.c
- Revision:
- 197:7a05523bf588
- Parent:
- 196:f76dbc081e63
- Child:
- 202:c03b7b128e11
- Child:
- 205:775d54fdf646
--- a/QEI.c Fri Sep 23 05:34:50 2016 +0000 +++ b/QEI.c Wed Oct 19 10:55:05 2016 +0000 @@ -1,14 +1,10 @@ #include "Global.h" - - - - int Dif_QEI; int FFF=0;//для заплатки - +unsigned int tempmod=64,tempmod2=1; int Pulse_8Point; int Pulse_16Point; @@ -32,7 +28,7 @@ { Dif_QEI=0; Cur_QEI = LPC_QEI->POS & 0xFFFF; // считывание текущего значения энкодера. - + //LPC_QEI->CON = 0xF; Dif_QEI = (Cur_QEI - Last_QEI); // получение приращения.() Last_QEI = Cur_QEI; // запись текущего значения энкодера в регистр предыдущего значения. @@ -41,7 +37,9 @@ if (Dif_QEI > 0xfff) Dif_QEI -= 0x10000; // обработка прохода значения через ноль Buff_1Point[CountV255] = Dif_QEI ; // накопление в буфер еденичных значений приращения по каждому такту. - + + + //LoopOn ////////////////////////////////////////////////////////////////////////////////////////////// Pulse_8Point += Buff_1Point[CountV255]; Pulse_8Point -= Buff_1Point[(CountV255-8) & 0xff]; // заполнение буфера накопленых приращений за 8 тактов @@ -68,7 +66,8 @@ Pulse_16PointD -= Buff_1Point[(CountV255-48) & 0xff]; // Buff_16PointD[CountV31] = Pulse_16PointD ; - + + //LoopOff Buff_Restored_sin [CountV31] = (Buff_16PointD[CountV31]) - Buff_32Point[CountV31]; Buff_Restored_sin2 [CountV31] = (Buff_16Point[CountV31]) - Buff_32Point[CountV31]; if((Buff_Restored_sin [CountV31]) > 0) @@ -76,25 +75,23 @@ CaunAddPlus += Buff_Restored_sin [CountV31]; if(Gyro.QEIznak2) { - Gyro.Reper_Event=1; + //Gyro.Reper_Event=1; Gyro.QEIznak2=0; } } // счетчик положительных импульсов else {CaunAddMin -= Buff_Restored_sin [CountV31]; Gyro.QEIznak2=1;} //счетчик отрицательных импульсов // расчет амплитуды - /* - Gyro.CuruAngle += Buff_32Point [CountV31]; - Gyro.tempdelta += Buff_Restored_sin[CountV31]; - Gyro.tempdelta2+= Buff_Restored_sin2[CountV31];*/ + + Gyro.CuruAngle += Buff_32Point [CountV31]; + } /* void CurAngle(void) { for (int i = 0; i < 32; i++ ) { - Gyro.tempdelta += Buff_Restored_sin[i]; - Gyro.CuruAngle += Buff_32Point[i]; + Gyro.CuruAngle += Buff_32Point[i]; } } void CurAngleLOG(void)