..

Dependencies:   mbed

Committer:
allanalpha
Date:
Fri Feb 01 15:24:15 2013 +0000
Revision:
0:ff5187998c84
what ev

Who changed what in which revision?

UserRevisionLine numberNew contents of line
allanalpha 0:ff5187998c84 1 /*
allanalpha 0:ff5187998c84 2 Touchpad driver.
allanalpha 0:ff5187998c84 3
allanalpha 0:ff5187998c84 4 CPV, 3/9/2009
allanalpha 0:ff5187998c84 5 */
allanalpha 0:ff5187998c84 6
allanalpha 0:ff5187998c84 7 #include "touchpad.h"
allanalpha 0:ff5187998c84 8
allanalpha 0:ff5187998c84 9
allanalpha 0:ff5187998c84 10 void TouchpadChannel::initialise(int min, int quantise_step)
allanalpha 0:ff5187998c84 11 {
allanalpha 0:ff5187998c84 12 m_min = min;
allanalpha 0:ff5187998c84 13 m_quantise_step = quantise_step;
allanalpha 0:ff5187998c84 14 m_filter.initialise(8);
allanalpha 0:ff5187998c84 15 m_quantised = -1;
allanalpha 0:ff5187998c84 16 }
allanalpha 0:ff5187998c84 17
allanalpha 0:ff5187998c84 18
allanalpha 0:ff5187998c84 19 int TouchpadChannel::quantise(void)
allanalpha 0:ff5187998c84 20 {
allanalpha 0:ff5187998c84 21 m_quantised = -1;
allanalpha 0:ff5187998c84 22 int raw = m_filter();
allanalpha 0:ff5187998c84 23 if (raw>m_min)
allanalpha 0:ff5187998c84 24 {
allanalpha 0:ff5187998c84 25 m_quantised = 0;
allanalpha 0:ff5187998c84 26 while(raw>m_quantise_step)
allanalpha 0:ff5187998c84 27 {
allanalpha 0:ff5187998c84 28 raw -= m_quantise_step;
allanalpha 0:ff5187998c84 29 m_quantised += 1;
allanalpha 0:ff5187998c84 30 }
allanalpha 0:ff5187998c84 31 }
allanalpha 0:ff5187998c84 32 return m_quantised;
allanalpha 0:ff5187998c84 33 }
allanalpha 0:ff5187998c84 34
allanalpha 0:ff5187998c84 35
allanalpha 0:ff5187998c84 36 //===============================================
allanalpha 0:ff5187998c84 37
allanalpha 0:ff5187998c84 38
allanalpha 0:ff5187998c84 39 Touchpad::Touchpad(PinName x0, PinName x1, PinName y0, PinName y1)
allanalpha 0:ff5187998c84 40 {
allanalpha 0:ff5187998c84 41 m_x0 = x0;
allanalpha 0:ff5187998c84 42 m_x1 = x1;
allanalpha 0:ff5187998c84 43 m_y0 = y0;
allanalpha 0:ff5187998c84 44 m_y1 = y1;
allanalpha 0:ff5187998c84 45 m_ch_x.initialise(0.1*0xffff,0.16*0xffff);
allanalpha 0:ff5187998c84 46 m_ch_y.initialise(0.1*0xffff,0.22*0xffff);
allanalpha 0:ff5187998c84 47 }
allanalpha 0:ff5187998c84 48
allanalpha 0:ff5187998c84 49
allanalpha 0:ff5187998c84 50 int Touchpad::read(PinName drive_hi, PinName drive_lo, PinName read_hi, PinName read_lo)
allanalpha 0:ff5187998c84 51 {
allanalpha 0:ff5187998c84 52 DigitalOut out1(drive_hi);
allanalpha 0:ff5187998c84 53 DigitalOut out0(drive_lo);
allanalpha 0:ff5187998c84 54 AnalogIn in1(read_hi);
allanalpha 0:ff5187998c84 55 AnalogIn in0(read_lo);
allanalpha 0:ff5187998c84 56 out0 = 0;
allanalpha 0:ff5187998c84 57 out1 = 1;
allanalpha 0:ff5187998c84 58 return in1.read_u16();
allanalpha 0:ff5187998c84 59 }
allanalpha 0:ff5187998c84 60
allanalpha 0:ff5187998c84 61
allanalpha 0:ff5187998c84 62 void Touchpad::tick(void)
allanalpha 0:ff5187998c84 63 {
allanalpha 0:ff5187998c84 64 m_ch_x.tick(read_x());
allanalpha 0:ff5187998c84 65 m_ch_y.tick(read_y());
allanalpha 0:ff5187998c84 66 }