domingo, 26 de enero de 2014

Secuencia de Encendido de Leds



OBJETIVO


Esta práctica y las siguientes consisten en crear un programa, el cual siga una secuencia de colores de leds, las siguientes prácticas harán uso de distintas herramientas que proporciona MQX.

DESARROLLO

Para lograr esto se agregarán 3 tareas, las cuales serán las encargadas de realizar dicha secuencia.
Para agregar más tareas al proyecto, se tiene que dirigir al componente MQX1: MQXLite, ubicado en la ventana de Components.

Figura 1. Ventana Componentes

Una vez seleccionado el componente en la ventana “Component Inspector” se visualizarán las propiedades del Bean, es en esta ventana donde se pueden agregar más tareas.

Figura 7. Propiedades del bean MQX

Una vez agregadas las tareas se puede presionar el botón Generate Code, para que CW cree el código necesario.
Las tareas tendrán las siguientes características.


Name
Stack Size
Priority
MQX_AUTO_START_TASK
Task1
Rojo
512
8
ENABLE
Task2
Verde
512
8
ENABLE
Task3
Azul
512
8
ENABLE
 Tabla 1. Propiedades de las tareas.

MQX es un sistema operativo, el cual se basa en ciertas reglas para ejecutar las tareas y de esta manera administrar de una mejor manera el tiempo del procesador. Una de estas reglas es la prioridad de las tareas, por lo que el administrador ejecuta la de mas alta prioridad (numero mas pequeño).
Como se puede observar en la configuración del proyecto las 3 tareas tienen la misma prioridad por lo que el administrador decide por su cuenta cual ejecutar primero.

El programa consiste en encender en primer lugar uno de los leds, por ejemplo el azul, posteriormente el rojo, y luego el verde. Para hacer esto se han creado tres tareas de autostart, lo que quiere decir que las tres se estarían ejecutando casi al mismo tiempo, lo que provocaría que no se pudieran distinguir los colores. Es por eso que es necesario que únicamente solo una tarea este lista, por lo que las otras estarían bloqueadas.
Las tareas trabajan de la siguiente manera.
  1. En primer lugar las tareas se identifican, es decir, cuando MQX las crea, éste les asigna un número de identificación (TASK_ID), por lo que cuando inicia el programa se guarda su TASK_ID en una variable global.
  2. Una vez que se guarda el TASK_ID, se bloquean dos de las tareas con la instrucción _task_block().
  3. Una vez que la tarea activa termine su trabajo, ésta pondrá lista la siguiente mediante la instrucción _task_ready( ), donde es necesario pasarle como argumento el TASK_ID de una de las tareas bloqueadas.
  4. Después de la instrucción _task_ready(), la tarea se bloquea nuevamente con el objetivo de que solo una este activa.

Para el desarrollo del proyecto, es necesario agregar tres beans, los cuales estén conectados al led tricolor del microcontrolador. A continuación se presentan las características de los beans agregados. 


Component Name
Pin for i/o
Direction
Init Value
Bean del led Rojo
Red_LED
TSI0_CH11/PTB18/TPM2_CH0
Output
1
Bean del led Verde
Green_LED
TSI0_CH12/PTB19/TPM2_CH1
Output
1
Bean del led Azul
Blue_LED
ADC0_SE5b/PTD1/SPI0_SCK/TPM0_CH1
Output
1
Tabla 2. Propiedades de los Bean.

No hay comentarios:

Publicar un comentario