Estoy trabajando con un MSP430 conectado al PC vía serial. El MSP430 también se comunica con algunas otras placas usando una interfaz serial de bit-bang. Estoy usando el periférico del temporizador para bit bang la serie, y estoy usando la UART para hablar con el PC.
Cuando los comandos llegan desde el PC, la interrupción USCIAB0RX_VECTOR se ejecuta, y mientras se ejecuta, bloquea otras interrupciones. Sin embargo, algunas veces mi rutina de RX en serie tarda un poco, lo que retrasa la interrupción del temporizador y desconecta la interfaz de bit-bang.
En el ISR de la RX en serie, me gustaría permitir que la interrupción del temporizador siga siendo atendida, pero me gustaría evitar que la RX en serie se interrumpa a sí misma (lo que no debería ocurrir en mi aplicación específica, pero me gustaría protegerme contra esto por si acaso)
-
¿Debería simplemente enmascarar manualmente la interrupción RX serie en la parte superior del ISR serie, y luego habilitar las interrupciones globales?
-
¿También tengo que desenmascarar la interrupción RX en serie al final?
-
¿Tengo que borrar manualmente algún indicador de solicitud de interrupción?
-
Después de que el ISR del temporizador regrese, ¿continuará el ISR de la serie, y luego volverá al bucle principal?
-
¿Hay alguna condición potencial de la carrera que deba tener en cuenta?
-
¿Hay una solución mejor?
-
¿Existe algún artículo sobre las interrupciones y las interrupciones? (ya he leído sobre las interrupciones anidadas en la guía del usuario)