MICROCONTROLADOR AVR INTERRUPCIONES

MICROCONTROLADOR AVR INTERRUPCIONES

El microcontrolador AVR se programa para que realice alguna tarea, el programa esta preparado para que se ejecute instrucción tras instrucción de forma ordenada dentro de un ciclo, a esto se llama el programa principal.

Las interrupciones del microcontrolador AVR son eventos que hacen que el programa principal se detenga para permitir que el microcontrolador AVR se dedique a realizar otras tareas que solo realizará si ocurre la interrupción, mientras no ocurra una interrupción el microcontrolador AVR solo realizará las instrucciones indicadas dentro del programa principal.

Al terminar de realizar la tarea encomendada cuando se produce la interrupción, el microcontrolador AVR vuelve al programa principal, vuelve a la instrucción donde se quedo al responder a la interrupción y el programa principal continuará normalmente.

Cada modelo de microcontrolador AVR está preparado para detectar algunos tipos de interrupciones, para ello el microcontrolador AVR cuenta con registros que se encargarán del control de las interrupciones, entre estos registros están los que permiten habilitar el uso de las interrupciones, y los que permiten detectar que se ha producido una interrupción, lo que nos deja conocer cual ha sido la causa de la interrupción.

MICROCONTROLADOR AVR INTERRUPCIONES CON EL XC8

Para  la programación de  los  microcontroladores  AVR y  por  tanto  de las  interrupciones  con el  AVR,  se  utilizará el XC8 en el MPLABX, o con el MICROCHIP STUDIO con los que  se  programa en  C/C++,  se  utilizan estos  programa  porque  facilitan mucho  la comprensión  de  la  forma  de utilizar  los  registros involucrados en  el  uso  de  las  interrupciones  del microcontrolador AVR.

Una vez  que  se  comprenda el  uso de  las  interrupciones, resulta mas fácil  realizar  otros  programas  dedicados  a los  microcontroladores  AVR, de ahí la importancia de este tema, por ende nuestra recomendación es dedicarle mucho esfuerzo y aprender a usar las interrupciones.

Para el uso de las interrupciones con el XC8, en el programa que se esté preparando se tendrá que incluir la librería avr/interrupt.h, para habilitar las interrupciones se utilizará la función sei() y para deshabilitarlas se utilizará la función cli().

Cada microcontrolador AVR tiene un conjunto llamado vectores de interrupciones, que vienen a representar las interrupciones a las cuales responderá; por ejemplo en la hoja de datos del microcontrolador AVR Atmega88 en la sección relativa a las interrupciones se ve que este tiene 26 vectores de interrupciones, o 26 motivos por los que se puede producir una interrupción.

Según el vector de interrupción que se quiera utilizar será necesario programar algunos registros mas, esto se verá cuando se traten las diversas opciones que nos brindan los microcontroladores AVR, por ejemplo la interrupción provocada por el convertidor analógico digita, o las interrupciones provocadas por los temporizadores entre otras.

En el XC8 habrá que crear una función conocida como rutina de atención a las interrupciones, esta función siempre se llamará ISR, en esta función según el microcontrolador AVR utilizado se utilizará como parámetro el nombre del vector de interrupción a utilizar seguido de _vect, por ejemplo para la interrupción externa 0 será así INTO_vect, la función siempre se llamará ISR, la forma general será así.

ISR(nombreVector1_vect){//rutina de atención a las interrupciones

            //tareas a realizar durante la interrupción1                                                

     }//fin de la interrupción1

ISR(nombreVector2_vect){//rutina de atención a las interrupciones

            //tareas a realizar durante la interrupción2                                                

     }//fin de la interrupción2

Poe ejemplo para el caso del vector de interrupción INT0, será como sigue.

ISR(INT0_vect){//rutina de atención a la interrupción externa 0

            //tareas a realizar durante la interrupción externa 0                                                

     }//fin de la interrupción externa 0

Dentro  de  esta función se  programan  las tareas  que  se  quiere que  haga el  AVR  cuando  ocurre  la interrupción.

En  tareas  a realizar  dentro  de  la  rutina  de  interrupciones  hay  que  procurar  en  lo  posible que  sean  lo  mas  cortas  posibles,  ya que  el  programa principal  estará detenido  en  ese momento,  evitar en lo posible  utilizar  bucles largos.

Se  recomienda revisar  la  hoja de  datos  del  microcontrolador  AVR  utilizado  para  ver  cuales son  los vectores  que  pueden  provocar  interrupciones  en  ese  AVR, 

Otros  microcontroladores  AVR  tienen  muchas  otras  fuentes  de  interrupción









Publicar un comentario

Copyright © Electricidad y Electrónica. Designed by OddThemes