¿For For loop in MikroC for dspic bloqueará la rutina de servicio de interrupción?

0

Estoy usando MikroC para dspic30f4011. Estoy usando una interrupción de Timer3 para la lectura de ADC. En esta rutina de servicios de interrupción, estoy leyendo valores de ADC. En Void main, donde necesito algún retraso en la instrucción. ¿Timer3 Interrupción leerá el valor de ADC y actualizará la variable ADC? ¿Cómo funcionará?

Mi pregunta es que, si estoy usando una interrupción, la demora en el efecto principal de Void la interrupción. ¿Se retrasará el resto mientras se produce la interrupción?

uno más, si se usa para bucle para el retraso como se indica a continuación. Si durante el ciclo for, se produce una interrupción, la interrupción hará su tarea y luego comenzará de nuevo desde donde se interrumpe

                               for(long q = 0; q<1000000; q++){
                                //  
                                  }

si se produce una interrupción en q = 100, después del servicio de interrupción, ¿comenzará nuevamente el bucle for desde q = 101?

    
pregunta James Hock

2 respuestas

0
  

si se produce una interrupción en q = 100, después del servicio de interrupción, ¿comenzará nuevamente el bucle for desde q = 101?

Sí. El microcontrolador suspende su ejecución actual y guarda el estado actual en la pila. Luego ejecuta la rutina de servicio de interrupción (ISR). Luego restaura el estado de la pila y continúa con lo que estaba haciendo. Esa es la naturaleza de la interrupción. La ejecución normal no sabe que la interrupción se haya producido (a menos que cree una variable que haya establecido en el ISR).

Solo para ser claro sobre el bucle. No hay garantía de que la interrupción ocurra exactamente en el momento en que se inicia el ciclo. La interrupción ocurrirá de inmediato, no esperará el final del bucle. El contador del bucle en sí puede tomar varias instrucciones para incrementar y comparar (incluso si el bucle no tiene instrucciones en su interior y no se optimizó).

    
respondido por el Nick Alexeev
0

Mientras las interrupciones estén habilitadas, la interrupción debe dispararse bien durante el ciclo y la ejecución debe continuar en el circuito donde se detuvo una vez que finaliza el controlador de interrupciones. Este es básicamente el punto central de las interrupciones, para permitir el procesamiento crítico en el tiempo (por ejemplo, la operación ADC) con una interrupción mínima de una tarea diferente (bucle de retardo, en este caso).

    
respondido por el alex.forencich

Lea otras preguntas en las etiquetas