interrupciones

Hola, Quiero experimentar con interrupciones. Una interna y otra externa. Por ahí vi que hay una interrupción interna con el timer2 por overflow. Mi consulta es si se puede interrumpir esa ISR mediante una interrupción externa, y que luego retorne a la atención de la int interna del timer2, alguien sabe cómo se haría eso?

gracias por cualquier ayuda.

Cuando se entra a un ISR, se desactivan las interrupciones

En el datasheet (estoy viendo el Mega 2560), página 18 dice algo relacionado a esto, y según entiendo pareciera que se podría lograr. "The user software can write logic one to the I-bit to enable interrupts. All enabled interrupts can interrupt the current interrupt routine."

Lo acabo de mirar en el ATmega328 y también se puede, ya me extrañaba que no se pudiera hacer...

Esto me interesa:

Entonces, segun entiendo, para que funcione hay que poner el bit de interrupciones a 1 desde dentro de la interrupcion de timer, para que pueda interrumpir desde la externa no?

Pero entonces tienes que deshabilitarla otra vez desde la int externa, o no? :o

Las interrupciones se desactivan automáticamente al entrar en la interrupción y se activan al salir, lo que quieras hacer en medio es cosa tuya.

Estando al interior de la ISR del Timer2 debes poner la instrucción: interrupts(), esta instrucción se encarga del famoso bit de habilitación de interrupciones. Con eso habilitas que el controlador pueda ser interrumpido por otra interrupción de mayor prioridad, la externa en mi caso, que la he definido en el pin 2 del controlador, que corresponde a la INT0. Luego de que la int externa ha sido atendida por su correspondiente ISR, el control retorna a la ISR del Timer2. Al finalizar la ISR del Timer2 no hay que poner nada respecto a interrupciones, el controlador por si solo las deja habilitadas. atte.

ok gracias chiva y maedru