Dmitry Kovalev
/
LG2
fork
Fork of LG by
Diff: QEI.c
- Revision:
- 207:d1ce992f5d17
- Parent:
- 205:775d54fdf646
- Child:
- 208:19150d2b528f
diff -r 00341a03e05c -r d1ce992f5d17 QEI.c --- a/QEI.c Tue Dec 20 14:08:17 2016 +0000 +++ b/QEI.c Fri Jan 13 08:27:28 2017 +0000 @@ -15,7 +15,7 @@ unsigned int CaunAddMin =0;//счетчик ипульсов энкодера"-" за такт ВП int unsigned Cur_QEI, Last_QEI; //текушее и предыдущее,(единичное) значение энкодера - +int temp32=0; int Buff_1Point [512]; int Buff_32Point [32]; int Buff_64Point [32]; @@ -28,11 +28,16 @@ { Dif_QEI=0; Cur_QEI = LPC_QEI->POS & 0xFFFF; // считывание текущего значения энкодера. + + + //LPC_QEI->CON = 0xF; Dif_QEI = (Cur_QEI - Last_QEI); // получение приращения.() - + temp32 = Dif_QEI; + Gyro.CuruAngle32 += temp32; + temp32=0; Last_QEI = Cur_QEI; // запись текущего значения энкодера в регистр предыдущего значения. - + if (Dif_QEI < -0xfff) Dif_QEI += 0x10000; // обработка прохода значения через ноль if (Dif_QEI > 0xfff) Dif_QEI -= 0x10000; // обработка прохода значения через ноль Buff_1Point[CountV255] = Dif_QEI ; // накопление в буфер еденичных значений приращения по каждому такту. @@ -54,6 +59,9 @@ Gyro.Cnt_Dif = (Pulse_32Point); Buff_32Point[CountV31] = (Pulse_32Point ); + + + Pulse_64Point += Buff_1Point[CountV255]; Pulse_64Point -= Buff_1Point[(CountV255-32) & 0xff]; // заполнение буфера накопленых приращений за два 32 тактов Gyro.Cnt_Dif = (Pulse_64Point);