AYUDA CON EDU-CIAA

270 views
Skip to first unread message

Lucas Alberto Escribano

unread,
Mar 14, 2016, 6:00:15 PM3/14/16
to embebidos32
Gente necesito ayuda para el manejo de interrupciones. Configuré correctamente el TIMER0 para que me largue una interrupción cada matchval ciclos de reloj. El tema es que cuando estoy debuggiando, correctamente cuando llega al valor de matchval me coloca el flag en alto del match0 en IR (lo configuré así), pero no puedo hacer que se me vaya al handler. Me fijé y está correctamente configurado el bit de interrupción (Chip_TIMER_MatchEnableInt(LPC_TIMER0,0)). Se me hace que el problema está en activar las interrupciones globales, o algo por el estilo. Lo estoy haciendo en Baremetal.

Va el código que ultilicé:

////////////////////////////////
// Configuración del Timer0   //
////////////////////////////////

//Chip_TIMER_PrescaleSet(LPC_TIMER_T *pTMR, uint32_t prescale)
Chip_TIMER_PrescaleSet(LPC_TIMER0, 2);

//Chip_TIMER_SetMatch(LPC_TIMER_T *pTMR, int8_t matchnum, uint32_t matchval)
Chip_TIMER_SetMatch(LPC_TIMER0,0, 10000);

//Chip_TIMER_MatchEnableInt(LPC_TIMER_T *pTMR, int8_t matchnum)
Chip_TIMER_MatchEnableInt(LPC_TIMER0,0);

//Chip_TIMER_ResetOnMatchEnable(LPC_TIMER_T *pTMR, int8_t matchnum)
Chip_TIMER_ResetOnMatchEnable(LPC_TIMER0, 0);

 //Chip_TIMER_StopOnMatchEnable(LPC_TIMER_T *pTMR, int8_t matchnum)
Chip_TIMER_StopOnMatchEnable(LPC_TIMER0, 0);

//Inicializo el TIMER0 con las configuraciones pre cargadas
Chip_TIMER_Init(LPC_TIMER0);

 //Inicializo la cuenta, supuestamente cuando salta la interrupcion de TIMER0 deberia parar (A PROBAR).
Chip_TIMER_Enable(LPC_TIMER0);

 ///////////////////////////////////////////////////////////////////////////

Muchas gracias a todos. Espero me puedan ayudar. Saludos!!!

Pablo Ridolfi

unread,
Mar 14, 2016, 6:18:37 PM3/14/16
to embebidos32

Lo vi medio rápido pero me parece que te falta habilitar la IRQ en el NVIC.


--
-- Recibiste este mensaje porque estás suscripto al Grupo Google Embebidos32. Para postear en este grupo, escribe un email a embeb...@googlegroups.com. Para des-suscribirte, envía un email a embebidos32...@googlegroups.com. Para más opciones, visita el sitio del grupo en https://groups.google.com/d/forum/embebidos32?hl=es
---
Has recibido este mensaje porque estás suscrito al grupo "Embebidos32" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a embebidos32...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Matias Ferraro

unread,
Mar 15, 2016, 9:23:17 AM3/15/16
to embeb...@googlegroups.com
Hola Lucas, yo use el Timer para mostrar un contador en el display de 16x2, arranca desde 0, adjunto el código que programe, el código esta funcionando probado con un poncho con display de 16x2 en la EDU-CIAA, fíjate que lo que no le programe es que cuando llega al limite de uint32_t la variable que lleva el conteo se ponga a cero e inicie el conteo nuevamente, lo programe así para ver que pasaba cuando se va de rango:)

Fijate como esta el archivo vector.c el IRQ11.

Saludos: Matias


ejemplo_uso_timer.c
vector.c

Lucas Alberto Escribano

unread,
Mar 15, 2016, 10:05:33 AM3/15/16
to Matias Ferraro, embeb...@googlegroups.com, pablor...@gmail.com

Ya lo solucioné. Como predije y bien me dijo Pablo Ridolfi me faltaba habilitar la interrupción del Timer0, pero no encontraba donde. De todas formas ya estoy mirando el archivo que me mando Matías, seguramente me servirá de ayuda para ordenar un poco la cosa.

 

MUCHAS GRACIAS!!!

 

Enviado desde Correo para Windows 10

Reply all
Reply to author
Forward
0 new messages