Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Las interrupciones
Introducción
Al realizar el procesamiento de datos en una estructura secuencial y la necesidad de procesar
las activaciones de eventos de forma aleatoria, se puede elegir hacer la consulta cada cierto
tiempo, cierto número de instrucciones o cada cierta posición en el algoritmo (consulta
permanente). Este proceso puede acarrear una pérdida de rendimiento en tiempo de
procesamiento.
La interrupción
Un recurso de los microprocesadores que resuelve este problema son las interrupciones, estas
pueden ser de distinta naturaleza, que pueden ser clasificadas en basicamente 2:
1. Por hardware
2. Por Software
3. Excepciones
Las interrupciones por hardware son aquellas que ocurren externas al microprocesador o
microcontrolador y causadas por sistemas independientes que solicitan generalmente una
atención para ser procesadas, como por ejemplo una activación de un sensor, el envío de un
mensaje por un puerto de comunicaciones, el nivel bajo de la alimentación, etc.
Las interrupciones por software son aquellas generadas por el procesamiento de datos u
operaciones tales como: una solicitud de atención por consulta (se obliga que se ejecute la rutina
de atención a una interrupción).
Las excepciones, son aquellas que ocurren por un evento predeterminado, el evento o
procesamiento de datos (llamadas a sistema), como la divisiòn por cero u otro tipo de evento no
contemplado (tipo de argumento).
Son funciones o algoritmos que tienen el objeto de atender un tipo específico de interrupción,
capturando la información, procesandola o no y estableciendo las condiciones iniciales antes de
retornar al punto exacto en la secuencia del programa principal donde ocurrió la interrupción.
void main() {
// Habilitación de puertos
TRISB=0x00;
PORTB=0;
TRISD=0x00;
PORTD=0;
Características
Alta prioridad: La atención al ADC está insertado en esta interrupción, cada vez que se
concluye con una conversión del ADC se tiene una interrupción, se recupera en la variable “dato”
y se reinicia la próxima conversión.
Baja Prioridad: Se instalan aquí dos tipos de interrupción una el temporizador 0 y otra es
la interrupción externa 1. Cada vez que el temporizador genera una interrupción, se incrementa
el valor del puerto D. En el caso de la interrupción externa 1, sucede cada vez que el Pin 34,
INT1 se complementa un bit señalización RC7, y se reinicia el puerto D (el contador del
temporizador).
en cuanto al programa principal la única tarea que realiza es actualizar el puerto B con el valor
de “dato” que es el valor del ADC.
void main() {
// Habilitación de puertos
TRISB=0b00000010; // configuración de la entrada del INT0 RB0 pin 33
PORTB=0; // inicializa Puerto B=0
TRISD=0x00; // Puerto D como salida
PORTD=0; // inicializa puerto D=0
TRISC.RC7=0; // Pin RC7 como salida de señalización de INT1
PORTC.RC7=1; // inicializa pin RC7=1
TRISA.RA0=1; // Pin RA0 como entrada
CMCON=0x07; // Desconecta Comparadores
while(1){
PORTB=dato; // algoritmo principal
}
}
En este caso el cálculo del tiempo que tarda en incrementar el valor de PORTB, si es evaluable y
constante independiente de algún proceso que realice el microcontrolador. Siempre y cuando el
ciclo no tarde más de un sobreflujo de timer 0.
Procedimiento
1. Desarrollar los experimentos de los códigos 1 y 2 copiando los códigos y simulando en
Proteus como muestran los videos.
2. Desarrollar un programa que crea un reloj controlado por el temporizador 1 desplegado
los segundos y décimas de segundo.
3. Desarrollar un programa de 5 interrupciones anidadas con las siguiente característica:
a. ADC baja prioridad
b. 3 interrupciones externas 2 de alta prioridad y 1 de baja
c. Con temporizador 2 que parpadee un led
Investigar
1. Cuantas fuentes de interrupción existen para el Pic18f4550
2. Cuantas fuentes de interrupción existen para el ATMEGA328
3. Que es la pila para las interrupciones
4. Haga un resumen de los Registros asociados a las interrupciones ver cap 9 del
manual del Pic18f4550