123

Dependencies:   mbed

Fork of LG by igor Apu

Committer:
Diletant
Date:
Sun May 15 19:12:12 2016 +0000
Revision:
161:efd949e8d536
Parent:
156:e68ee0bcdcda
Child:
167:bedc0a9d559a
Device & ... update. Not final!!!

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Diletant 156:e68ee0bcdcda 1 #include "Device.h"
Diletant 156:e68ee0bcdcda 2 extern Device device;
Diletant 156:e68ee0bcdcda 3
Diletant 156:e68ee0bcdcda 4 #define MAX_QEI_CNT 2147483646
Diletant 156:e68ee0bcdcda 5
Diletant 156:e68ee0bcdcda 6 void InitQEIWithDefaults(void){
Diletant 156:e68ee0bcdcda 7 }
Diletant 156:e68ee0bcdcda 8
Diletant 156:e68ee0bcdcda 9 void InitQEI(void){
Diletant 156:e68ee0bcdcda 10 //Power on
Diletant 156:e68ee0bcdcda 11 LPC_SC->PCONP |= (1<<18);
Diletant 156:e68ee0bcdcda 12 //Clock
Diletant 156:e68ee0bcdcda 13 LPC_SC->PCLKSEL1 |= 0x00000001; // выбор частоты для кв.э. CLK=100MHz
Diletant 156:e68ee0bcdcda 14 //Pin function select
Diletant 156:e68ee0bcdcda 15 LPC_PINCON->PINSEL3 &= ~0x4100;
Diletant 156:e68ee0bcdcda 16 LPC_PINCON->PINSEL3 |= 0x4100; //P1.20, p1.23 установить как входы кв.э
Diletant 156:e68ee0bcdcda 17 //Pin mode select
Diletant 156:e68ee0bcdcda 18 LPC_PINCON->PINMODE3 |= 0x3C300; //P1.20, p1.23
Diletant 156:e68ee0bcdcda 19
Diletant 156:e68ee0bcdcda 20 LPC_QEI->MAXPOS = MAX_QEI_CNT; //LPC_QEI->"регистор максимального положения" = 2147483646
Diletant 156:e68ee0bcdcda 21 LPC_QEI->FILTER = 2; // фильтр( ?? )
Diletant 156:e68ee0bcdcda 22 LPC_QEI->CON = 0xF; //сбросить в ноль все счетчики кв.э. (скорость, направление, позицию и тд)
Diletant 156:e68ee0bcdcda 23 LPC_QEI->CONF = (0<<2) |(0<<1); //Quadrature inputs, no inverting,only A pulses are counted
Diletant 156:e68ee0bcdcda 24
Diletant 156:e68ee0bcdcda 25 LPC_QEI->CLR = 0x1fff; //r. сбросить все прерывания
Diletant 156:e68ee0bcdcda 26 LPC_QEI->IEC = 0x1fff; //r. запретить прерывание при изменении направления
Diletant 156:e68ee0bcdcda 27 }
Diletant 156:e68ee0bcdcda 28
Diletant 156:e68ee0bcdcda 29 void DeviceQEIRead(void)
Diletant 156:e68ee0bcdcda 30 {
Diletant 156:e68ee0bcdcda 31 uint32_t position = LPC_QEI->POS;
Diletant 156:e68ee0bcdcda 32 device.controller.QEI.state.delta = position - device.controller.QEI.state.position;
Diletant 156:e68ee0bcdcda 33 device.controller.QEI.state.position = position;
Diletant 156:e68ee0bcdcda 34
Diletant 156:e68ee0bcdcda 35 //????????
Diletant 156:e68ee0bcdcda 36 //if (device.controller.QEI.state.delta < -0xfff) device.controller.QEI.state.delta += 0x10000; // обработка прохода значения через ноль
Diletant 156:e68ee0bcdcda 37 //if (device.controller.QEI.state.delta > 0xfff) device.controller.QEI.state.delta -= 0x10000; // обработка прохода значения через ноль
Diletant 156:e68ee0bcdcda 38 //????????
Diletant 156:e68ee0bcdcda 39 }