Sei sulla pagina 1di 20

SISTEMAS MICROPROCESADOS

Departamento de Automatizacin y
Control Industrial - DACI
Pulsantes
Uso de Pulsantes Rebotes

1. Solucin por hardware 2. Solucin por software

Por retardos

R=10K
0.01uF<C0.1uF
Pulsantes
Interrupciones

Qu es una interrupcin?

Es el desvo de la ejecucin normal de un programa, a


peticin de un perifrico
El origen de la peticin es un evento externo en el perifrico
y, por tanto, asncrono al programa
Si el microcontrolador la acepta, ejecuta una subrutina para
atender al perifrico

La importancia de las interrupciones en el control

El control se simplifica, ya que se atiende a los perifricos


cuando stos lo requieren, y no es necesario hacer polling

En ocasiones, un programa de control est formado por un


bucle de espera, en el que no se hace nada, y slo se
atienden las interrupciones que llegan.
Interrupciones

Qu factores se deben considerar?

Cmo interrumpe el perifrico? Peticin

Puede el micro atenderle, o no? Aceptacin

Y si interrumpen dos o ms a la vez? Prioridad y niveles

Cmo sabe el micro quin le interrumpe? Identificacin

Dnde salta el micro? Servicio de interrupcin


Interrupiones

Qu se hace al producirse una interrupcin?


Terminar la instruccin que estaba pendiente

Guardar el contenido del contador de programa en el stack

Guardar el contenido del resto de registros. Esto puede ser


automtico, o tal vez haya que hacerlo en la rutina de servicio

Hacer el acknowledge de la interrupcin, si ste es por


software (borrar bandera de interrupcin)

Habilitar o deshabilitar interrupciones del mismo nivel, para


permitir/evitar interrupciones reentrantes. Esto puede ser
automtico o manual
Interrupciones

Qu se hace al retornar de una interrupcin?

Recuperar el contenido de los registros del


stack(automtico o manual)

Volver a habilitar interrupciones (automtico o manual)

Recuperar el valor del PC desde el stacky volver al


programa principal
Interrupciones ATMEGA164P
Interrupciones ATMEGA164P
Interrupiones ATMEGA164P
Interrupiones Externas

Interrupciones Externas INT0-INT2

EICRA External Interrupt Control Register A


Interrupciones Externas
EIMSK External Interrupt Mask Register

Bits 2: 0 - INT2: 0: Interrupcin externa Solicitud de 2 - 0 Habilitar


Cuando INT2: 0 bit se escribe 1L la correspondiente interrupcin
externa est activado. Caso contrario esta desabilidado

EIFR External Interrupt Flag Register

Bits 2: 0 - INTF2: 0: Banderas interrupcin externa de 2 - 0


Cuando un pulso o lgica cambio en INT2: 0 desencadena una
solicitud de interrupcin, La bandera se borra cuando la rutina de
interrupcin se ejecuta.
Interrupciones Externas

PCICR Pin Change Interrupt Control Register

PCIFR Pin Change Interrupt Flag Register


Interrupiones Externas
Interrupiones Externas

Ejercicio: Aplicacion Interrupcion int0


Interrupciones Externas
Programa Assembler
.include "m164pdef.inc"

.def tempo=r16
.def contador = r17

// Direcciono las interrupciones reset - interrupcion externa 1


.org 0x0
rjmp inicio
.org 0x2
rjmp subir
// inicio del programa
inicio:
ldi tempo,0b0000_0000 ; Para configurar puerto
out DDRD,tempo ; Puerto D como entrada
out PORTA,tempo ; Salida a 0L puerto A
ldi tempo,0b1111_1111
out DDRA,tempo ; Configuro puerto como salida
out PORTD,tempo ; entrada como pull up
Interrupciones Externas
; pud en cero
in tempo,mcucr
andi tempo,0b11101111
out mcucr,tempo
clr contador ; contador a cero

; inicializacion del stack pointer necesario para interrupciones


ldi tempo,high(ramend)
out sph,tempo
ldi tempo,low(ramend)
out spl,tempo

;configuracion de interrupciones
cli ; Desabilita interrupciones globales
ldi tempo,0b00000010 ;int0 por flanco de bajada
sts eicra,tempo
ldi tempo,0b00000001 ; Habilito Interrupcion
out eimsk,tempo

sei ; sreg se pone en 1 activacion de interrupciones

lazo: rjmp lazo


Interrupciones Externas
subir:

// Salvamos el estado
push r16
in r16,sreg
push r16
// finalizacion de salvar el estado
inc contador
out PORTA,contador ; suma puerto

// recupero estado
pop r16
out sreg,r16
pop r16
// finalizacion recuperacion de estado

reti ; regreso y pone en 1 logico la bandera I de sreg ya que por hardware es pone
en cero
Bibliografa

1. Muhammad Ali Mazidi (2011). The avr


microcontroller and embedded system.

2. Yago Torroja & Jorge Portilla, Curso de


Microcontroladores, Escuela Tcnica
Superior de Ingenieros Industriales,
Universidad Politcnica de Madrid
SISTEMAS MICROPROCESADOS
Departamento de Automatizacin y
Control Industrial - DACI

Marco Herrera
marco.herrera@epn.edu.ec

Potrebbero piacerti anche