Está en la página 1de 7

Gua de Laboratorio -- Microcontroladores -2017

Lab 4. Implementando tcnicas de programacin


basadas en Interrupciones
OBJETIVOS

- Entender y aplicar el funcionamiento de los diferentes modos de interrupciones de un MCU.


- Visualizar informacin almacenada en el MCU haciendo uso de la visualizacin dinmica a
partir de los conocimientos sobre las frecuencias de un MCU.

MATERIALES Y EQUIPO NECESARIO

- Computador.
- Software para la programacin del MCU de Freescale S08, Code Warrior 10.4 o superior.
- MCU de la familia HS08 de Freescale, segn la referencia que desee utilizar.
- Reference Manual del microcontrolador escogido.
- BDM Multilink.
- transistores (segn diseo)
- 5 pulsadores
- Resistencias (segn diseo)
- Condensadores (segn diseo)
- 4 Display 7 segmentos
- Conversor BCD

MARCO TERICO

INTERRUPCIONES

Una interrupcin modifica la secuencia de ejecucin de un programa para responder a un evento


externo. Una interrupcin no detiene la MCU o la ejecucin de una instruccin. Cuando una
instruccin se est ejecutando y ocurre un evento de interrupcin, primero se termina la ejecucin de
la instruccin y luego se cambia la secuencia del programa para responder al evento. El vector de
interrupcin contiene el nuevo valor del contador programa.

Una interrupcin es similar a un reset, y hace que la MCU busque una nueva direccin para el
contador de programa activando tambin el bit I del CCR, luego se ejecuta la rutina de servicio de
interrupcin y, por ltimo, MCU retorna a procesar la secuencia del programa que se estaba
ejecutando.

Las interrupciones guardan el estado actual de la CPU y de los registros, ejecutan una rutina de
atencin de interrupcin ISR (Interrupt Service Routine) y luego restauran el estado de la CPU para
que el procesamiento se resuma desde el momento en que ocurri la interrupcin. Adems de la
interrupcin por software SWI (SoftWare Interrupt), la cual es una instruccin del programa, las
interrupciones pueden ser causadas por eventos de hardware tales como un flanco en el pin IRQ o un
evento causado por un contador.
Gua de Laboratorio -- Microcontroladores -2017

Si ocurre un evento desde una fuente de interrupcin, la bandera de estado asociada de solo lectura
ser activada. La CPU no responder a menos que las interrupciones estn habilitadas, de forma local
y global; para esto se deben configurar los registros de interrupciones locales, y el bit correspondiente
del CCR (ver la hoja de especificaciones del MCU que se est usando). La mscara global de
interrupciones en el CCR es inicialmente activada despus de un reset, lo cual previene todas las
fuentes de interrupciones enmascarables.

Cuando la CPU recibe una solicitud de interrupcin adecuada, completa la instruccin actual antes
de responder a la interrupcin. La secuencia de interrupcin consiste de:

Guardar los registros de la CPU en la pila.


Configurar el bit de interrupciones del CCR para enmascarar posibles interrupciones.
Traer el vector de interrupcin para la interrupcin de mayor prioridad que se encuentre
pendiente.
Llenado de la cola de instrucciones con los tres primeros bytes de informacin del programa
comenzando desde la direccin obtenida de la ubicacin del vector de interrupcin.

Mientras la CPU est atendiendo una interrupcin, el bit de interrupciones globales del CCR es
automticamente activado para evitar la posibilidad de que otras interrupciones interrumpan la ISR
(esto se conoce como anidamiento de interrupciones). En algunos casos, el bit de interrupciones
globales puede ser desactivado dentro de una ISR para que otras interrupciones puedan ser atendidas
sin esperar a que la primera rutina finalice; se recomienda especial cuidado a la hora de intentar lo
anterior, porque esto puede generar errores en el programa difciles de depurar.

La rutina de atencin de interrupciones finaliza con una instruccin return-from-interrupt (RTI) la


cual restaura los registros CCR, A, X, y el PC a los valores previos a la interrupcin. Esto se consigue
leyendo la informacin guardada previamente en la pila.

- External Interrupt Request Pin (IRQ)

El modulo IRQ, tiene un pin que comparte la funcin de puerto I/O con la de interrupcin externa
(IRQ), este tipo de interrupcin es enmascarable, las caractersticas de este mdulo son las siguientes:

Bit de control de modulo


Buffer con histresis
Programacin de sensibilidad por flanco o flanco y nivel.
Reconocimiento automtico
Seleccin de entrada en pull-up

Las interrupciones externas son manejadas por el estado del IRQ y su registro de control, IRQSC (ver
la hoja de especificaciones del MCU que se est usando). Cuando la funcin del IRQ est habilitada,
la CPU monitorea el pin para eventos de solo-flanco o flanco-y-nivel, dependiendo de cmo est
configurado, lo cual activa la bandera de estado asociada.

El registro que permite configurar el modulo IRQ es el IRQSC


Gua de Laboratorio -- Microcontroladores -2017

IRQPDD (Interrupt Request (IRQ) Pull Device Disable)


Bit 6. Este bit de lectura y escritura habilita el dispositivo pullup cuando la funcin IRQ
est habilitada.
0 dispositivo pullup habilitado.
1 dispositivo pullup deshabilitado
IRQPE (IRQ Pin Enable)
Bit 4. Este bit de control habilita o deshabilita la funcin de IRQ.
0 funcin IRQ deshabilitada.
1 funcin IRQ habilitada.
IRQIE (IRQ Interrupt Enable)
Bit 1. Este bit de control de lectura y escritura determina si los eventos de IRQ generan
una solicitud de interrupcin.
0 desactivada solicitud de interrupcin cuando IRQF=1.
1 interrupcin solicitada siempre que IRQF = 1.
IRQMOD (IRQ Detection Mode)
Bit 0. Este bit de control de lectura y escritura permite seleccionar entre deteccin por
flanco, o por flanco y nivel.
0 evento de IRQ por flanco de cada.
1 evento de IRQ por flanco de cada y nivel bajo.

Ejemplo de aplicacin

Hardware como se ve en la Figura 1

Figura 1 . Hardware necesario para operacin de IRQ

TABLA DE VECTORES

En un microcontrolador, la tabla de vectores es un espacio de memoria ROM en el que se almacenan


las direcciones de las instrucciones que se deben ejecutar ante ciertos eventos. Estos eventos tienen
prioridad de menor a mayor, es decir, si se desencadena ms de un evento a la vez, se carga el vector
con el nmero ms bajo.
Gua de Laboratorio -- Microcontroladores -2017

El vector bsico es el nmero 0, y corresponde al vector de RESET. Cuando sucede un reset en el


microcontrolador (considrese tambin como RESET a la inicializacin del mismo luego de ser
alimentado), el contador de programa (PC) es cargado con la direccin que haya en el vector reset.
La direccin cargada en el RESET, o su label correspondiente, puede ser encontrada en el archivo
Project.prm.

Figura 2 . Declaracin del vector RESET en el archivo Project.prm

Cada microcontrolador tiene una tabla de vectores de interrupcin que puede variar. sta puede ser
encontrada en el reference manual.

Figura 3 . Seccin de tabla de vectores para el MCU MC9S08QG8

Para establecer la direccin de un vector, basta con inicializar el vector desde el archivo Project.prm
indicando su nmero y la direccin o etiqueta que debe asignrsele.

Figura 4 . Declaracin del vector RESET y SPI en el archivo Project.prm


Gua de Laboratorio -- Microcontroladores -2017

VISUALIZACIN DINMICA

La visualizacin dinmica consiste en presentar la informacin deseada, un dato a la vez durante un


instante de tiempo lo suficientemente corto y a una velocidad tal, que debido a la persistencia del ojo
se consiga el efecto de que toda la informacin se presenta al mismo tiempo.

A continuacin, se muestra un diagrama de flujo que muestra la idea general de este concepto:

Figura 5. Diagrama de flujo sobre la visualizacin dinmica. a) Programa principal, b) Secuencia de


visualizacin.

El factor ms importante a tener en cuenta a la hora crear un programa que haga uso de la visualizacin
dinmica es definir adecuadamente el tiempo de visualizacin de cada dato para que sea lo
suficientemente rpido para que se logre observar toda la informacin al mismo tiempo, y lo
suficientemente grande para que el MCU sea capaz de ejecutar las instrucciones necesarias para la
visualizacin de la informacin.
Gua de Laboratorio -- Microcontroladores -2017

Figura 6. Conexin de varios display directamente con MCU para visualizacin dinmica.
Otra forma para reducir el nmero de pines usados de la MCU es utilizar un conversor de BCD a
siete segmentos como es el caso del IC 7447, como se aprecia en la Figura 7.

Figura 7 Display 7 segmentos controlado por conversor de bcd to 7 segmentos


Gua de Laboratorio -- Microcontroladores -2017

PROCEDIMIENTO.

1. Observe el cdigo ejemplo DemoIRQ y realice el diagrama de flujo detalladamente


2. Se requiere desarrollar un reloj digital en el que se pueda visualizar la hora y la fecha.
a. El reloj debe mostrar la informacin en nicamente 4 dgitos.
b. El sistema debe visualizar la hora y los minutos, el mes y el da.
c. Un led debe parpadear encenderse/apagarse cada segundo.
d. Un pulsador conectado a IRQ alterna entre la visualizacin de la hora y la de la fecha.
e. 4 pulsadores son usados para aumentar/disminuir el valor de las horas, minutos, mes y da.

PREGUNTAS

1. Realice un diagrama de flujo y cdigo ejemplo donde se indique cmo hacer un anti-rebote por
software.
2. En un contacto seco, qu es normalmente abierto y cerrado?
3. Tipos de solenoides.

INFORME

Debe contener:
- Respuesta a las preguntas formuladas
- Tabla de requerimientos funcionales
- Asignacin de pines
- Diseo de hardware- Electrnica.
- Diagrama esquemtico del hardware
- Diagrama de flujo Maquina de estados o redes de Petri.

EVALUACION

- Funcionamiento y sustentacin 65%


- Informe de la prctica 35%

FUENTES DE INFORMACION.
1. AN2111 A Coding Standard for HCS08 Assembly Language
2. NT0001 COMO EMPEZAR A UTILIZAR EL MICROCONTROLADOR
3. Hoja tcnica de microcontrolador utilizado.
4. Resumen set de instrucciones
5. http://www.ii.uam.es/~gdrivera/robotica/hc08/hc908gp32.htm#tutoriales