Ejercicio uno del primer trabajo practico de la materia Sistemas Embebidos 2018
Dependencies: antirrebote mbed
Diff: ej1.cpp
- Revision:
- 0:009746e1ce2d
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ej1.cpp Tue Jun 12 17:12:27 2018 +0000 @@ -0,0 +1,85 @@ +#include "mbed.h" //Si se toca el pulsador comienza la secuencia de "Blinky LED" +#include "antirrebote.h" //Si se vuelve a presionar, se apaga el LED + //Declaración de valores de estados +enum {ON = 0, + OFF = 1, + COMP = 1, + INC = 0, + S_OFF = 0, + S_WAIT, + S_ON, + S_OUT = 0, + S_LON, S_LOFF}; + +//Seteo de entradas y salidas +DigitalIn Puls(PTC0); //Este tiene una configuracion PULL_UP (Presionado => "0"/ NO Presionado => "1") +DigitalOut LedRojo(LED1); + +Ticker wait_puls, wait_led; //Seteo de nombres de objetos tipo "Ticker" +AntReb puls_detect; + +//Prototipos de funciones + +void SM_BLINKING_LED(); +void interrupt_puls(); +void interrupt_led(); +//Seteo de valores iniciales de variables que funcionan como memorias +int blink = OFF, + state_pul = 0, + state_b, + timeP_complete = INC, + timeL_complete = INC; +char hab; + +int main(void){ //Función de los objetos + char Pulso; + LedRojo=1; + wait_puls.attach(&interrupt_puls,0.01); //Llamará a la función "interrupt_puls" cada 0.1s (100ms) + wait_led.attach(&interrupt_led,0.5); //Llamará a la función "interrupt_led" cada 0.5s (500ms) + + + while(true){ //Función infinita (LOOP) + //Llamado de las funciones + puls_detect.setPin(PTC7); + Pulso = puls_detect.antiRebote(); + if (Pulso==1) + blink= !blink; + SM_BLINKING_LED(); + } +} +// ------------------------------------------------------------------------------------------------------- +//A partir de este comentario se realizarán las definiciones de cada función + +//Máquina de estados de un "Debounce Switch" (Pulsador Antirrebote) +void SM_ANTI_REBOTE(void){ //Este switch variará según el estado del pulsador + +} +//Máquina de estados del "Blinky LED" (LED Titilando) +void SM_BLINKING_LED(void){ + switch(state_b) + { + case S_OFF: + LedRojo = 1; + if(blink == ON) + state_b = S_ON; + break; + + case S_ON: + if (timeL_complete == COMP){ + LedRojo = !LedRojo; + timeL_complete = INC; + } + if(blink == OFF) + state_b=S_OFF; + break; + } + +} +//Esta función hará posbile el parpadeo del LED +void interrupt_led(void){ + timeL_complete = COMP; +} +//Esta función hará posible el antirrebote del pulsador +void interrupt_puls(void){ +puls_detect.DebTime(); +} \ No newline at end of file