Interrupciones en FreeRTOS
Interrupciones en FreeRTOS
Interrupciones en FreeRTOS
FreeRTOS.
Juan Alarcn.
jalarcon@electron.frba.utn.edu.ar
Agenda.
Juan Alarcn.
jalarcon@electron.frba.utn.edu.ar
Juan Alarcn.
jalarcon@electron.frba.utn.edu.ar
Juan Alarcn.
jalarcon@electron.frba.utn.edu.ar
Drivers. Objetivo.
Juan Alarcn.
jalarcon@electron.frba.utn.edu.ar
Eventos.
Los sistemas en tiempo real necesitan
responder a los eventos generados por su
entorno en tiempo conocido y acotado.
Cmo se implementa?
Encuesta
Juan Alarcn.
jalarcon@electron.frba.utn.edu.ar
Juan Alarcn.
jalarcon@electron.frba.utn.edu.ar
Uso de semforos en
interrupciones.
Un semforo binario se lo puede utilizar
para sincronizar una tarea con una
interrupcin.
Si es necesario procesar con muy baja
latencia un evento externo, el cdigo de la
interrupcin puede desbloquear una tarea
de alta prioridad para atenderlo.
Juan Alarcn.
jalarcon@electron.frba.utn.edu.ar
Semforos en interrupciones
Juan Alarcn.
jalarcon@electron.frba.utn.edu.ar
Semforos en interrupciones.
xSemaphoreGiveFromISR
(
xSemaphoreHandle xSemaphore,
signed portBASE_TYPE *pxHigherPriorityTaskWoken
)
portEND_SWITCHING_ISR
(
portBASE_TYPE HigherPriorityTaskWoken
)
Juan Alarcn.
jalarcon@electron.frba.utn.edu.ar
10
Semforos en interrupciones.
Juan Alarcn.
jalarcon@electron.frba.utn.edu.ar
11
Semforos en interrupciones.
Juan Alarcn.
jalarcon@electron.frba.utn.edu.ar
12
Juan Alarcn.
jalarcon@electron.frba.utn.edu.ar
13
Colas de mensajes en
interrupciones.
Los semforos son usados para
comunicar eventos entre tareas y entre
tareas e interrupciones.
Las colas de mensajes son usadas para
comunicar eventos y transferir datos
entre tareas y entre tareas e
interrupciones
Juan Alarcn.
jalarcon@electron.frba.utn.edu.ar
14
Juan Alarcn.
jalarcon@electron.frba.utn.edu.ar
15
portBASE_TYPE xQueueSendFromISR
(
xQueueHandle pxQueue,
const void *pvItemToQueue,
portBASE_TYPE *pxHigherPriorityTaskWoken
)
portBASE_TYPE xQueueSendToBackFromISR
(
xQueueHandle pxQueue,
const void *pvItemToQueue,
portBASE_TYPE *pxHigherPriorityTaskWoken
)
portBASE_TYPE xQueueSendToFrontFromISR
(
xQueueHandle pxQueue,
const void *pvItemToQueue,
portBASE_TYPE *pxHigherPriorityTaskWoken
)
Juan Alarcn.
jalarcon@electron.frba.utn.edu.ar
16
Juan Alarcn.
jalarcon@electron.frba.utn.edu.ar
17
18
Anidamiento de interrupciones.
Juan Alarcn.
jalarcon@electron.frba.utn.edu.ar
19
FreeRTOSConfig.h
Si configMAX_SYSCALL_INTERRUPT_PRIORITY tiene ms
prioridad que configKERNEL_INTERRUPT_PRIORITY se va a
trabajar con un esquema de anidamiento de
interrupciones.
Juan Alarcn.
jalarcon@electron.frba.utn.edu.ar
20
configMAX_SYSCALL_INTERRUPT_PRIORITY
configKERNEL_INTERRUPT_PRIORITY
Las interrupciones
que no necesitan
usar ninguna
funcin del
sistema operativo
pueden tener
cualquier prioridad
5
31
21
La intencin de este
ejemplo es generar
un driver simple (pero
completamente
funcional) de I2C para
utilizar la memoria
EEPROM (24LC64)
disponible en los
sticks de LPC1769
Juan Alarcn.
jalarcon@electron.frba.utn.edu.ar
22
I2C. Qu es?
Juan Alarcn.
jalarcon@electron.frba.utn.edu.ar
23
Juan Alarcn.
jalarcon@electron.frba.utn.edu.ar
24
Juan Alarcn.
jalarcon@electron.frba.utn.edu.ar
25
I2C. Seales.
26
I2C. Seales
27
28
Juan Alarcn.
jalarcon@electron.frba.utn.edu.ar
29
Es una memoria de
8KBytes con interfaz I2C.
Puede funcionar con un
SCL mximo de 400KHz
entre 2.5V y 5.5V.
Tiene tres bits de
direccionamiento adems
de la palabra de
configuracin de I2C
Se pueden escribir hasta
32 bytes en una sola
operacin.
Juan Alarcn.
jalarcon@electron.frba.utn.edu.ar
30
Juan Alarcn.
jalarcon@electron.frba.utn.edu.ar
31
24LC64. Escritura
Juan Alarcn.
jalarcon@electron.frba.utn.edu.ar
32
24LC64. Lectura.
Juan Alarcn.
jalarcon@electron.frba.utn.edu.ar
33
Juan Alarcn.
jalarcon@electron.frba.utn.edu.ar
34
Juan Alarcn.
jalarcon@electron.frba.utn.edu.ar
35
Juan Alarcn.
jalarcon@electron.frba.utn.edu.ar
36
Juan Alarcn.
jalarcon@electron.frba.utn.edu.ar
37
Juan Alarcn.
jalarcon@electron.frba.utn.edu.ar
38
Bibliografa.
Using the FreeRTOS Real Time Kernel. NXP LPC17xx Edition. Richard Barry.
FreeRTOS http://www.freertos.org/
Juan Alarcn.
jalarcon@electron.frba.utn.edu.ar
39