HW5.2

Dependencies:   blink_kl46z_button_nowait mbed

Fork of blink_kl46z_button_nowait by Stanley Cohen

Committer:
destradafilm
Date:
Mon Sep 28 16:54:43 2015 +0000
Revision:
6:cacef74ca13e
Parent:
5:dc506f422393
HW 5.2

Who changed what in which revision?

UserRevisionLine numberNew contents of line
scohennm 0:e23fffd4b9a7 1 #include "mbed.h"
scohennm 2:b49e5adf84df 2
scohennm 0:e23fffd4b9a7 3 #define LEDON false
scohennm 0:e23fffd4b9a7 4 #define LEDOFF true
scohennm 1:2688f68df85d 5 #define NUMBUTS 2
scohennm 3:7e9670be412e 6 #define LBUT PTC12 // port addresses for buttons
scohennm 1:2688f68df85d 7 #define RBUT PTC3
scohennm 3:7e9670be412e 8 #define BLINKTIME 0.3 // in seconds
scohennm 3:7e9670be412e 9 #define BUTTONTIME 0.2
scohennm 3:7e9670be412e 10
destradafilm 6:cacef74ca13e 11 #define PROGNAME "DEstrada-HW-5.2-Interrupt and Timout\r\n"
scohennm 0:e23fffd4b9a7 12
scohennm 3:7e9670be412e 13 // Timer to elliminate wait() function
scohennm 3:7e9670be412e 14 Timer LEDTimer; // for blinking LEDs
scohennm 3:7e9670be412e 15 Timer ButtonTimer; // for reading button states
destradafilm 6:cacef74ca13e 16 Timeout blinker;
scohennm 3:7e9670be412e 17
destradafilm 6:cacef74ca13e 18 bool ledState = LEDON; // false
destradafilm 6:cacef74ca13e 19
destradafilm 6:cacef74ca13e 20 DigitalIn buttons[NUMBUTS] = {RBUT, LBUT}; // buttons[2]
destradafilm 6:cacef74ca13e 21 DigitalOut LEDs[NUMBUTS] = {LED_GREEN, LED_RED}; // LEDs[2]
scohennm 1:2688f68df85d 22 Serial pc(USBTX, USBRX);// set up USB as communicationis to Host PC via USB connectons
scohennm 0:e23fffd4b9a7 23
destradafilm 6:cacef74ca13e 24 //interrupts
destradafilm 6:cacef74ca13e 25 InterruptIn rtButton(RBUT);
destradafilm 6:cacef74ca13e 26 InterruptIn lButton(LBUT);
destradafilm 6:cacef74ca13e 27
destradafilm 6:cacef74ca13e 28 //keept this
scohennm 3:7e9670be412e 29 void allLEDsOff(){
scohennm 3:7e9670be412e 30 int i;
scohennm 3:7e9670be412e 31 for (i=0; i<NUMBUTS; i++){
scohennm 3:7e9670be412e 32 LEDs[i] = LEDOFF;
scohennm 3:7e9670be412e 33 }
scohennm 3:7e9670be412e 34 }
destradafilm 6:cacef74ca13e 35
scohennm 2:b49e5adf84df 36
scohennm 3:7e9670be412e 37 void initialize_global_vars(){
scohennm 3:7e9670be412e 38 pc.printf(PROGNAME);
scohennm 3:7e9670be412e 39 // set up DAQ timers
scohennm 3:7e9670be412e 40 ButtonTimer.start();
scohennm 3:7e9670be412e 41 ButtonTimer.reset();
scohennm 3:7e9670be412e 42 LEDTimer.start();
scohennm 3:7e9670be412e 43 LEDTimer.reset();
destradafilm 6:cacef74ca13e 44 allLEDsOff(); // makes sure LEDS are off
scohennm 3:7e9670be412e 45 }
destradafilm 6:cacef74ca13e 46
destradafilm 6:cacef74ca13e 47 //global variable
destradafilm 6:cacef74ca13e 48 int currentLED = 0;
destradafilm 6:cacef74ca13e 49
destradafilm 6:cacef74ca13e 50
destradafilm 6:cacef74ca13e 51 // interrupt
destradafilm 6:cacef74ca13e 52 void rtButtonPressed(){
destradafilm 6:cacef74ca13e 53 allLEDsOff();
destradafilm 6:cacef74ca13e 54 currentLED = 0;
destradafilm 6:cacef74ca13e 55 }
destradafilm 6:cacef74ca13e 56
destradafilm 6:cacef74ca13e 57 // interrupt
destradafilm 6:cacef74ca13e 58 void lButtonPressed(){
destradafilm 6:cacef74ca13e 59 allLEDsOff();
destradafilm 6:cacef74ca13e 60 currentLED = 1;
destradafilm 6:cacef74ca13e 61 }
destradafilm 6:cacef74ca13e 62
destradafilm 6:cacef74ca13e 63 //Timeout call
destradafilm 6:cacef74ca13e 64 void blink() {
destradafilm 6:cacef74ca13e 65 ledState = !ledState; // Flip the general state
destradafilm 6:cacef74ca13e 66 LEDs[currentLED] = ledState;
destradafilm 6:cacef74ca13e 67 }
destradafilm 6:cacef74ca13e 68
destradafilm 6:cacef74ca13e 69
destradafilm 6:cacef74ca13e 70
scohennm 1:2688f68df85d 71 // --------------------------------
scohennm 3:7e9670be412e 72 int main() {
scohennm 3:7e9670be412e 73 initialize_global_vars(); //keep things organized
scohennm 3:7e9670be412e 74 LEDs[currentLED] = LEDON;
destradafilm 6:cacef74ca13e 75 // End of setup
destradafilm 6:cacef74ca13e 76
destradafilm 6:cacef74ca13e 77 //Interrupts
destradafilm 6:cacef74ca13e 78 rtButton.fall(&rtButtonPressed);
destradafilm 6:cacef74ca13e 79 lButton.fall(&lButtonPressed);
destradafilm 6:cacef74ca13e 80
scohennm 3:7e9670be412e 81
scohennm 0:e23fffd4b9a7 82 while(true) {
destradafilm 6:cacef74ca13e 83
destradafilm 6:cacef74ca13e 84 if(LEDTimer.read() > BLINKTIME){
destradafilm 6:cacef74ca13e 85 LEDTimer.reset();
destradafilm 6:cacef74ca13e 86 blinker.attach(&blink, 0.2);
scohennm 1:2688f68df85d 87 }
scohennm 0:e23fffd4b9a7 88 }
scohennm 0:e23fffd4b9a7 89 }