Mark Schwarzer / Mbed 2 deprecated Schwarzer_A4_1_Interrupts

Dependencies:   mbed

Committer:
markschwarzer
Date:
Mon Oct 12 23:50:00 2020 +0000
Revision:
3:be25235bbac5
Parent:
2:39e295fcc23d
FINAL

Who changed what in which revision?

UserRevisionLine numberNew contents of line
markschwarzer 0:6b2314a40652 1 //Mark Schwarzer Assignment 4
markschwarzer 0:6b2314a40652 2
markschwarzer 0:6b2314a40652 3 #include "mbed.h"
markschwarzer 0:6b2314a40652 4
markschwarzer 0:6b2314a40652 5 Ticker tickerLED1; //creat ticker object
markschwarzer 0:6b2314a40652 6 Ticker tickerLED3;
markschwarzer 0:6b2314a40652 7 DigitalOut LEDOut1(LED1);
markschwarzer 0:6b2314a40652 8 DigitalOut LEDOut3(LED3);
markschwarzer 2:39e295fcc23d 9 InterruptIn button(p17);
markschwarzer 0:6b2314a40652 10 Timer debounce;
markschwarzer 0:6b2314a40652 11
markschwarzer 0:6b2314a40652 12 void toggle(void);
markschwarzer 0:6b2314a40652 13
markschwarzer 0:6b2314a40652 14 int main() {
markschwarzer 0:6b2314a40652 15 debounce.start();
markschwarzer 0:6b2314a40652 16 button.rise(&toggle); //toggle function to rising edge
markschwarzer 0:6b2314a40652 17 }
markschwarzer 0:6b2314a40652 18 void toggle() {
markschwarzer 0:6b2314a40652 19 if (debounce.read_ms()>200); //allow toggle if debounce timer has passed 200 ms
markschwarzer 0:6b2314a40652 20 LEDOut1 = !LEDOut1;
markschwarzer 0:6b2314a40652 21 debounce.reset(); //restart timer at toggle
markschwarzer 0:6b2314a40652 22
markschwarzer 0:6b2314a40652 23 }
markschwarzer 0:6b2314a40652 24 void changeLED1() //the function that will be called by the ticker object.
markschwarzer 0:6b2314a40652 25 {
markschwarzer 0:6b2314a40652 26 LEDOut1 = !LEDOut1;
markschwarzer 0:6b2314a40652 27 }
markschwarzer 0:6b2314a40652 28 void changeLED3() //function called for other ticker object LED3
markschwarzer 0:6b2314a40652 29 {
markschwarzer 0:6b2314a40652 30 LEDOut3 = !LEDOut3;
markschwarzer 0:6b2314a40652 31 }
markschwarzer 0:6b2314a40652 32
markschwarzer 1:fdcb0bfe75b7 33 int second()
markschwarzer 1:fdcb0bfe75b7 34 {
markschwarzer 1:fdcb0bfe75b7 35 tickerLED1.attach(&changeLED1,0.2); //the address of the function to call
markschwarzer 1:fdcb0bfe75b7 36 //and the interval in seconds between
markschwarzer 1:fdcb0bfe75b7 37 //calls to that function
markschwarzer 1:fdcb0bfe75b7 38 tickerLED3.attach(&changeLED3,0.8); //changing the interval in seconds for LED3
markschwarzer 0:6b2314a40652 39
markschwarzer 1:fdcb0bfe75b7 40 while(1) {
markschwarzer 1:fdcb0bfe75b7 41 wait(0.1);
markschwarzer 1:fdcb0bfe75b7 42 wait(0.1);
markschwarzer 1:fdcb0bfe75b7 43 wait(0.1);
markschwarzer 1:fdcb0bfe75b7 44 wait(0.1);
markschwarzer 1:fdcb0bfe75b7 45 wait(0.1);
markschwarzer 1:fdcb0bfe75b7 46 //the main loop is spinning every 500ms, but the LED needs to go faster!
markschwarzer 1:fdcb0bfe75b7 47 } //while
markschwarzer 1:fdcb0bfe75b7 48 }
markschwarzer 1:fdcb0bfe75b7 49
markschwarzer 1:fdcb0bfe75b7 50