void qei_init(){ ANSEL0 = 0b11100011; MAXCNTL = 0b00011111; //* MAXCNT = PPR*4-1 = 200*4-1 = 1100011111 MAXCNTH = 0b00000011; //* POSCNTL = 0; //## clear POSCNT POSCNTH = 0; //## 16 bit register QEICON.F7 = 0; // velocity mode enabled QEICON.F6 = 0; // error bit cleared QEICON.F5 = 1; // forward QEICON.F4 = 1; //> QEI enabled in 4x Update mode QEICON.F3 = 1; //> position counter resets on period match QEICON.F2 = 0; //> ie. (POSCNT = MAXCNT) QEICON.F1 = 0; //>> Velocity Pulse Reduction Ratio bit QEICON.F0 = 0; //>> no reduction 1:1 } void timer5_init(){ T5CON.T5SEN = 0; // timer5 disabled during Sleep [7](0) T5CON.RESEN = 0; // special event reset enebled [6](0) T5CON.T5MOD = 0; // continuous mode enabled [5](0) T5CON.T5PS1 = 0; //// timer 5 input clock prescale bits [4](0) T5CON.T5PS1 = 0; //// 1:1 prescale [3](0) T5CON.TMR5CS = 0; // timer clock source internal clock [2](0) T5CON.TMR5ON = 1; // timer 5 enabled [0](1) } void CAP1CON_init(){ CAP1CON.CAP1REN = 1; // time base reset enable [6](1) CAP1CON.CAP1M3 = 1; //// special event trigger mode. [3](1) CAP1CON.CAP1M2 = 1; //// the trigger occurs on every [2](1) CAP1CON.CAP1M1 = 1; //// rising edge on CAP1 input [1](1) CAP1CON.CAP1M0 = 1; //// on CAP1 input [0](1) }