Interrup
-
Upload
diego-lima -
Category
Documents
-
view
224 -
download
0
description
Transcript of Interrup
2.2 Interrupciones2.2.1Descripción generalUno de los recursos de gran aplicación de los procesadores embebidos son lasinterrupciones. Éstas forman parte de un mecanismo de que disponen los dispositivose incluso los procesos para hacerle saber a la CPU de la aparición de algunacircunstancia que requiera su intervención. De este modo, los dispositivos puedenprovocar que la CPU deje por el momento la tarea que estaba realizando y atienda lainterrupción. Una vez atendida, seguirá con su labor anterior.Si no existiesen las interrupciones, el controlador debería estar continuamentecomprobando el estado del dispositivo para atenderlo cuando éste lo necesite. Todo eltiempo consumido por el controlador en realizar el sondeo del estado de losdispositivos, es tiempo que se desperdicia en la realización de tareas principales deprocesamiento, disminuyendo así el rendimiento del sistema.Cuando al controlador le llega un pedido de interrupción, lo atiende inmediatamenteponiendo una pausa en la ejecución del programa que está corriendo mientras ejecutauna función de interrupción denominada rutina de servicio de interrupción (ISR). Unavez terminado el tratamiento de la interrupción, el controlador vuelve al lugar donde fueinterrumpido y retoma la ejecución . Para ello el microcontrolador guarda el contenidodel contador de programa (PC) en una pila; y de esta forma, al terminar la rutina deinterrupción se restaura dicho valor.
Interrupciones por HardwareSon aquellas que son provocadas por dispositivos externos al procesador. Sucaracterística es que no son programadas, esto es, pueden ocurrir en cualquiermomento del programa. Existen dos clases de interrupciones por hardware:Enmascarables: aquellas que el usuario decide si quiere o no ser interrumpido. (Ej.Timer1 Overflow).No enmascarables: aquellas que siempre interrumpen el programa. (Ej. vector reset):Las interrupciones por hardware pueden ser útiles para procesar eventos esporádicos,tales como pulsadores o entradas de alarmas. También pueden ser útiles ensituaciones donde se requiera una baja latencia fija, como por ejemplo, cuando seprocesan entradas desde un encoder.2.2.2 Vectores de interrupción en el ATmega328El Atmega328 puede ser interrumpido desde varias fuentes de interrupción diferentes.Cada una de estas fuentes de interrupción tiene asociada una dirección en el espaciode memoria del programa. Estas direcciones se conocen con el nombre de vectores deinterrupción.La dirección más baja por defecto le corresponde al vector de interrupción por RESET.Todas las interrupciones tienen asignadas un bit individual de habilitación Para habilitaruna interrupción dicho bit y el bit Global Interrupt Enable (I) del Status Register (SREG)deben estar en uno.En la tabla siguiente aparece la lista de las 26 fuentes de interrupción del Atmega328.La lista está ordenada por nivel de prioridad. Cuanto menor es la dirección de unainterrupción mayor es su prioridadCuando ocurre una interrupción se pone a cero el bit I y todas las interrupciones sondeshabilitadas.El programador puede escribir un uno en el bit I durante la ejecución de la ISRpermitiendo el anidado de interrupciones. Todas las interrupciones habilitadas pueden
entonces interrumpir la ISR en ejecución