4_1 interrupciones externas

8
Interrupciones Externas Programación Microcontrolador AVR Escuela Militar de Ingenieria Ing. Germán Pereira Muñoz 09/09/10 Ing. Germán Pereira Muñoz - Interrupciones Externas 2 Interrupciones Externas El ATMega16 responde a 4 diferentes Interrupciones-señales externas aplicadas a los pines. RESET (pin 9) INT0 (pin 16 – PD2) INT1 (pin 17 – PD3) INT2 (pin 3 – PB2) reset int0 int1 int2 Vectores de Reset y de Interrupciones El vector Reset puede ser configurado en la seccion de Bootloader usando el bit de configuracion BOOTRST ● Los vectores de interrupcion pueden ser configurados en la seccion de Bootloader usando el bit IVSEL del registro General Interrupt Contol Register (GICR) 09/09/10 Ing. Germán Pereira Muñoz - Interrupciones Externas 3

Upload: leito-jb

Post on 19-Jan-2016

62 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: 4_1 Interrupciones Externas

Interrupciones Externas

Programación Microcontrolador AVREscuela Militar de Ingenieria

Ing. Germán Pereira Muñoz

09/09/10 Ing. Germán Pereira Muñoz - Interrupciones Externas

2

Interrupciones Externas

• El ATMega16 responde a 4 diferentes Interrupciones-señales externas aplicadas a los pines.

• RESET (pin 9)• INT0 (pin 16 – PD2)• INT1 (pin 17 – PD3)• INT2 (pin 3 – PB2)

reset

int0

int1

int2

Vectores de Reset y de Interrupciones

● El vector Reset puede ser configurado en la seccion de Bootloader usando el bit de configuracion BOOTRST

● Los vectores de interrupcion pueden ser configurados en la seccion de Bootloader usando el bit IVSEL del registro General Interrupt Contol Register (GICR)

09/09/10 Ing. Germán Pereira Muñoz - Interrupciones Externas

3

Page 2: 4_1 Interrupciones Externas

Fuentes de Reset del AVR:

09/09/10 Ing. Germán Pereira Muñoz - Interrupciones Externas

4

Fuentes de Reset

•JTAG: Bandera de JTAG Reset.•Watchdog Reset: Habilitado el Timer Watchdog y su periodo expiado •Brown-out Reset: Detector Brown-out Detector habilitado y la tensión de alimentación por debajo de umbral •External Reset: Nivel bajo en el pin /RESET – pin de entrada•Power-on Reset: Voltaje de alimentacion se encuentra por debajo del umbral de Power-on Reset

MCUCSR provee información sobre que fuente de reset fue el origen del reset del CPU

09/09/10 Ing. Germán Pereira Muñoz - Interrupciones Externas

5

AVR Fuentes de RESET

AVR Operación Lógica del Reset

El Watchdog timer es usado para determinar cuanto será el delay para adicionar después de un reset_n.

Esto es establecido por el AVR a los fusibles 4.1ms bien o 65ms.

09/09/10 6Ing. Germán Pereira Muñoz - Interrupciones Externas

Page 3: 4_1 Interrupciones Externas

Voltajes Umbrales del Reset

Ejemplo:Power-on Reset

Ejemplo:Brown Out Reset

09/09/10 Ing. Germán Pereira Muñoz - Interrupciones Externas

7

Operación AVR Brownout

La detección del nivel Brown out (BOD) puede ser configurado entre 2.7V a 4.0V.

Vcc debe estar por debajo del nivel Vbod durante más de 2uS.

BOD circuito tiene100mV histéresis para evitar el RESET debido a problemas técnicos.

BOD debe estar habilitado por la programación del fusible BOD.

2us

09/09/10 8Ing. Germán Pereira Muñoz - Interrupciones Externas

AVR Fuentes de RESET

Watchdog timer

•El watchdog timer es un recurso de hardware que ayuda a que un programa erróneo entre en un de nuevo en un estado de funcionamiento correcto

•El programa debe periódicamente resetear el watchdog timer antes de que se apague.

•Si el timer se apaga, el Microcontrolador y es de esperar que todos los periféricos sean reseteados

•El timer debe ser difícil de resetear, excepto por un comportamiento de software

09/09/10 9Ing. Germán Pereira Muñoz - Interrupciones Externas

Fuentes de Reset

Page 4: 4_1 Interrupciones Externas

Watchdog timer

El watchdog timer de AVR tiene un reloj separado de 1Mhz.

Ocho ciclos de tiempo de reloj pueden ser escogidos.

El watchdog timer es reseteado por la instrucción WDR del Watchdog Reset.

Si el timer llega a un overflow, el Microcontrolador se resetea como si la fuente de alimentación fuera retirada y vuelta a conectar. Hay tres niveles de seguridad se puede ajustar el watchdog timer . Los niveles de seguridad son programados por los fuse bits.

Estos no se puede cambiar a menos que sea reprogramado.

09/09/10 10Ing. Germán Pereira Muñoz - Interrupciones Externas

Fuentes de Reset

Watchdog Timer Control Register (WDTCR)

watchdog change enable:Debe ser puesto en 1 cuando WDE es puesto en zero.Si es seteado en uno, HW sera limpiado cada 4 ciclos de clock

watchdog enable: Cuando esta en uno, watchdog es habilitado, cuando esta en zero deshabilitado. Solo puede ser limpiado cuando el bit WDCE también esta en uno.

Para deshabilitar el watchdog timer: (imposible en el nivel de seguridad 2)1. Simultáneamente escribir uno lógico en WDCE y WDE.2. Dentro de 4 ciclos escribir 0 en WDE.

watchdog timer prescaler: determina el preescaler para el watchdog timer

09/09/10 11Ing. Germán Pereira Muñoz - Interrupciones Externas

AVR Fuentes de RESET

Watchdog Timer Control Register (WDTCR)

watchdog timer prescaler: determina el preescaler para el watchdog timer

09/09/10 12Ing. Germán Pereira Muñoz - Interrupciones Externas

AVR Fuentes de RESET

Page 5: 4_1 Interrupciones Externas

Watchdog timer niveles de seguridad

Nivel de seguridad 0:WDT inicialmente deshabilitadoPuede ser habilitado con la escritura de1el bit WDEEl Periodo Timeout puede ser cambiado en cualquier tiempoPara deshabilitarlo:

-Simultaneamente setear a uno WDCE y WDE-Con 4 cyclos de reloj, escribir el bit WDE a cero lógico

Nivel de seguridad 1:WDT inicialmente deshabilitado Puede ser habilitado con la escritura de1el bit WDEEl periodo Timeout o su deshabilitado requiere secuencia de tiempoPara deshabilitar o cambiar el Timeout:

-Simultaneamente, setear a uno WDCE y WDE-Con 4 ciclos de reloj, escribir en los bits WDE y WDP como desee pero con el bit WDCE seteado en 0.

09/09/10 13Ing. Germán Pereira Muñoz - Interrupciones Externas

AVR Fuentes de RESET

Watchdog timer niveles de Seguridad

Nivel de Seguridad 2:WDT inicialmente habilitado, el bit WDE siempre se lee como uno lógicoWDT no puede ser deshabilitadoEl periodo Timeout puede ser cambiado, pero requiere una secuencia de tiempoPara deshabilitar o cambiar el timeout:-Simultáneamente setear a uno WDCE y WDE-Con 4 ciclos de reloj, escribir WDP como se desee con el bit WDCE en cero. El valor del bit WDE es irrelevante.

09/09/10 14Ing. Germán Pereira Muñoz - Interrupciones Externas

AVR Fuentes de RESET

09/09/10 Ing. Germán Pereira Muñoz - Interrupciones Externas

15

Configuración de Interrupciones Externas

• Basadas en Conditiones › Mientras el nivel es bajo

• Disparo basado en Eventos› Cuando el nivel cambia (toggle)

› Flanco de Bajada (negativo Transición 1 a 0)

› Flanco de Ascendente (positivo Transicion 0 a 1)

Page 6: 4_1 Interrupciones Externas

Interrupciones Externas Int0, Int1 e Int2• Int0 conectado a PD2• Int1 conectedo a PD3• Int2 conectado a PB2• Operacion asincrona: puede despertar al CPU • Flanco desendente/ascendente o por nivel bajo puede disparar la interrupcion, definido por los birts de Interrupt Sense control MCUCR

09/09/10 Ing. Germán Pereira Muñoz - Interrupciones Externas

16

INT1

INT0

ISCxy Interrupt sense Control bits00 – Nivel bajo 01 – Cambio de nivel 10 – Flanco de Bajada 11 – Flanco de subida

Interrupciones Externas Int0, Int1 e Int2

Int0, Int1 e Int2 para ser habilitadas por General Interrupt Control Register GICR (+ I-bit en SREG)

09/09/10 Ing. Germán Pereira Muñoz - Interrupciones Externas

17

09/09/10 Ing. Germán Pereira Muñoz - Interrupciones Externas

18

Registro de banderas de Interrupcion General GICR

• Una bandera en 1 indica que existe una interrupción pendiente › Estas banderas son usadas solo cuando se usa disparos

por Flanco o por cambio de nivel • En la configuración por nivel estas banderas siempre estan en

0

› Un evento especifico de cambio puede colocar en 1 la bandera; debe ser puesta en 0 manualmente o por el servicio de Interrupción

Page 7: 4_1 Interrupciones Externas

09/09/10 Ing. Germán Pereira Muñoz - Interrupciones Externas

19

Disparos de Nivel

• El procesador verifica los niveles en los pines INT0 e INT1 cada ciclo de reloj

• Pulsos muy cortos (menores a un ciclo de reloj) pueden no ser detectados (sin cambio en el flanco)› La interrupcion de nivel bajo puede ocurrir solo

si el pin se encuentra en nivel bajo al final de la instruccion actual

09/09/10 Ing. Germán Pereira Muñoz - Interrupciones Externas

20

Registro MCUCSR

• Registro de Estado y Control MCU

• ISC2 – Bit de control de Sensibilidad › 0 – Flanco de bajada › 1 – Flanco de Subida

• Esta interrupción no ofrece otros tipos de disparos

INT2

09/09/10 Ing. Germán Pereira Muñoz - Interrupciones Externas

21

Interrupciones por Software • Si los pines de una Interrupción externa son

configurados como salidas, el programa puede colocar los valores 0 o 1 en los pines de interrupción› Esta acción puede disparar una interrupción de

acuerdo a la configuración de la Interrupción Externa

› Desde que una instrucción causa una interrupción, esta es llamada interrupcion por Software

Page 8: 4_1 Interrupciones Externas

Ejemplo Interrupciones Externas

09/09/10 Ing. Germán Pereira Muñoz - Interrupciones Externas

22

09/09/10 Ing. Germán Pereira Muñoz - Interrupciones Externas

23

09/09/10 Ing. Germán Pereira Muñoz - Interrupciones Externas

24