xypad theremin for LPC1768

Dependencies:   MODDMA mbed

Committer:
exopiped
Date:
Mon Mar 14 23:43:44 2016 +0000
Revision:
2:c5eeaf1c8e69
Parent:
1:aa184d2eb2e3
touch screen driver glitches removed; debug statements commented out

Who changed what in which revision?

UserRevisionLine numberNew contents of line
exopiped 0:8ee38453bad9 1 /*
exopiped 0:8ee38453bad9 2 * jswitch.cpp -- debounces and reads pins 12
exopiped 0:8ee38453bad9 3 * (SW_DOWN), 13(SW_LEFT),14(SW_CENTER),15(SW_UP),
exopiped 0:8ee38453bad9 4 * and 16(SE_RIGHT) of the mbed 40 pin dip board
exopiped 0:8ee38453bad9 5 */
exopiped 0:8ee38453bad9 6 #include "mbed.h"
exopiped 0:8ee38453bad9 7 #include "debug.h"
exopiped 0:8ee38453bad9 8 #include "jswitch.h"
exopiped 0:8ee38453bad9 9
exopiped 0:8ee38453bad9 10 #define JS_BLANKING_MSEC 333
exopiped 0:8ee38453bad9 11
exopiped 0:8ee38453bad9 12 DigitalIn js_down(p12);
exopiped 0:8ee38453bad9 13 DigitalIn js_left(p13);
exopiped 0:8ee38453bad9 14 DigitalIn js_center(p14);
exopiped 0:8ee38453bad9 15 DigitalIn js_up(p15);
exopiped 0:8ee38453bad9 16 DigitalIn js_right(p16);
exopiped 0:8ee38453bad9 17
exopiped 0:8ee38453bad9 18 Timer js_timer;
exopiped 0:8ee38453bad9 19
exopiped 0:8ee38453bad9 20 static unsigned char js_oldest=0;
exopiped 0:8ee38453bad9 21 static unsigned char js_older=0;
exopiped 0:8ee38453bad9 22 static unsigned char js_old=0;
exopiped 0:8ee38453bad9 23 static unsigned char js_now=0;
exopiped 0:8ee38453bad9 24 static unsigned char js_official=0;
exopiped 0:8ee38453bad9 25 static int js_msec=0;
exopiped 0:8ee38453bad9 26
exopiped 0:8ee38453bad9 27 void js_init(void)
exopiped 0:8ee38453bad9 28 {
exopiped 0:8ee38453bad9 29 js_official = 0;
exopiped 0:8ee38453bad9 30 js_now = 0;
exopiped 0:8ee38453bad9 31 js_old = 0;
exopiped 0:8ee38453bad9 32 js_older = 0;
exopiped 0:8ee38453bad9 33 js_oldest = 0;
exopiped 0:8ee38453bad9 34 js_timer.start();
exopiped 0:8ee38453bad9 35 }
exopiped 0:8ee38453bad9 36 /*
exopiped 0:8ee38453bad9 37 * js_debounce -- button presses will not be reported
exopiped 0:8ee38453bad9 38 * any more that once every 333 msec.
exopiped 0:8ee38453bad9 39 */
exopiped 0:8ee38453bad9 40 void js_debounce(void){
exopiped 0:8ee38453bad9 41 if ((js_timer.read_ms()-js_msec)>JS_BLANKING_MSEC) {
exopiped 0:8ee38453bad9 42 if (js_official==0) {
exopiped 0:8ee38453bad9 43 js_oldest = js_older;
exopiped 0:8ee38453bad9 44 js_older=js_old;
exopiped 0:8ee38453bad9 45 js_old=js_now;
exopiped 0:8ee38453bad9 46 js_now = ( (js_center << 4)
exopiped 0:8ee38453bad9 47 | (js_up << 3)
exopiped 0:8ee38453bad9 48 | (js_down << 2)
exopiped 0:8ee38453bad9 49 | (js_left << 1)
exopiped 0:8ee38453bad9 50 | js_right );
exopiped 0:8ee38453bad9 51 js_official|=(js_now&js_old&js_older&js_oldest);
exopiped 0:8ee38453bad9 52 if (js_official>0) {
exopiped 0:8ee38453bad9 53 js_msec=js_timer.read_ms();
exopiped 0:8ee38453bad9 54 }
exopiped 0:8ee38453bad9 55 } else {
exopiped 0:8ee38453bad9 56 js_now=0;
exopiped 0:8ee38453bad9 57 js_old=0;
exopiped 0:8ee38453bad9 58 js_older=0;
exopiped 0:8ee38453bad9 59 js_oldest=0;
exopiped 0:8ee38453bad9 60 }
exopiped 0:8ee38453bad9 61 }
exopiped 0:8ee38453bad9 62 }
exopiped 0:8ee38453bad9 63 /*
exopiped 0:8ee38453bad9 64 * js_read -- reads buttons indicated by the mask.
exopiped 0:8ee38453bad9 65 * once read the masked button indications are cleared
exopiped 0:8ee38453bad9 66 */
exopiped 0:8ee38453bad9 67 unsigned char js_read(unsigned char mask)
exopiped 0:8ee38453bad9 68 {
exopiped 0:8ee38453bad9 69 unsigned char retval;
exopiped 0:8ee38453bad9 70
exopiped 0:8ee38453bad9 71 retval = js_official & mask;
exopiped 0:8ee38453bad9 72 js_official &= ~retval;
exopiped 0:8ee38453bad9 73 return retval;
exopiped 0:8ee38453bad9 74 }
exopiped 0:8ee38453bad9 75
exopiped 0:8ee38453bad9 76