Estoy trabajando en un MSP430 conectado a la PC a través de una serie. El MSP430 también se comunica con algunas otras placas mediante una interfaz en serie modificada. Estoy usando el periférico del temporizador para golpear el bit de la serie, y estoy usando el UART para hablar con la PC.
Cuando los comandos llegan desde la 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 desactiva la interfaz bit-bang.
En el ISR de RX en serie, me gustaría permitir que la interrupción del temporizador continúe siendo reparada, pero me gustaría evitar que la RX en serie se interrumpa a sí misma (lo que no debería ser posible para mi aplicación específica, pero quisiera proteger contra esto por si acaso)
- ¿Debería simplemente enmascarar manualmente la interrupción de RX en serie en la parte superior de la ISR en serie y luego habilitar interrupciones globales?
- ¿También necesito desenmascarar la interrupción de RX en serie al final?
- ¿Debo borrar manualmente los indicadores de solicitud de interrupción?
-
Después de que regrese el ISR del temporizador, ¿continuará ISR en serie y luego regresará al bucle principal?
-
¿Debo considerar alguna condición de raza potencial?
- ¿Hay una solución mejor?
- ¿Hay un artículo sobre la interrupción y la interrupción? (Ya he leído sobre interrupciones anidadas en la guía del usuario)