Académique Documents
Professionnel Documents
Culture Documents
2 Interrupciones
2.2.1Descripcin general
Uno de los recursos de gran aplicacin de los procesadores embebidos son las
interrupciones. stas forman parte de un mecanismo de que disponen los dispositivos
e incluso los procesos para hacerle saber a la CPU de la aparicin de alguna
circunstancia que requiera su intervencin. De este modo, los dispositivos pueden
provocar que la CPU deje por el momento la tarea que estaba realizando y atienda la
interrupcin. Una vez atendida, seguir con su labor anterior.
Son aquellas programadas por el usuario, es decir, el usuario decide cundo y dnde
ejecutarlas.
1
Interrupciones por Hardware
Las interrupciones por hardware pueden ser tiles para procesar eventos espordicos,
tales como pulsadores o entradas de alarmas. Tambin pueden ser tiles en
situaciones donde se requiera una baja latencia fija, como por ejemplo, cuando se
procesan entradas desde un encoder.
Cada una de estas fuentes de interrupcin tiene asociada una direccin en el espacio
de memoria del programa. Estas direcciones se conocen con el nombre de vectores de
interrupcin.
La direccin ms baja por defecto le corresponde al vector de interrupcin por RESET.
Todas las interrupciones tienen asignadas un bit individual de habilitacin Para habilitar
una interrupcin dicho bit y el bit Global Interrupt Enable (I) del Status Register (SREG)
deben estar en uno.
La lista est ordenada por nivel de prioridad. Cuanto menor es la direccin de una
interrupcin mayor es su prioridad
Cuando ocurre una interrupcin se pone a cero el bit I y todas las interrupciones son
deshabilitadas.
2
328
La tabla siguiente muestra la ubicacin del reset y los vectores de interrupcin para
varias combinaciones de seteo de BOOTRST e IVSEL.
3
328
Descripcin de Registros
El bit IVCE debe setearse en 1 para habilitar el cambio del bit IVSEL. IVCE se clarea
por hardware despus de los cuatro ciclos de haberse escrito o cuando el IVSEL es
escrito.
4
2.2.3Interrupciones externas
Las interrupciones externas se disparan con los pines INT0 e INT1 o con cualquier pin
PCINT23..0.
Observar que, si estn habilitados, las interrupciones dispararn an cuando dichos
pines estn configurados como salidas. Esta caracterstica provee una forma de
generar una interrupcin por software. El pin de interrupcin por cambio PCI2 se
disparar si cualquier pin PCINT23..16 cambia de estado (toggles). El pin de
interrupcin por cambio PCI1 se disparar si cualquier pin PCINT14..8 cambia de
estado. El pin PCI0 har lo mismo si algn pin PCINT7..0 cambia de estado. Los
registros PCMSK2, PCMSK1 y PCMSK0 controlan cuales pines contribuyen a las
interrupciones de cambio de estado. Estas interrupciones son detectadas
asincrnicamente.
Las interrupciones INT0 e INT1 pueden ser disparadas por flanco ascendente,
descendente, o nivel bajo. La interrupcin de nivel bajo es detectada asincrnicamente,
no as para el caso de la deteccin por flanco, ya que hace uso del I/O clock.
Descripcin de registros
5
EIMSK Registro de Mscara de Interrupcin Externa
6
cuando la rutina de interrupcin se haya ejecutado. Alternativamente, la bandera puede
clarearse escribiendo un uno lgico en el mismo bit.
7
PCICR estn seteados (1), el MCU saltar al vector de interrupcin correspondiente. La
bandera se clarea cuando se haya ejecutado la rutina de interrupcin. Alternativamente,
se puede clarear escribiendo un uno lgico en l.
Bit 0 PCIF0: Bandera 0 de Interrupcin por Cambio de estado Pin
Cuando un cambio lgico en cualquier pin PCINT7..0 dispara un pedido de
interrupcin , PCIF0 se convierte en uno lgico (1). Si el bit I en SREG y el bit PCIE0 en
PCICR estn seteados (1), el MCU saltar al vector de interrupcin correspondiente. La
bandera se clarea cuando se haya ejecutado la rutina de interrupcin. Alternativamente,
se puede clarear escribiendo un uno lgico en l.
8
Bit 7..0 PCINT7..0: Mscara de Cambio de Estado en Pin 7..0
Cada bit PCINT7..0 selecciona si la interrupcin se habilita para el pin
correspondiente de E/S. Si PCINT7..0 est seteado y el bit PCIE0 en PCICR est
seteado, la interrupcin por cambio de estado de pin se habilita. Si PCINT7..0 est
clareado, la correspondiente interrupcin est deshabilitada.
9
2.2.4 Manejo de Interrupciones
1 Estar habilitada la interrupcin global Interrupts Enable bit (I) en el registro SREG
del MCU. Por defecto este bit se encuentra deshabilitado.
2 Estar habilitado el bit particular de la fuente de interrupcin tratada. Cada fuente
de interrupcin tiene un bit de habilitacin asociado al registro de control de cada
perifrico, el cual dispara la ISR para esa interrupcin.
3 Producirse la condicin de interrupcin por ejemplo: un overflow en el timer1.
Donde vector_de_interrupcion puede ser uno de los indicados en la tabla siguiente para
el ATmega328:
1 - Reset
10
12 TIMER1_COMPA_vect Timer/Counter1 Compare Match A
13 TIMER1_COMPB_vect Timer/Counter1 Compare MatchB
14 TIMER1_OVF_vect Timer/Counter1 Overflow
15 TIMER0_COMPA_vect TimerCounter0 Compare Match A
16 TIMER0_COMPB_vect Timer/Counter0 Compare Match B
17 TIMER0_OVF_vect Timer/Counter0 Overflow
18 SPI_STC_vect Serial Transfer Complete
ISR_BLOCK: Idntica a una ISR sin atributos especificados. Las interrupciones globales
son inicialmente deshabilitadas por el hardware AVR cuando entran en la rutina de
interrupcin, sin que el compilador modifique el estado.
11