alonso vallejo
/
lab8_PIT
timers
main.cpp@0:fb3a37cd5aac, 2015-05-29 (annotated)
- Committer:
- Alonso
- Date:
- Fri May 29 13:21:25 2015 +0000
- Revision:
- 0:fb3a37cd5aac
lab8 para fime
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Alonso | 0:fb3a37cd5aac | 1 | #include "mbed.h" |
Alonso | 0:fb3a37cd5aac | 2 | /* En esta practica se muestra la configuracion para el uso de ISR(interrupt serrvice rutine) |
Alonso | 0:fb3a37cd5aac | 3 | del microcontrolador que usa la FRDM, la practica trata de cambiar el estado del led rgb |
Alonso | 0:fb3a37cd5aac | 4 | en sus 3 colores diferentes, rojo, verde y azul, en peridos de 1 segundo. Para la demostracion |
Alonso | 0:fb3a37cd5aac | 5 | se programa una maquina de estados*/ |
Alonso | 0:fb3a37cd5aac | 6 | |
Alonso | 0:fb3a37cd5aac | 7 | Ticker rgb; // se le asigna un identificador a la ISR que se va a utilizar llamado rgb. |
Alonso | 0:fb3a37cd5aac | 8 | |
Alonso | 0:fb3a37cd5aac | 9 | DigitalOut rgb_rojo(LED_RED,1); // se configura el led rojo como salida, estado incial apagado |
Alonso | 0:fb3a37cd5aac | 10 | DigitalOut rgb_verde(LED_GREEN,1);// se configura el led verde como salida, estado incial apagado |
Alonso | 0:fb3a37cd5aac | 11 | DigitalOut rgb_azul(LED_BLUE,1);// se configura el led azul como salida, estado incial apagado |
Alonso | 0:fb3a37cd5aac | 12 | int estado_led=1; // variable que se usa en la maquina de estados para el cambio de color del rgb |
Alonso | 0:fb3a37cd5aac | 13 | |
Alonso | 0:fb3a37cd5aac | 14 | void blink_rgb(void) // funcion que se llama cada 1 segundo por la ISR |
Alonso | 0:fb3a37cd5aac | 15 | { |
Alonso | 0:fb3a37cd5aac | 16 | switch(estado_led) |
Alonso | 0:fb3a37cd5aac | 17 | { |
Alonso | 0:fb3a37cd5aac | 18 | case 1: |
Alonso | 0:fb3a37cd5aac | 19 | rgb_rojo = 0; |
Alonso | 0:fb3a37cd5aac | 20 | rgb_verde = 1; |
Alonso | 0:fb3a37cd5aac | 21 | rgb_azul = 1; |
Alonso | 0:fb3a37cd5aac | 22 | estado_led = 2; // se cambia el valor de variable a 2 |
Alonso | 0:fb3a37cd5aac | 23 | break; |
Alonso | 0:fb3a37cd5aac | 24 | case 2: |
Alonso | 0:fb3a37cd5aac | 25 | rgb_rojo = 1; |
Alonso | 0:fb3a37cd5aac | 26 | rgb_verde = 0; |
Alonso | 0:fb3a37cd5aac | 27 | rgb_azul = 1; |
Alonso | 0:fb3a37cd5aac | 28 | estado_led = 3;// se cambia el valor de variable a 3 |
Alonso | 0:fb3a37cd5aac | 29 | break; |
Alonso | 0:fb3a37cd5aac | 30 | case 3: |
Alonso | 0:fb3a37cd5aac | 31 | rgb_rojo = 1; |
Alonso | 0:fb3a37cd5aac | 32 | rgb_verde = 1; |
Alonso | 0:fb3a37cd5aac | 33 | rgb_azul = 0; |
Alonso | 0:fb3a37cd5aac | 34 | estado_led = 1;// se resetea el valor de la variable a 1. |
Alonso | 0:fb3a37cd5aac | 35 | break; |
Alonso | 0:fb3a37cd5aac | 36 | default: // led rgb apagado |
Alonso | 0:fb3a37cd5aac | 37 | rgb_rojo = 1; |
Alonso | 0:fb3a37cd5aac | 38 | rgb_verde = 1; |
Alonso | 0:fb3a37cd5aac | 39 | rgb_azul = 1; |
Alonso | 0:fb3a37cd5aac | 40 | break; |
Alonso | 0:fb3a37cd5aac | 41 | } |
Alonso | 0:fb3a37cd5aac | 42 | } |
Alonso | 0:fb3a37cd5aac | 43 | |
Alonso | 0:fb3a37cd5aac | 44 | int main() |
Alonso | 0:fb3a37cd5aac | 45 | { |
Alonso | 0:fb3a37cd5aac | 46 | rgb.attach(&blink_rgb,1.0);// confiracion de la ISR para que se genere cada 1 segundo indicando la funcion que se ejecutara. |
Alonso | 0:fb3a37cd5aac | 47 | |
Alonso | 0:fb3a37cd5aac | 48 | while(1) |
Alonso | 0:fb3a37cd5aac | 49 | { |
Alonso | 0:fb3a37cd5aac | 50 | |
Alonso | 0:fb3a37cd5aac | 51 | } |
Alonso | 0:fb3a37cd5aac | 52 | } |