Las interrupciones de software pueden utilizarse para terminar una tarea de interrupción con una prioridad menor. El código crítico para la sincronización suele tener una alta prioridad de interrupción para evitar una latencia excesiva. Una vez que la parte crítica para la sincronización está terminada, puede haber tareas adicionales que pueden ser demasiado críticas para la sincronización del bucle principal, pero no son tan críticas como para detener otras interrupciones de alta prioridad. El disparo de una interrupción de software de baja prioridad puede lograr esto.
Por ejemplo, suponga que tiene varios motores paso a paso, cada uno con su propio temporizador. Las interrupciones del temporizador tienen una alta prioridad para minimizar el jitter de los pasos. La tarea más crítica para la temporización puede ser tan simple como establecer o borrar un pulso de paso o avanzar las salidas de fase. Puede haber funcionalidad adicional requerida como el cálculo de las rampas de aceleración, el procesamiento de los sensores, etc. Ya que esto necesita ser procesado en cada paso, puede no ser apropiado procesar esto desde main() ya que el tiempo del bucle principal puede ser demasiado largo. Estas tareas adicionales pueden ser procesadas por una interrupción de software de baja prioridad para no aumentar la latencia de los otros canales de paso de alta prioridad.
¿Cuál es la diferencia entre una interrupción de software y una función?
Una función se llama inmediatamente desde donde se llama y no cambia el nivel de prioridad de la interrupción actual si se llama desde una interrupción. Una interrupción de software es un disparador de interrupción que hará que se llame a esa interrupción cuando su prioridad suba. Si una llamada a una función se insertara al final de una interrupción de alta prioridad, la función estaría contenida dentro de esa alta prioridad. Al disparar la interrupción de software de menor prioridad y luego regresar de la interrupción de alta prioridad, la función es llamada con la nueva (menor) prioridad.
1 votos
Creo que el propósito principal de usar interrupciones es que puedes seguir haciendo otras tareas importantes mientras eso está esperando a que ocurra algo más, y cuando los tiempos no van a ser siempre constantes. También creo que es un poco más rápido que el sondeo en la mayoría de los casos.
1 votos
@MrPhooky Eso que dices son interrupciones de Hardware. El OP está hablando de las interrupciones de software.