fork

Dependencies:   mbed

Fork of LG by igor Apu

Committer:
Kovalev_D
Date:
Fri Sep 23 05:34:50 2016 +0000
Revision:
196:f76dbc081e63
Parent:
194:8f3cb37a5541
Child:
197:7a05523bf588
???

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
Kovalev_D 196:f76dbc081e63 11
igor_v 42:6fc307c4963e 12
Kovalev_D 86:398da56ef751 13 int Pulse_8Point;
Kovalev_D 86:398da56ef751 14 int Pulse_16Point;
Kovalev_D 86:398da56ef751 15 int Pulse_32Point;
Kovalev_D 183:7e200f4d9b16 16 int Pulse_64Point;
Kovalev_D 86:398da56ef751 17 int Pulse_16PointD;
Kovalev_D 191:40028201ddad 18 unsigned int CaunAddPlus =0;//счетчик ипульсов энкодера"+" за такт ВП
Kovalev_D 192:d32c8cf7bcd9 19 unsigned 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 193:a0fe8bfc97e4 23 int Buff_1Point [512];
Kovalev_D 183:7e200f4d9b16 24 int Buff_32Point [32];
Kovalev_D 193:a0fe8bfc97e4 25 int Buff_64Point [32];
igor_v 43:3f7c8a0ea59c 26 int Buff_16Point [32];
igor_v 43:3f7c8a0ea59c 27 int Buff_16PointD [32];
igor_v 43:3f7c8a0ea59c 28 int Buff_8Point [32];
igor_v 43:3f7c8a0ea59c 29 int Buff_Restored_sin [32];
Kovalev_D 196:f76dbc081e63 30 int Buff_Restored_sin2 [32];
igor_v 21:bc8c1cec3da6 31 void D_QEI(void)
igor_v 21:bc8c1cec3da6 32 {
igor_v 21:bc8c1cec3da6 33 Dif_QEI=0;
igor_v 21:bc8c1cec3da6 34 Cur_QEI = LPC_QEI->POS & 0xFFFF; // считывание текущего значения энкодера.
Kovalev_D 193:a0fe8bfc97e4 35
igor_v 21:bc8c1cec3da6 36 Dif_QEI = (Cur_QEI - Last_QEI); // получение приращения.()
Kovalev_D 193:a0fe8bfc97e4 37
igor_v 21:bc8c1cec3da6 38 Last_QEI = Cur_QEI; // запись текущего значения энкодера в регистр предыдущего значения.
Kovalev_D 112:4a96133a1311 39
igor_v 21:bc8c1cec3da6 40 if (Dif_QEI < -0xfff) Dif_QEI += 0x10000; // обработка прохода значения через ноль
igor_v 21:bc8c1cec3da6 41 if (Dif_QEI > 0xfff) Dif_QEI -= 0x10000; // обработка прохода значения через ноль
Kovalev_D 108:030cdde08314 42 Buff_1Point[CountV255] = Dif_QEI ; // накопление в буфер еденичных значений приращения по каждому такту.
Kovalev_D 193:a0fe8bfc97e4 43
Kovalev_D 112:4a96133a1311 44
igor_v 21:bc8c1cec3da6 45 //////////////////////////////////////////////////////////////////////////////////////////////
Kovalev_D 108:030cdde08314 46 Pulse_8Point += Buff_1Point[CountV255];
igor_v 21:bc8c1cec3da6 47 Pulse_8Point -= Buff_1Point[(CountV255-8) & 0xff]; // заполнение буфера накопленых приращений за 8 тактов
Kovalev_D 112:4a96133a1311 48 Buff_8Point[CountV31] = (Pulse_8Point);
igor_v 0:8ad47e2b6f00 49
igor_v 21:bc8c1cec3da6 50 Pulse_16Point += Buff_1Point[CountV255];
igor_v 21:bc8c1cec3da6 51 Pulse_16Point -= Buff_1Point[(CountV255-16) & 0xff]; // заполнение буфера накопленых приращений за 16 тактов
Kovalev_D 112:4a96133a1311 52 Buff_16Point[CountV31] = (Pulse_16Point );
igor_v 21:bc8c1cec3da6 53
igor_v 21:bc8c1cec3da6 54 Pulse_32Point += Buff_1Point[CountV255];
igor_v 21:bc8c1cec3da6 55 Pulse_32Point -= Buff_1Point[(CountV255-32) & 0xff]; // заполнение буфера накопленых приращений за 32 тактов
Kovalev_D 112:4a96133a1311 56 Gyro.Cnt_Dif = (Pulse_32Point);
Kovalev_D 112:4a96133a1311 57 Buff_32Point[CountV31] = (Pulse_32Point );
Kovalev_D 183:7e200f4d9b16 58
Kovalev_D 193:a0fe8bfc97e4 59 Pulse_64Point += Buff_1Point[CountV255];
Kovalev_D 193:a0fe8bfc97e4 60 Pulse_64Point -= Buff_1Point[(CountV255-32) & 0xff]; // заполнение буфера накопленых приращений за два 32 тактов
Kovalev_D 183:7e200f4d9b16 61 Gyro.Cnt_Dif = (Pulse_64Point);
Kovalev_D 183:7e200f4d9b16 62 Buff_64Point[CountV31] = (Pulse_64Point );
Kovalev_D 193:a0fe8bfc97e4 63
igor_v 0:8ad47e2b6f00 64
igor_v 21:bc8c1cec3da6 65 Pulse_16PointD += Buff_1Point[CountV255];
igor_v 21:bc8c1cec3da6 66 Pulse_16PointD -= Buff_1Point[(CountV255-16) & 0xff]; // заполнение буфера накопленых приращений за 16 тактов Двойныз
igor_v 21:bc8c1cec3da6 67 Pulse_16PointD += Buff_1Point[(CountV255-32) & 0xff]; //
Kovalev_D 169:140743e3bb96 68 Pulse_16PointD -= Buff_1Point[(CountV255-48) & 0xff]; //
Kovalev_D 108:030cdde08314 69 Buff_16PointD[CountV31] = Pulse_16PointD ;
Kovalev_D 183:7e200f4d9b16 70
Kovalev_D 196:f76dbc081e63 71
Kovalev_D 196:f76dbc081e63 72 Buff_Restored_sin [CountV31] = (Buff_16PointD[CountV31]) - Buff_32Point[CountV31];
Kovalev_D 196:f76dbc081e63 73 Buff_Restored_sin2 [CountV31] = (Buff_16Point[CountV31]) - Buff_32Point[CountV31];
Kovalev_D 193:a0fe8bfc97e4 74 if((Buff_Restored_sin [CountV31]) > 0)
Kovalev_D 193:a0fe8bfc97e4 75 {
Kovalev_D 193:a0fe8bfc97e4 76 CaunAddPlus += Buff_Restored_sin [CountV31];
Kovalev_D 193:a0fe8bfc97e4 77 if(Gyro.QEIznak2)
Kovalev_D 193:a0fe8bfc97e4 78 {
Kovalev_D 194:8f3cb37a5541 79 Gyro.Reper_Event=1;
Kovalev_D 193:a0fe8bfc97e4 80 Gyro.QEIznak2=0;
Kovalev_D 193:a0fe8bfc97e4 81 }
Kovalev_D 193:a0fe8bfc97e4 82
Kovalev_D 193:a0fe8bfc97e4 83 } // счетчик положительных импульсов
Kovalev_D 196:f76dbc081e63 84 else {CaunAddMin -= Buff_Restored_sin [CountV31]; Gyro.QEIznak2=1;} //счетчик отрицательных импульсов // расчет амплитуды
Kovalev_D 196:f76dbc081e63 85
Kovalev_D 196:f76dbc081e63 86 /*
Kovalev_D 196:f76dbc081e63 87 Gyro.CuruAngle += Buff_32Point [CountV31];
Kovalev_D 193:a0fe8bfc97e4 88 Gyro.tempdelta += Buff_Restored_sin[CountV31];
Kovalev_D 196:f76dbc081e63 89 Gyro.tempdelta2+= Buff_Restored_sin2[CountV31];*/
igor_v 21:bc8c1cec3da6 90 }
Kovalev_D 196:f76dbc081e63 91 /*
Kovalev_D 193:a0fe8bfc97e4 92 void CurAngle(void)
Kovalev_D 193:a0fe8bfc97e4 93 {
Kovalev_D 193:a0fe8bfc97e4 94 for (int i = 0; i < 32; i++ )
Kovalev_D 193:a0fe8bfc97e4 95 {
Kovalev_D 193:a0fe8bfc97e4 96 Gyro.tempdelta += Buff_Restored_sin[i];
Kovalev_D 193:a0fe8bfc97e4 97 Gyro.CuruAngle += Buff_32Point[i];
Kovalev_D 193:a0fe8bfc97e4 98 }
Kovalev_D 193:a0fe8bfc97e4 99 }
Kovalev_D 193:a0fe8bfc97e4 100 void CurAngleLOG(void)
Kovalev_D 193:a0fe8bfc97e4 101 {
Kovalev_D 193:a0fe8bfc97e4 102 sprintf((Time)," %d %d \r\n", Gyro.tempdelta,Gyro.CuruAngle);
Kovalev_D 193:a0fe8bfc97e4 103 WriteCon(Time);
Kovalev_D 193:a0fe8bfc97e4 104 Gyro.CuruAngle=0;
Kovalev_D 193:a0fe8bfc97e4 105 Gyro.tempdelta=0;
Kovalev_D 196:f76dbc081e63 106 }*/
Kovalev_D 193:a0fe8bfc97e4 107