Timer, Timeout, Ticker, PWM, Debounce

Dependencies:   mbed

Committer:
madmonkeyman82
Date:
Thu Oct 15 16:05:38 2015 +0000
Revision:
0:9084eb4405d5
Timer, Timeout, Ticker, PWM, Debounce

Who changed what in which revision?

UserRevisionLine numberNew contents of line
madmonkeyman82 0:9084eb4405d5 1 #include "mbed.h"
madmonkeyman82 0:9084eb4405d5 2
madmonkeyman82 0:9084eb4405d5 3 //------------------------------------
madmonkeyman82 0:9084eb4405d5 4 // Hyperterminal configuration
madmonkeyman82 0:9084eb4405d5 5 // 9600 bauds, 8-bit data, no parity
madmonkeyman82 0:9084eb4405d5 6 //------------------------------------
madmonkeyman82 0:9084eb4405d5 7
madmonkeyman82 0:9084eb4405d5 8 Serial pc(SERIAL_TX, SERIAL_RX);
madmonkeyman82 0:9084eb4405d5 9
madmonkeyman82 0:9084eb4405d5 10 Ticker toggle_led_ticker;
madmonkeyman82 0:9084eb4405d5 11 Timeout timedown;
madmonkeyman82 0:9084eb4405d5 12
madmonkeyman82 0:9084eb4405d5 13 //define pins
madmonkeyman82 0:9084eb4405d5 14 DigitalOut led1(PA_9);
madmonkeyman82 0:9084eb4405d5 15 InterruptIn SW7(PB_3);
madmonkeyman82 0:9084eb4405d5 16 InterruptIn SW6(PA_10);
madmonkeyman82 0:9084eb4405d5 17
madmonkeyman82 0:9084eb4405d5 18 //Variables
madmonkeyman82 0:9084eb4405d5 19 static float tickertimer = 0.1;
madmonkeyman82 0:9084eb4405d5 20
madmonkeyman82 0:9084eb4405d5 21 //Prototypes
madmonkeyman82 0:9084eb4405d5 22 void toggle_led();
madmonkeyman82 0:9084eb4405d5 23 void timeouttick();
madmonkeyman82 0:9084eb4405d5 24 void interrupt();
madmonkeyman82 0:9084eb4405d5 25
madmonkeyman82 0:9084eb4405d5 26
madmonkeyman82 0:9084eb4405d5 27 void timeouttick()
madmonkeyman82 0:9084eb4405d5 28 {
madmonkeyman82 0:9084eb4405d5 29 SW7.enable_irq();
madmonkeyman82 0:9084eb4405d5 30 SW6.enable_irq();
madmonkeyman82 0:9084eb4405d5 31 }
madmonkeyman82 0:9084eb4405d5 32
madmonkeyman82 0:9084eb4405d5 33 void interruptSW7(){
madmonkeyman82 0:9084eb4405d5 34 SW7.disable_irq();
madmonkeyman82 0:9084eb4405d5 35 timedown.attach(&timeouttick, 0.03); //debounce
madmonkeyman82 0:9084eb4405d5 36 if(tickertimer > 0.00f)
madmonkeyman82 0:9084eb4405d5 37 tickertimer += 0.01f;
madmonkeyman82 0:9084eb4405d5 38 if(tickertimer > 0.00f)
madmonkeyman82 0:9084eb4405d5 39 {
madmonkeyman82 0:9084eb4405d5 40
madmonkeyman82 0:9084eb4405d5 41 toggle_led_ticker.attach(&toggle_led, tickertimer);
madmonkeyman82 0:9084eb4405d5 42 }
madmonkeyman82 0:9084eb4405d5 43 else
madmonkeyman82 0:9084eb4405d5 44 {
madmonkeyman82 0:9084eb4405d5 45 toggle_led_ticker.detach();
madmonkeyman82 0:9084eb4405d5 46 }
madmonkeyman82 0:9084eb4405d5 47 }
madmonkeyman82 0:9084eb4405d5 48
madmonkeyman82 0:9084eb4405d5 49 void interruptSW6(){
madmonkeyman82 0:9084eb4405d5 50 SW6.disable_irq();
madmonkeyman82 0:9084eb4405d5 51 timedown.attach(&timeouttick, 0.03); //debounce
madmonkeyman82 0:9084eb4405d5 52
madmonkeyman82 0:9084eb4405d5 53 tickertimer -= 0.01f;
madmonkeyman82 0:9084eb4405d5 54 toggle_led_ticker.attach(&toggle_led, tickertimer);
madmonkeyman82 0:9084eb4405d5 55 }
madmonkeyman82 0:9084eb4405d5 56
madmonkeyman82 0:9084eb4405d5 57 void toggle_led() {
madmonkeyman82 0:9084eb4405d5 58 led1 = !led1;
madmonkeyman82 0:9084eb4405d5 59 }
madmonkeyman82 0:9084eb4405d5 60
madmonkeyman82 0:9084eb4405d5 61 int main() {
madmonkeyman82 0:9084eb4405d5 62
madmonkeyman82 0:9084eb4405d5 63 pc.printf("Velkommen\r\n");
madmonkeyman82 0:9084eb4405d5 64 //attach interrup to faling edge
madmonkeyman82 0:9084eb4405d5 65 SW7.fall(&interruptSW7);
madmonkeyman82 0:9084eb4405d5 66 SW6.fall(&interruptSW6);
madmonkeyman82 0:9084eb4405d5 67
madmonkeyman82 0:9084eb4405d5 68 // Init the ticker with the address of the function (toggle_led) to be attached and the interval (100 ms)
madmonkeyman82 0:9084eb4405d5 69
madmonkeyman82 0:9084eb4405d5 70
madmonkeyman82 0:9084eb4405d5 71
madmonkeyman82 0:9084eb4405d5 72 while (true) {
madmonkeyman82 0:9084eb4405d5 73 pc.printf("tickertimer: %2.3f\r\n", tickertimer);
madmonkeyman82 0:9084eb4405d5 74 pc.printf("t\r\n");
madmonkeyman82 0:9084eb4405d5 75 // Do other things...
madmonkeyman82 0:9084eb4405d5 76 }
madmonkeyman82 0:9084eb4405d5 77 }