alonso vallejo
/
lab8_PIT
timers
Diff: main.cpp
- Revision:
- 0:fb3a37cd5aac
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Fri May 29 13:21:25 2015 +0000 @@ -0,0 +1,52 @@ +#include "mbed.h" +/* En esta practica se muestra la configuracion para el uso de ISR(interrupt serrvice rutine) + del microcontrolador que usa la FRDM, la practica trata de cambiar el estado del led rgb + en sus 3 colores diferentes, rojo, verde y azul, en peridos de 1 segundo. Para la demostracion + se programa una maquina de estados*/ + +Ticker rgb; // se le asigna un identificador a la ISR que se va a utilizar llamado rgb. + +DigitalOut rgb_rojo(LED_RED,1); // se configura el led rojo como salida, estado incial apagado +DigitalOut rgb_verde(LED_GREEN,1);// se configura el led verde como salida, estado incial apagado +DigitalOut rgb_azul(LED_BLUE,1);// se configura el led azul como salida, estado incial apagado +int estado_led=1; // variable que se usa en la maquina de estados para el cambio de color del rgb + +void blink_rgb(void) // funcion que se llama cada 1 segundo por la ISR +{ + switch(estado_led) + { + case 1: + rgb_rojo = 0; + rgb_verde = 1; + rgb_azul = 1; + estado_led = 2; // se cambia el valor de variable a 2 + break; + case 2: + rgb_rojo = 1; + rgb_verde = 0; + rgb_azul = 1; + estado_led = 3;// se cambia el valor de variable a 3 + break; + case 3: + rgb_rojo = 1; + rgb_verde = 1; + rgb_azul = 0; + estado_led = 1;// se resetea el valor de la variable a 1. + break; + default: // led rgb apagado + rgb_rojo = 1; + rgb_verde = 1; + rgb_azul = 1; + break; + } +} + +int main() +{ + rgb.attach(&blink_rgb,1.0);// confiracion de la ISR para que se genere cada 1 segundo indicando la funcion que se ejecutara. + + while(1) + { + + } +}