Two pushbuttons with two callbacks
Fork of Pushbutton_Debounce_Interrupt by
Revision 1:768b8bd42e33, committed 2013-01-29
- Comitter:
- 4180_1
- Date:
- Tue Jan 29 02:34:03 2013 +0000
- Parent:
- 0:cc87c48aa43c
- Commit message:
- ver 1.0
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
diff -r cc87c48aa43c -r 768b8bd42e33 main.cpp --- a/main.cpp Tue Sep 20 14:06:28 2011 +0000 +++ b/main.cpp Tue Jan 29 02:34:03 2013 +0000 @@ -8,34 +8,45 @@ DigitalOut myled3(LED3); DigitalOut myled4(LED4); -PinDetect pb(p8); +PinDetect pb1(p8); +PinDetect pb2(p7); // SPST Pushbutton debounced count demo using interrupts and callback // no external PullUp resistor needed // Pushbutton from P8 to GND. +// Second Pushbutton from P7 to GND. // A pb hit generates an interrupt and activates the callback function // after the switch is debounced // Global count variable int volatile count=0; -// Callback routine is interrupt activated by a debounced pb hit -void pb_hit_callback (void) { +// Callback routine is interrupt activated by a debounced pb1 hit +void pb1_hit_callback (void) { count++; myled4 = count & 0x01; myled3 = (count & 0x02)>>1; myled2 = (count & 0x04)>>2; } +// Callback routine is interrupt activated by a debounced pb2 hit +void pb2_hit_callback (void) { + count--; + myled4 = count & 0x01; + myled3 = (count & 0x02)>>1; + myled2 = (count & 0x04)>>2; +} int main() { - // Use internal pullup for pushbutton - pb.mode(PullUp); + // Use internal pullups for pushbutton + pb1.mode(PullUp); + pb2.mode(PullUp); // Delay for initial pullup to take effect wait(.01); - // Setup Interrupt callback function for a pb hit - pb.attach_deasserted(&pb_hit_callback); - // Start sampling pb input using interrupts - pb.setSampleFrequency(); - + // Setup Interrupt callback functions for a pb hit + pb1.attach_deasserted(&pb1_hit_callback); + pb2.attach_deasserted(&pb2_hit_callback); + // Start sampling pb inputs using interrupts + pb1.setSampleFrequency(); + pb2.setSampleFrequency(); //Blink myled in main routine forever while responding to pb changes // via interrupts that activate the callback counter function while (1) {