Estoy programando un microcontrolador PIC para atender dos eventos a través de interrupciones en un entorno muy limitado de tiempo.
Los microcontroladores PIC permiten un modo SLEEP que activa a la PCU en cualquier interrupción externa (INTn) pero tiene un retardo de activación dependiendo del modo de oscilador seleccionado.
Quiero saber qué opción comenzaría a atender las interrupciones más rápido. Un bucle principal como este:
//CPU never goes to sleep, keeps executing a jump
void main(){
while(1){}
}
o un bucle principal como este:
//CPU goes to sleep (idle), waits for INTn interrupts.
void main(){
while(1){
asm SLEEP;
}
}
El despertar del sueño inactivo parece tomar 2 ciclos de acuerdo con el PIC18F4XK22 mientras que una instrucción de salto (de un bucle de tiempo infinito puede demorar más y puede ser interrumpible hasta la mitad de la ejecución del salto.