AVR ATmega: ¿puedo activar una interrupción externa al configurar el bit de bandera INTF correspondiente?

1

Estoy escribiendo un programa en C para ATmega64A que tiene un ISR INT0. Este ISR debe ejecutarse en caso de que INT0 caiga o si el TIMER3 se desborda.

Para evitar duplicar el código, me gustaría activar Int0 ISR en el ISR de desbordamiento del temporizador 3.

Lamentablemente no hay tal información en la hoja de datos. Al menos en la sección de descripción del registro INTF:

¿Alguien intenta esto? ¿O tal vez alguien sabe esto en teoría?

    
pregunta Roman Matveev

1 respuesta

3

No.

Escribir un 1 en la bandera lo borrará. Escribir un 0 no hará nada.

Sin embargo, si está utilizando avr-libc y desea tener dos (o más) vectores que tengan exactamente el mismo código, esto es posible. Se utiliza la interrupción de alias. Un ejemplo (de aquí ):

ISR(PCINT0_vect){  
    ...  
    // Code to handle the event.
}

ISR(PCINT1_vect, ISR_ALIASOF(PCINT0_vect));

En este ejemplo, tanto PCINT0 como PCINT1 compartirán el mismo código de interrupción; ambas entradas en la tabla de vectores apuntarán a la misma función. Esto puede ser suficiente para sus necesidades.

    
respondido por el Tom Carpenter

Lea otras preguntas en las etiquetas