Lab version

Dependencies:   mbed

Files at this revision

API Documentation at this revision

Comitter:
noutram
Date:
Wed Mar 09 12:46:57 2016 +0000
Commit message:
Lab version

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Wed Mar 09 12:46:57 2016 +0000
@@ -0,0 +1,57 @@
+#include "mbed.h"
+
+//A slight improvement - however, the pressing of the switch still registers
+//spurious falling edges!
+
+void sw1TimeOutHandler();
+void sw1FallingEdge();
+
+
+#define EDGE_RISEN 1
+#define EDGE_FALLEN 0
+
+//Global Objects
+DigitalOut  red_led(D7);
+DigitalOut  green_led(D5);
+InterruptIn   sw1(D4);
+InterruptIn   sw2(D3);
+
+Timeout sw1TimeOut;             //Used to prevent switch bounce
+
+//Interrupt service routine for handling the timeout
+void sw1TimeOutHandler() {
+    sw1TimeOut.detach();        //Stop the timeout counter firing
+    sw1.fall(&sw1FallingEdge);  //Now wait for a falling edge
+}
+
+//Interrupt service routive for SW1 falling edge (release)
+void sw1FallingEdge() {
+    sw1.fall(NULL);                             //Disable this interrupt
+    red_led = !red_led;                         //Toggle LED    
+    sw1TimeOut.attach(&sw1TimeOutHandler, 0.2); //Start timeout counter    
+}
+
+//Main - only has to initialise and sleep
+int main() {
+    //Initial logging message
+    puts("START");
+    
+    //Initial state
+    red_led    = 0; //Set RED LED to OFF
+    green_led  = 1;
+    
+    //Configure interrupts, wait for first rising edge
+    sw1.fall(&sw1FallingEdge);
+    
+    //Main Polling Loop
+    while (true) {
+        
+        //Put CPU back to sleep
+        sleep();
+        
+        //You can ONLY reach this point if an ISR wakes the CPU
+        puts("ISR just woke the MPU");
+        
+    } //end while
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Wed Mar 09 12:46:57 2016 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed/builds/252557024ec3
\ No newline at end of file