Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of Task327 by
Diff: main.cpp
- Revision:
- 3:384a8f9726ac
- Parent:
- 2:23bd19542152
- Child:
- 4:c85556b07606
diff -r 23bd19542152 -r 384a8f9726ac main.cpp
--- a/main.cpp Wed Oct 11 16:52:31 2017 +0000
+++ b/main.cpp Thu Oct 12 14:35:26 2017 +0000
@@ -1,6 +1,6 @@
#include "mbed.h"
-void sw1TimeOutHandler();
+void updateState();
void sw1RisingEdge();
void sw1FallingEdge();
@@ -8,13 +8,18 @@
#define EDGE_FALLEN 0
//Global Objects
-DigitalOut led(LED1);
+DigitalOut led(LED1);
InterruptIn sw1(USER_BUTTON);
-Timeout sw1TimeOut; //Used to prevent switch bounce
-int sw1State = EDGE_FALLEN; //Initial state for switch 1
+
+//State
+static int sw1State = EDGE_FALLEN; //Initial state for switch 1
//Interrupt service routine for handling the timeout
-void sw1TimeOutHandler() {
+void updateState() {
+
+ //Allow for switch bounce
+ wait(0.1);
+
//Which event does this follow?
switch (sw1State) {
case EDGE_RISEN:
@@ -34,8 +39,7 @@
//Interrupt service routive for SW1 falling edge (release)
void sw1FallingEdge() {
- sw1.fall(NULL); //Disable this interrupt
- led = !led; //Toggle LED
+ sw1.fall(NULL); //Disable this interrupt
sw1State = EDGE_FALLEN; //Flag state
}
@@ -53,16 +57,15 @@
led = 0;
//Put CPU back to sleep
- sleep(); //woken by rising edge
- puts("Rising");
- wait(0.2);
- sw1TimeOutHandler();
+ sleep(); //woken by rising edge
+ puts("Rising");
+ updateState();
+
sleep(); //Falling edge
puts("Falling");
- wait(0.2);
- sw1TimeOutHandler();
+ updateState();
- //You can ONLY reach this point if an ISR wakes the CPU
+ //You can ONLY reach this point if an ISR wakes the CPU twice
for (int n=0; n<10; n++) {
led = !led;
wait(0.1);
