Tick tac

Dependencies:   mbed

Committer:
madmonkeyman82
Date:
Thu Oct 15 15:39:21 2015 +0000
Revision:
0:f7151b9c0538
first

Who changed what in which revision?

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