fork

Dependencies:   mbed

Fork of LG by igor Apu

Committer:
Kovalev_D
Date:
Mon Apr 04 11:09:56 2016 +0000
Revision:
112:4a96133a1311
Parent:
108:030cdde08314
Child:
169:140743e3bb96
IRQ

Who changed what in which revision?

UserRevisionLine numberNew contents of line
igor_v 1:f2adcae3d304 1 #include "Global.h"
igor_v 0:8ad47e2b6f00 2
igor_v 21:bc8c1cec3da6 3
Kovalev_D 86:398da56ef751 4
Kovalev_D 86:398da56ef751 5
Kovalev_D 86:398da56ef751 6
igor_v 21:bc8c1cec3da6 7 int Dif_QEI;
igor_v 42:6fc307c4963e 8
igor_v 21:bc8c1cec3da6 9 int FFF=0;//для заплатки
igor_v 0:8ad47e2b6f00 10
igor_v 42:6fc307c4963e 11
Kovalev_D 86:398da56ef751 12 int Pulse_8Point;
Kovalev_D 86:398da56ef751 13 int Pulse_16Point;
Kovalev_D 86:398da56ef751 14 int Pulse_32Point;
Kovalev_D 86:398da56ef751 15 int Pulse_16PointD;
Kovalev_D 108:030cdde08314 16
Kovalev_D 112:4a96133a1311 17 int CaunAddPlus =0;//счетчик ипульсов энкодера"+" за такт ВП
Kovalev_D 112:4a96133a1311 18 int CaunAddMin =0;//счетчик ипульсов энкодера"-" за такт ВП
Kovalev_D 108:030cdde08314 19
Kovalev_D 112:4a96133a1311 20 int unsigned Cur_QEI, Last_QEI; //текушее и предыдущее,(единичное) значение энкодера
Kovalev_D 108:030cdde08314 21
Kovalev_D 112:4a96133a1311 22 int Buff_1Point [256]; // этот на 256
Kovalev_D 86:398da56ef751 23 int Buff_32Point [32];
igor_v 43:3f7c8a0ea59c 24 int Buff_16Point [32];
igor_v 43:3f7c8a0ea59c 25 int Buff_16PointD [32];
igor_v 43:3f7c8a0ea59c 26 int Buff_8Point [32];
igor_v 43:3f7c8a0ea59c 27 int Buff_Restored_sin [32];
Kovalev_D 108:030cdde08314 28
igor_v 21:bc8c1cec3da6 29 void D_QEI(void)
igor_v 21:bc8c1cec3da6 30 {
igor_v 21:bc8c1cec3da6 31 Dif_QEI=0;
igor_v 21:bc8c1cec3da6 32 Cur_QEI = LPC_QEI->POS & 0xFFFF; // считывание текущего значения энкодера.
igor_v 21:bc8c1cec3da6 33 Dif_QEI = (Cur_QEI - Last_QEI); // получение приращения.()
igor_v 21:bc8c1cec3da6 34 Last_QEI = Cur_QEI; // запись текущего значения энкодера в регистр предыдущего значения.
Kovalev_D 112:4a96133a1311 35
igor_v 21:bc8c1cec3da6 36 if (Dif_QEI < -0xfff) Dif_QEI += 0x10000; // обработка прохода значения через ноль
igor_v 21:bc8c1cec3da6 37 if (Dif_QEI > 0xfff) Dif_QEI -= 0x10000; // обработка прохода значения через ноль
Kovalev_D 108:030cdde08314 38 Buff_1Point[CountV255] = Dif_QEI ; // накопление в буфер еденичных значений приращения по каждому такту.
igor_v 0:8ad47e2b6f00 39
Kovalev_D 112:4a96133a1311 40
igor_v 21:bc8c1cec3da6 41 //////////////////////////////////////////////////////////////////////////////////////////////
Kovalev_D 108:030cdde08314 42 Pulse_8Point += Buff_1Point[CountV255];
igor_v 21:bc8c1cec3da6 43 Pulse_8Point -= Buff_1Point[(CountV255-8) & 0xff]; // заполнение буфера накопленых приращений за 8 тактов
Kovalev_D 112:4a96133a1311 44 Buff_8Point[CountV31] = (Pulse_8Point);
igor_v 0:8ad47e2b6f00 45
igor_v 21:bc8c1cec3da6 46 Pulse_16Point += Buff_1Point[CountV255];
igor_v 21:bc8c1cec3da6 47 Pulse_16Point -= Buff_1Point[(CountV255-16) & 0xff]; // заполнение буфера накопленых приращений за 16 тактов
Kovalev_D 112:4a96133a1311 48 Buff_16Point[CountV31] = (Pulse_16Point );
igor_v 21:bc8c1cec3da6 49
igor_v 21:bc8c1cec3da6 50 Pulse_32Point += Buff_1Point[CountV255];
igor_v 21:bc8c1cec3da6 51 Pulse_32Point -= Buff_1Point[(CountV255-32) & 0xff]; // заполнение буфера накопленых приращений за 32 тактов
Kovalev_D 112:4a96133a1311 52 Gyro.Cnt_Dif = (Pulse_32Point);
Kovalev_D 112:4a96133a1311 53 Buff_32Point[CountV31] = (Pulse_32Point );
igor_v 0:8ad47e2b6f00 54
igor_v 21:bc8c1cec3da6 55 Pulse_16PointD += Buff_1Point[CountV255];
igor_v 21:bc8c1cec3da6 56 Pulse_16PointD -= Buff_1Point[(CountV255-16) & 0xff]; // заполнение буфера накопленых приращений за 16 тактов Двойныз
igor_v 21:bc8c1cec3da6 57 Pulse_16PointD += Buff_1Point[(CountV255-32) & 0xff]; //
igor_v 21:bc8c1cec3da6 58 Pulse_16PointD -= Buff_1Point[(CountV255-48) & 0xff]; // з
igor_v 21:bc8c1cec3da6 59
Kovalev_D 108:030cdde08314 60 Buff_16PointD[CountV31] = Pulse_16PointD ;
igor_v 21:bc8c1cec3da6 61
Kovalev_D 108:030cdde08314 62 Buff_Restored_sin [CountV31]= Buff_16PointD [ CountV31] - Buff_32Point[CountV31] ;
igor_v 21:bc8c1cec3da6 63
Kovalev_D 108:030cdde08314 64
Kovalev_D 112:4a96133a1311 65
Kovalev_D 108:030cdde08314 66
Kovalev_D 108:030cdde08314 67 if((Buff_Restored_sin [CountV31]) > 0) CaunAddPlus += Buff_Restored_sin [CountV31];
Kovalev_D 108:030cdde08314 68 else CaunAddMin -= (Buff_Restored_sin [CountV31]); // расчет амплитуды
igor_v 0:8ad47e2b6f00 69
Kovalev_D 112:4a96133a1311 70 Gyro.CuruAngle += Buff_32Point [CountV31];
igor_v 21:bc8c1cec3da6 71 }