fork

Dependencies:   mbed

Fork of LG by igor Apu

Committer:
Kovalev_D
Date:
Fri Jul 15 14:03:47 2016 +0000
Revision:
183:7e200f4d9b16
Parent:
179:2b4e6bc277df
Child:
189:8a16378724c4
123456

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 183:7e200f4d9b16 15 int Pulse_64Point;
Kovalev_D 86:398da56ef751 16 int Pulse_16PointD;
Kovalev_D 183:7e200f4d9b16 17 int Pulse_16PointDD;
Kovalev_D 112:4a96133a1311 18 int CaunAddPlus =0;//счетчик ипульсов энкодера"+" за такт ВП
Kovalev_D 112:4a96133a1311 19 int CaunAddMin =0;//счетчик ипульсов энкодера"-" за такт ВП
Kovalev_D 108:030cdde08314 20
Kovalev_D 112:4a96133a1311 21 int unsigned Cur_QEI, Last_QEI; //текушее и предыдущее,(единичное) значение энкодера
Kovalev_D 108:030cdde08314 22
Kovalev_D 112:4a96133a1311 23 int Buff_1Point [256]; // этот на 256
Kovalev_D 183:7e200f4d9b16 24 int Buff_32Point [32];
Kovalev_D 183:7e200f4d9b16 25 int Buff_64Point [32];
igor_v 43:3f7c8a0ea59c 26 int Buff_16Point [32];
igor_v 43:3f7c8a0ea59c 27 int Buff_16PointD [32];
Kovalev_D 183:7e200f4d9b16 28 int Buff_16PointDD [64];
igor_v 43:3f7c8a0ea59c 29 int Buff_8Point [32];
igor_v 43:3f7c8a0ea59c 30 int Buff_Restored_sin [32];
Kovalev_D 108:030cdde08314 31
igor_v 21:bc8c1cec3da6 32 void D_QEI(void)
igor_v 21:bc8c1cec3da6 33 {
igor_v 21:bc8c1cec3da6 34 Dif_QEI=0;
igor_v 21:bc8c1cec3da6 35 Cur_QEI = LPC_QEI->POS & 0xFFFF; // считывание текущего значения энкодера.
igor_v 21:bc8c1cec3da6 36 Dif_QEI = (Cur_QEI - Last_QEI); // получение приращения.()
igor_v 21:bc8c1cec3da6 37 Last_QEI = Cur_QEI; // запись текущего значения энкодера в регистр предыдущего значения.
Kovalev_D 112:4a96133a1311 38
igor_v 21:bc8c1cec3da6 39 if (Dif_QEI < -0xfff) Dif_QEI += 0x10000; // обработка прохода значения через ноль
igor_v 21:bc8c1cec3da6 40 if (Dif_QEI > 0xfff) Dif_QEI -= 0x10000; // обработка прохода значения через ноль
Kovalev_D 108:030cdde08314 41 Buff_1Point[CountV255] = Dif_QEI ; // накопление в буфер еденичных значений приращения по каждому такту.
igor_v 0:8ad47e2b6f00 42
Kovalev_D 112:4a96133a1311 43
igor_v 21:bc8c1cec3da6 44 //////////////////////////////////////////////////////////////////////////////////////////////
Kovalev_D 108:030cdde08314 45 Pulse_8Point += Buff_1Point[CountV255];
igor_v 21:bc8c1cec3da6 46 Pulse_8Point -= Buff_1Point[(CountV255-8) & 0xff]; // заполнение буфера накопленых приращений за 8 тактов
Kovalev_D 112:4a96133a1311 47 Buff_8Point[CountV31] = (Pulse_8Point);
igor_v 0:8ad47e2b6f00 48
igor_v 21:bc8c1cec3da6 49 Pulse_16Point += Buff_1Point[CountV255];
igor_v 21:bc8c1cec3da6 50 Pulse_16Point -= Buff_1Point[(CountV255-16) & 0xff]; // заполнение буфера накопленых приращений за 16 тактов
Kovalev_D 112:4a96133a1311 51 Buff_16Point[CountV31] = (Pulse_16Point );
igor_v 21:bc8c1cec3da6 52
igor_v 21:bc8c1cec3da6 53 Pulse_32Point += Buff_1Point[CountV255];
igor_v 21:bc8c1cec3da6 54 Pulse_32Point -= Buff_1Point[(CountV255-32) & 0xff]; // заполнение буфера накопленых приращений за 32 тактов
Kovalev_D 112:4a96133a1311 55 Gyro.Cnt_Dif = (Pulse_32Point);
Kovalev_D 112:4a96133a1311 56 Buff_32Point[CountV31] = (Pulse_32Point );
Kovalev_D 183:7e200f4d9b16 57
Kovalev_D 183:7e200f4d9b16 58 /* Pulse_64Point += Buff_1Point[CountV255];
Kovalev_D 183:7e200f4d9b16 59 Pulse_64Point -= Buff_1Point[(CountV255-64) & 0xff]; // заполнение буфера накопленых приращений за 32 тактов
Kovalev_D 183:7e200f4d9b16 60 Gyro.Cnt_Dif = (Pulse_64Point);
Kovalev_D 183:7e200f4d9b16 61 Buff_64Point[CountV31] = (Pulse_64Point );
Kovalev_D 183:7e200f4d9b16 62 */
igor_v 0:8ad47e2b6f00 63
igor_v 21:bc8c1cec3da6 64 Pulse_16PointD += Buff_1Point[CountV255];
igor_v 21:bc8c1cec3da6 65 Pulse_16PointD -= Buff_1Point[(CountV255-16) & 0xff]; // заполнение буфера накопленых приращений за 16 тактов Двойныз
igor_v 21:bc8c1cec3da6 66 Pulse_16PointD += Buff_1Point[(CountV255-32) & 0xff]; //
Kovalev_D 169:140743e3bb96 67 Pulse_16PointD -= Buff_1Point[(CountV255-48) & 0xff]; //
Kovalev_D 108:030cdde08314 68 Buff_16PointD[CountV31] = Pulse_16PointD ;
Kovalev_D 183:7e200f4d9b16 69
Kovalev_D 183:7e200f4d9b16 70 /*
Kovalev_D 183:7e200f4d9b16 71 Pulse_16PointDD += Buff_1Point[CountV255];
Kovalev_D 183:7e200f4d9b16 72 Pulse_16PointDD -= Buff_1Point[(CountV255-16) & 0xff]; // заполнение буфера накопленых приращений за 16 тактов Двойныз
Kovalev_D 183:7e200f4d9b16 73 Pulse_16PointDD += Buff_1Point[(CountV255-32) & 0xff]; //
Kovalev_D 183:7e200f4d9b16 74 Pulse_16PointDD -= Buff_1Point[(CountV255-48) & 0xff]; //
Kovalev_D 183:7e200f4d9b16 75 Pulse_16PointDD += Buff_1Point[(CountV255-64) & 0xff];
Kovalev_D 183:7e200f4d9b16 76 Pulse_16PointDD -= Buff_1Point[(CountV255-80) & 0xff]; // заполнение буфера накопленых приращений за 16 тактов Двойныз
Kovalev_D 183:7e200f4d9b16 77 Pulse_16PointDD += Buff_1Point[(CountV255-96) & 0xff]; //
Kovalev_D 183:7e200f4d9b16 78 Pulse_16PointDD -= Buff_1Point[(CountV255-112) & 0xff];
Kovalev_D 183:7e200f4d9b16 79 Buff_16PointDD[CountV31] = Pulse_16PointDD ;
Kovalev_D 183:7e200f4d9b16 80 Buff_Restored_sin [CountV31]= Buff_16PointDD[ CountV31] - Buff_64Point[CountV31];
Kovalev_D 183:7e200f4d9b16 81 */
igor_v 21:bc8c1cec3da6 82
Kovalev_D 112:4a96133a1311 83
Kovalev_D 183:7e200f4d9b16 84 Buff_Restored_sin [CountV31]= Buff_16PointD[CountV31] - Buff_32Point[CountV31];
Kovalev_D 108:030cdde08314 85 if((Buff_Restored_sin [CountV31]) > 0) CaunAddPlus += Buff_Restored_sin [CountV31];
Kovalev_D 108:030cdde08314 86 else CaunAddMin -= (Buff_Restored_sin [CountV31]); // расчет амплитуды
igor_v 0:8ad47e2b6f00 87
Kovalev_D 112:4a96133a1311 88 Gyro.CuruAngle += Buff_32Point [CountV31];
igor_v 21:bc8c1cec3da6 89 }