en una máquina no dedicada es posible que durante una interrupción ocurra una interrupción a la anterior ??? por ejemplo:
#define DUR 10
int t;
...
void tiempo ( ) { t++; }
...
void tarea ( ) {
t = 0;
while(t < DUR); // espero al clock DUR períodos
// aca irian otras cosas, habilitadas por el período establecido
...
}
...
int main ( ) {
t = 0;
return 0;
}
entonces si interrumpe tarea( ) queda esperando interrupciones de
tiempo( )... pero considerando que esto pueda ocurrir, entonces podría pasar que en vez de que interrumpa tiempo ( ) vuelva a interrumpir tarea ( ) , considerando que una interrupcion interrumpe a otra...y si pasa esto último, la máquina no funciona, a mi entender.... Cómo es esto ?
Cuando se genera una interrupcion, estas se deshabilitan, no puedes recibir otra hasta que no termines. Asi que una interrupcion no puede interrumpir a otra. Por eso el codigo de una interrupcion debe ser lo mas corto posible.
Si programases en ensamblador, cuando terminas una interrupcion debes bajar el bit de esta, para poder recibir nuevas interrupciones.
se puede saber la maquina? es que cada procesador es un mundo... (por ejemplo con el spectrum, si tardabas menos de nosecuantos ciclos habia un retrigger de la interrupcion y volvia a entrar :)
En algunas maquinas hay interrupciones enmascarables y no enmascarables , prioridades de interrupciones, etc... Lo mas practico siempre es irse al datasheet del procesador en cuestion, y mirar alli.