Ejercicio uno del primer trabajo practico de la materia Sistemas Embebidos 2018

Dependencies:   antirrebote mbed

Files at this revision

API Documentation at this revision

Comitter:
Tom_87
Date:
Tue Jun 12 17:12:27 2018 +0000
Commit message:
programa que controla el titileo de un led por medio de un pulsador

Changed in this revision

antirrebote.lib Show annotated file Show diff for this revision Revisions of this file
ej1.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/antirrebote.lib	Tue Jun 12 17:12:27 2018 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/teams/Sistemas-Embebidos/code/antirrebote/#df73a4aa4ff8
--- /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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Tue Jun 12 17:12:27 2018 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/mbed_official/code/mbed/builds/5aab5a7997ee
\ No newline at end of file