Interrupciones externas

Descripción de las interrupciones externas

 El push button estará conectado al microcontrolador el cual se encuentra configurado para las interrupciones externas, esto es, que el programa deja de hacer lo que está haciendo para atender las interrupciones externas y ejecutar las instrucciones dentro esta  función, que para este caso es prender el LED que se encuentra conectado al microcontrolador. para mayor informacion visita  http://es.wikipedia.org/wiki/Interrupci%C3%B3n

 

Diagrama Esquemático

 

interrupcion diagrama esquematico

Diagrama Interrupcion externa

 

 Materiales

 

 Introducción

Interrupciónes externas

Las interrupciones externas en el ATmega8 son activadas con los pines INT0 y INT1, en caso de que se habiliten las interrupciones externas  los pines INT siempre activaran alguna interrupción sin importar como se haya configurado el puerto en el que estos pines se encuentren. Las interrupciones externan se habilitan cuando la entrada del pin, cambia de estado, se puede configurar si se requiere que se active cuando cambia de un estado bajo a uno alto o viceversa.

 Resistencia de Pull down

 Cuando se conecta un pin del microcontrolador a un switch este al presionarlo nos presenta un nivel alto en el pin, pero cuando este está abierto con la resistencia de pull down aseguramos un cero o nivel bajo en el microcontrolador.

pull down

Diagrama de resistencia de pull down

 

 

Resistencia de pull-down:

 

pull down Interrupciones externas

Esquematico del push-botton

 

 

Programa en C

#include <avr/io.h>
#include <avr/interrupt.h> //Libreria necesaria para manejar las interrupciones
#include <util/delay.h>

 int main (void) {
DDRB=0xFF;

cli();          //Desactiva las interrupciones globales

MCUCR=0x03;
GIFR =0x40;
GICR=0x40;

sei();        //Activar las interrupciones globales

while(1){
}
}

ISR(INT0_vect)  //Vector de interrupción externa del INT0
{
PORTB=0x01;
_delay_ms(2000);
PORTB=0x00;
}

 

}

 

Detalles del programa

<pre>#include <avr/interrupt.h>

Cada que se use alguna interrupción externa  es necesario llamar a la librería avr/interrupt.h que es la que contiene todos los vectores de interrupción de los AVR’s.

 cli();

Esta instrucción deshabilita las interrupciones.

<pre> sei();

Habilita las interrupciones.

 

 

 

 MCUCR=0x03;

 

MCUCR  Interrupciones externas

tabla de valores de bit

 

 

Al asignársele un 0x03 le estamos indicando que active los bits 0 y 1 los cuales para el registro MCUCR nos indican de que manera se active la interrupción, como se puede ver en la tabla, hay cuatro opciones que son: El nivel bajo de INT1, Cualquier cambio lógico, El flanco de bajada y El flanco de subida. Con los bits 0 y 1 en unos, tenemos habilitada la opción del flanco de subida.

 

mcucr Interrupciones externas

interrupciones

 

 

 GIFR =0x40;

 

GIFR   Interrupciones externas

Bits

 

 

0x40 = 0b01000000, esto es, que estamos seleccionando el bit 6 del registro GIFR el cual nos indica que al activarlo limpiamos la bandera INTF0.

 

GICR=0x40;

 

GICR Interrupciones externas

Bits

 

 

Al igual que en el registro pasado se está activando el bit 6 del GICR el cual nos indica que se usara el pin INT0 para la interrupción externa.

5 Comments

  1. Joseba Arguinzoniz Alcoba Septiembre 25, 2014
    • Administrador Septiembre 25, 2014
  2. Joseba Arguinzoniz Alcoba Septiembre 27, 2014
  3. Oscar Blaga Octubre 27, 2015
    • Hector Torres Noviembre 9, 2015

Leave a Reply