Consulta Ejemplos Uart Interrupt EDU-CIAA firmware_v3

157 views
Skip to first unread message

Anus Martin

unread,
Jul 8, 2021, 8:40:12 PM7/8/21
to Embebidos32
Buenas, estoy trabajando con la placa EDU-CIAA y estoy teniendo problemas con los ejemplos del firmware_v3 que utilizan la UART por interrupción:


El problema que tengo es que cuando se produce la interrupción no se ejecuta nunca la función de interrupción definida en el uartCallbackSet(x,x,onRx,x). "onRx"para el caso de rx_interrupt, o la función que se configure para los otros ejemplos.
En cambio, se ejecuta el Handler por defecto, IntDefaultHandler(), y queda colgado en el while(1).  

Cuando corro el programa en debug se ejecutan todas las lineas que se espera llegando a setear el valor del puntero de la función de interrupción 
rxIsrCallbackUART2 = callbackFunc;

Sin embargo al momento de producir la interrupción entra al handler por defecto sin pasar nunca por el handler configurado. 


Alguien sabe o se le ocurre donde podría estar fallando código o si falta hacer alguna configuración adicional? 


Desde ya muchas gracias y saludos a todos

Martín Anús,
Estudiante de la FIUBA


David Broin

unread,
Jul 9, 2021, 10:52:13 AM7/9/21
to embeb...@googlegroups.com
Hola Martí, la verdad que hace bastante que no uso nada de la EDU-CIAA. El año pasado presenté este TP en una de las materias de la CESE y funcionaba bien. El ejemplo usa FreeRTOS, pero la parte del manejo de interrupciones debería ser igual. Y de hecho es prácticamente igual a los ejemplos. https://gitlab.com/posgrado/cese/RTOS-1/slot-machine-cli

No se si estás probando los ejemplos, tal cual como están, o cambiando algo. En mi caso, recuerdo que alguna vez tuve un problema similar por no habilitar las interrupciones. Ver: https://github.com/ciaa/firmware_v3/blob/master/examples/c/sapi/uart/rx_interrupt/config.mk#L11

Saludos.

--
-- 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 cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a embebidos32...@googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/embebidos32/48693de2-bfe4-41b8-978a-7297dda12f41n%40googlegroups.com.

Leandro Palazzo

unread,
Jul 9, 2021, 11:27:00 AM7/9/21
to embeb...@googlegroups.com

Anus Martin

unread,
Jul 9, 2021, 2:53:57 PM7/9/21
to embeb...@googlegroups.com
David, Leandro, muchas gracias por sus respuestas! 

Estuve mirando algunos de los ejemplos que me compartieron y al correrlos me sigue pasando el mismo problema. 

Parece que se setea bien el handler de la interrupción pero en el momento que sucede la interrupción no va a esa función definida, sino que queda atrapado en el handler por defecto IntDefaultHandler(). 

Ya revisé el config.mk y están bien definidas las interrupciones con:
DEFINES+=SAPI_USE_INTERRUPTS
De hecho, al correrlo en debug se ve que entra en los bloques correspondientes al estar definida esta opción. 

Voy a seguir revisando a ver si no modifiqué accidentalmente algún archivo de las librerías del firmware_v3.  


Cualquier recomendación o sugerencia es más que bienvenida

Saludos y gracias
Martín

Has recibido este mensaje porque estás suscrito a un tema del grupo "Embebidos32" de Grupos de Google.
Para cancelar la suscripción a este tema, visita https://groups.google.com/d/topic/embebidos32/14mtGNMiKt4/unsubscribe.
Para cancelar la suscripción a este grupo y a todos sus temas, envía un correo electrónico a embebidos32...@googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/embebidos32/CAEpiJ%2BRafXDO%2BGzbr%3DL1YaQvbPq4xKk4A2vRV-hzvywZqx-hAQ%40mail.gmail.com.

Franco Bucafusco

unread,
Jul 9, 2021, 7:31:09 PM7/9/21
to embeb...@googlegroups.com
Hola!
Hay un bug en firmware v3 master con el tema de isrs.
podes ver el issue y el workarround aqui ISR + FreeRTOS don't work · Issue #59 · epernia/firmware_v3


Si bien no creo que estes usando freertos, pasaria lo mismo para baremetal

Espero que te funcione!

sds

--------------------------------------------------------- Franco Bucafusco ---------------------------------------------------------


Ignacio Majul

unread,
Jul 10, 2021, 3:09:24 PM7/10/21
to embeb...@googlegroups.com
Buenas Martin! Hace poco me pasó lo mismo que a vos, actualicé firmware_v3 y me dejaron de andar las ISR (no entraba nunca al handler y se iba siempre al while(1)).
No encontré el error y decidí volver atrás hasta este commit donde ese problema no estaba. Ahora veo que una de las diferencias respecto al último release está justamente en vendor_interrupt.c como menciona Franco. 
Avisa si lo solucionas!

slds

Anus Martin

unread,
Jul 12, 2021, 3:52:56 PM7/12/21
to embeb...@googlegroups.com
Hola Franco e Ignacio, muchas gracias por sus aportes. 

Efectivamente estaba teniendo problemas con ese bug del firmware_v3. 
Realicé el cambio sobre el archivo vendro_interrupt.c tal como proponen en el issue que mencionaron y funciona perfectamente! 

SOLUCIONADO

Gracias a todos y saludos 


Reply all
Reply to author
Forward
0 new messages