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
|
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.
- 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.
- Una vez que se guarda el TASK_ID, se bloquean dos de las tareas con la instrucción _task_block().
- 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.
- 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