![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
fork
Fork of LG by
Diff: QEI.c
- Revision:
- 108:030cdde08314
- Parent:
- 107:4d178bcc9d8a
- Child:
- 112:4a96133a1311
--- a/QEI.c Fri Apr 01 16:13:55 2016 +0000 +++ b/QEI.c Sat Apr 02 11:15:38 2016 +0000 @@ -14,6 +14,16 @@ 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 yy = 0; @@ -24,6 +34,7 @@ int Buff_16PointD [32]; int Buff_8Point [32]; int Buff_Restored_sin [32]; + int Buff_1Point [256]; // этот на 256 @@ -43,13 +54,11 @@ 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 ; // накопление в буфер еденичных значений приращения по каждому такту. - Buff_1Point[CountV255] = /*(unsigned int)*/ (Dif_QEI /* + 0xffff*/ );// накопление в буфер еденичных значений приращения по каждому такту. - + //////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// /* @@ -62,8 +71,7 @@ ////////// ???? Заплатка ////////// ???? Проблема начального заполнения буферов ////////////////////////////////////////////////////////////////////////////////////////////// - if(1)// if(FFF==1) { // если прошло 32 такта вибро подвеса начать заполнять остальные буверы. - { Pulse_8Point += Buff_1Point[CountV255]; + Pulse_8Point += Buff_1Point[CountV255]; Pulse_8Point -= Buff_1Point[(CountV255-8) & 0xff]; // заполнение буфера накопленых приращений за 8 тактов Buff_8Point[CountV31] = /*(unsigned int)*/ (Pulse_8Point/* + 0xffff*/); @@ -81,29 +89,16 @@ Pulse_16PointD += Buff_1Point[(CountV255-32) & 0xff]; // Pulse_16PointD -= Buff_1Point[(CountV255-48) & 0xff]; // з - Buff_16PointD[CountV31] = /*(unsigned int)*/ (Pulse_16PointD /*+ 0xffff*/); + Buff_16PointD[CountV31] = Pulse_16PointD ; - Buff_Restored_sin [CountV31]= /*(unsigned int)*/( Buff_16PointD [ CountV31] /*+ 65536 */ - Buff_32Point[CountV31] ); - - - if(Buff_Restored_sin [CountV31] > 0)Temp_F_ras += Buff_Restored_sin [CountV31]; - else Temp_F_ras -= Buff_Restored_sin [CountV31]; // расчет амплитуды + Buff_Restored_sin [CountV31]= Buff_16PointD [ CountV31] - Buff_32Point[CountV31] ; - if (CountV31 == 0) { // если определеный так, то переписываем амиплитуду - Gyro.F_ras = Temp_F_ras; - Temp_F_ras = 0; - - } - + + // 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]); // расчет амплитуды - } else if(CountV255 == 255) { - FFF=1;//временная заплатка для паузы перед заполнением остальных буферов - // for (yy = 0; yy < 31; yy++ ) { - /// Buff_1Point [yy] = 0x00; - // Buff_16Point [yy] = 0x00; - // Buff_32Point [yy] = 0x00; - // Buff_16PointD [yy] = 0x0; - // } - - } + }