Ejercicio uno del primer trabajo practico de la materia Sistemas Embebidos 2018
Dependencies: antirrebote mbed
ej1.cpp
- Committer:
- Tom_87
- Date:
- 2018-06-12
- Revision:
- 0:009746e1ce2d
File content as of revision 0:009746e1ce2d:
#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(); }