lunes, 27 de enero de 2014

Eventos

MARCO TEÓRICO

Las tareas pueden esperar a que una combinación de eventos de bits sea puesta en 1. Una tarea puede poner en 1 o 0 una combinación de eventos de bits. Los eventos también pueden ser utilizados para sincronizar una tarea con otra.
El componente llamado evento consiste en grupos de eventos, los cuales son agrupaciones de los eventos de bits.
  • Las tareas pueden esperar por todos o cualquier evento de bits que se ponga en 1.
  • Los grupos de eventos pueden ser identificados por nombre o por index.
  • Cualquier tarea puede esperar por eventos de bits en cualquier grupo de eventos.
  • Cuando el evento de bits esta puesto en 1, MQX pone todas las tareas en espera, las cuales esperaran por una condición conocida en la fila.
  • Si un grupo de eventos tiene eventos de bits de autoclearing, MQX limpia los bits de evento tan pronto como estos fueron puestos en 1.


Para poder utilizar los eventos en MQX lightweight, es necesario habilitarlo en “component inspector” además de agregar el archivo de cabecera “lwevents.h”.

Creación de Eventos.

LWEVENT_STRUCT lwevent;  //Crea una variable del tipo evento

·         Para crear un grupo de eventos:
_mqx_uint _lwevent_create(lwevent_ptr, flags)

·         Para colocar especificado bit de evento en un grupo de eventos:
_mqx_uint _lwevent_set(lwevent_ptr, mask)

·         Para limpiar especificado bit de evento en un grupo de eventos:
_mqx_uint _lwevent_clear(lwevent_ptr, mask)


Ejemplo.

El programa consiste en 4 tareas. A continuación se muestra la tabla de características.


Name
Stack Size
Priority
MQX_AUTO_START_TASK
Task1
Inicio
512
8
Enable
Task2
Rojo
512
9
Enable
Task3
Verde
512
9
Enable
Task4
Azul
512
9
Enable
Tabla 4. Características de las tareas.

El programa inicia con la creación del evento dentro del código de la tarea Inicio, que es la que se ejecuta primero por tener la más alta prioridad. Una vez creado el evento, la tarea se bloquea y el administrador ejecuta la siguiente tarea.

Ver Codigo

No hay comentarios:

Publicar un comentario