11
Cód. 285744 – 285728 – 285750. Informe – 04-GRUPO 9. Resumen— En este informe se encuentra consignado una serie de conceptos, y recomendaciones sobre el trabajo con el modulo oscilador de microcontroladores HC08, se muestra en detalle cuales son los registros a configurar y manipular para activar este módulo y como es su funcionamiento Palabras Clave — cristal, frecuencia, led, oscilador, watchdog I. OBJETIVOS A. Objetivo General Conocer y aplicar conocimientos acerca de la programación del módulo oscilador del microcontrolador Motorola, para avanzar en la creación de mejores y más completos programas para este microcontrolador. B.Objetivos Específicos Revisar la documentación de microcontroladores HC08 sobre la configuración del módulo oscilador. Programar el microcontrolador con diferentes osciladores, tanto internos como externos. Practicar la programación de los puertos de entrada/salida de los microcontroladores Motorola. II.INTRODUCCIÓN En el mundo de la electrónica, quizás nada es tan importante, pero a la vez tan subestimado para el correcto funcionamiento de todos los sistemas, componentes y demás, como lo es la correcta sincronización de los mismos mediante el tiempo. Sin una forma de establecer el inicio y el fin de un programa o tarea, como podría saber un sistema cuando recibió un dato para procesarlo, o en qué 27 de Abril de 2013 Microcontroladores: Programación del MCU y Configuración del modulo Oscilador Julián A. Alarcón, Felipe Castañeda, Daniel M. Vargas, Microcontroladores. UNIVERSIDAD NACIONAL DE COLOMBIA. 1

Informe 4. Programacion Del MCU y Configuracion Del Modulo Oscilador

Embed Size (px)

Citation preview

Page 1: Informe 4. Programacion Del MCU y Configuracion Del Modulo Oscilador

Cód. 285744 – 285728 – 285750. Informe – 04-GRUPO 9.

Resumen— En este informe se encuentra consignado una serie de conceptos, y recomendaciones sobre el trabajo con el modulo oscilador de microcontroladores HC08, se muestra en detalle cuales son los registros a configurar y manipular para activar este módulo y como es su funcionamiento

Palabras Clave — cristal, frecuencia, led, oscilador, watchdog

I. OBJETIVOS

A. Objetivo General

Conocer y aplicar conocimientos acerca de la programación del módulo oscilador del microcontrolador Motorola, para avanzar en la creación de mejores y más completos programas para este microcontrolador.

B. Objetivos Específicos

Revisar la documentación de microcontroladores HC08 sobre la configuración del módulo oscilador.

Programar el microcontrolador con diferentes osciladores, tanto internos como externos.

Practicar la programación de los puertos de entrada/salida de los microcontroladores Motorola.

II. INTRODUCCIÓN

En el mundo de la electrónica, quizás nada es tan importante, pero a la vez tan subestimado para el correcto

funcionamiento de todos los sistemas, componentes y demás, como lo es la correcta sincronización de los mismos

mediante el tiempo.

Sin una forma de establecer el inicio y el fin de un programa o tarea, como podría saber un sistema cuando recibió un dato para procesarlo, o en qué momento enviar cierta información que a la vez debe hacerse en forma ordenada y precisa para que otro sistema la analice e interpreta acertadamente. Todo esto hace pensar que en general si establecemos una base de tiempo sobre la cual corran todos estos sistemas juntos, la sincronización ya no sería un problema.

El siguiente problema viene precisamente de cómo hacer para generar esta base de tiempo, y en esto los microcontroladores tienen varias formas, como lo son los osciladores de cristal de cuarzo, o también la combinación RC o también una fuente como un generador de señales que otorgue una señal al sistema. Lo que pocos sabían es que en el caso de los microcontroladores HC08 y en específico con el que se trabaja en este informe MC68HC908QY4 tienen internamente su propio oscilador para generar una señal de reloj, el cual es interesante de estudiar y aprender a manejar. A continuación se presentan una serie de casos y guías para aprender sobre el manejo del módulo oscilador de este microcontrolador.

III. MATERIALES

Computador. Software para la edición, ensamblado, simulación

y programación de microcontroladores Motorola Metrowerks (Code Warrior) o WinIde.

Conjunto de Instrucciones del microcontrolador MC68HC908XX.

27 de Abril de 2013

Microcontroladores: Programación del MCU y Configuración del

modulo Oscilador

Julián A. Alarcón, Felipe Castañeda, Daniel M. Vargas, Microcontroladores. UNIVERSIDAD NACIONAL DE COLOMBIA.

1

Page 2: Informe 4. Programacion Del MCU y Configuracion Del Modulo Oscilador

Cód. 285744 – 285728 – 285750. Informe – 04-GRUPO 9.

Quemador o Programador de Microcontroladores Motorola.

Microcontrolador MC68HC908XX. Cristal 4 – 10 MHz, 2 condensadores de 22pf,

Leds indicadores, micro switches, pulsadores, condensadores y resistencias varias.

IV. PROCEDIMIENTO Y ANÁLISIS DEL LABORATORIO

A. Describa cuales son los pines que utiliza un microcontrolador Motorola para configurar las entradas del módulo oscilador al igual que la prioridad de asignación de funciones.

Los pines usados para configurar las entradas del módulo oscilador en el microcontrolador son los pines 4 y 5 del mismo, los cuales se señalan en la figura 1.

Figura 1. Pines microcontrolador MC68HC908QY4 [1]

El pin 4 corresponde al llamado pin OSC1 y el pin 5 se le llama OSC2, ambos dependiendo del tipo de oscilador que se use en el microcontrolador tienen diferentes funciones. Por ejemplo con oscilador de cristal de cuarzo externo, ambos pines hacen par para generar la señal de reloj necesaria para el microcontrolador; con una fuente de reloj externa, como por ejemplo un generador de señales, esta se conecta al pin 4 (OSC1), mientras que el pin 5 se habilita como entrada o salida correspondiente al Puerto A del microcontrolador; para señal de reloj interna o un oscilador externo tipo RC, el pin OSC2 puede configurarse igualmente como puerto del

microcontrolador o como salida del oscilador interno. Más adelante se verá en detalle cómo se realiza este tipo de configuraciones y que registros deben ser afectados para que esto suceda.

Adicionalmente ambos pines tienen asignados una prioridad de funciones para tener en cuenta si varias funciones son asignadas o habilitadas para un solo pin. Estas prioridades de la más alta a la más baja siguiendo la flecha se observan en la figura 2.

Figura 2. Prioridad de los pines 4 y 5 del microcontrolador MC68HC908QY4 [2].

B. Realice un programa donde se hace la configuración del módulo oscilador con reloj interno e indique su diagrama de flujo.

Para configurar el MC68HC908QY4 en modo oscilador interno, principalmente tenemos 2 registros internos, los cuales se llaman CONFIG2 y OSCSTAT. En el registro CONFIG2 son importantes el bit 1, que corresponde a habilitar el Pin RSTEN de reset activo, además también colocar a cero los bits 4 y 5 que corresponden a los pines de OSC1 y OSC2 lo que significa que trabajaremos con el oscilador interno.

Por otro lado en el registro OSCSTAT ponemos a cero el bit 1 de ECGST Generador de reloj externo, y el bit 2 ECGON para indicarle que una fuente externa de reloj no es utilizada. El programa lo podemos apreciar en la figura 3, y el correspondiente diagrama de flujo se observa en la figura 4.

27 de Abril de 2013

2

Page 3: Informe 4. Programacion Del MCU y Configuracion Del Modulo Oscilador

Cód. 285744 – 285728 – 285750. Informe – 04-GRUPO 9.

Figura 3. Programa para configurar en oscilador interno el microcontrolado en

CODEWARRIOR IDE.

Figura 4. Diagrama de flujo para configurar en oscilador interno el

microcontrolador.

C. Con la ayuda de la hoja técnica de datos de su microcontrolador seleccionado, establezca cuales son los registros utilizados para poder trabajar con el modulo oscilador, y su ubicación dentro de la memoria de registros de función específica.

Como se vio en el anterior punto los registros que usamos para configurar el modulo oscilador interno son CONFIG2 que se encuentra en la dirección de memoria $001E y se ve en la figura 5. El registro OSCSTAT también es usado, y se encuentra en la dirección de memoria

$0036 y se ve en la figura 6; también usamos el registro OSCTRIM para modificar el valor al que oscila internamente, el cual se encuentra en la ubicación de memoria $0038 y se ve en la figura 7. Finalmente se modifica también el registro PTAPUE de la dirección $000B de la figura 8.

Figura 5.Registro CONFIG2.

Figura 6.Registro OSCSTAT.

Figura 7.Registro OSCTRIM.

Figura 8.Registro PTAPUE.

D. Calcule los ciclos que se tarda el programa en ejecutarse, según la configuración indique cual es el tiempo de bus y el tiempo total de ejecución, determine la frecuencia de encendido y apagado del PTA1.

El programa consta principalmente de 3 partes, una que la denominaremos de Configuración general del microcontrolador, la otra que es la Rutina principal y la tercera es una Rutina de retraso o demora.

La primera parte de Configuración General, apagamos el watchdog, y configuramos los registros para trabajar con oscilador interno como se mostró en los puntos anteriores. Esta primera parte del código se ve en la figura 9, frente a cada línea de instrucción se indica al final del comentario un numero entre llaves cuadradas [], el cual corresponde al número de ciclos de bus que toma realizar

27 de Abril de 2013

3

Page 4: Informe 4. Programacion Del MCU y Configuracion Del Modulo Oscilador

Cód. 285744 – 285728 – 285750. Informe – 04-GRUPO 9.

dicha instrucción. Este parte de código toma en total 31 ciclos para ejecutarse

Figura 9.Codigo de configuración del microcontrolador en oscilador interno.

La segunda parte consiste en la rutina principal, en la cual primero se pone un uno en el PTA1 para prender el led, luego se llama la rutina de retardo para que permanezca encendido un momento; posteriormente se pone a cero, y se vuelve a llamar la rutina de retraso para que conserve este estado el mismo tiempo que duro encendido, y se repite este ciclo infinitas veces. Nuevamente en frente de cada instrucción aparece el número de ciclos de bus que tarda en ejecutarse; cabe aclarar que en el caso de la rutina de retardo esta toma un total de 3256799 ciclos en ejecutarse, pero además se tiene en cuenta que la instrucción para saltar a dicha rutina toma 5 ciclos la cual es BSR. El total de ciclos que lleva ejecutar la rutina principal será entonces de 6513622.

Figura 10. Rutina principal del programa.

La última parte corresponde a la rutina de retraso, la cual es un serie de instrucciones a modo de la instrucción ‘for’ de lenguajes más elevado anidadas, en las cuales básicamente se va decrementando un número hasta llegar a cero, una y otra vez con el único propósito de gastar ciclos de reloj para que el led dure en un determinado estado el tiempo

suficiente como para que lo podamos observar. El programa se aprecia en la figura 11 y emplea un total de 3256799 ciclos de reloj en ejecutarse.

Figura 11. Rutina de Retardo del programa.

El tiempo total de ejecución de encendido y apagado del led, corresponde a la cantidad de ciclos que tarda en ejecutarse una vez la rutina principal, los cuales son 6513622 ciclos de bus. Para este caso se configuró el registro OSCTRIM con un valor de $00, por lo tanto el valor del oscilador interno es del valor máximo en el que puede estar, y es de 16MHz∓5%. Entonces el tiempo de ejecución del programa será:

t=¿ ciclos∗1f BUS

t=6513622∗( 1

4∗106 )=1.67 segundos

La frecuencia de encendido del led será entonces:

f =f BUS /¿ciclosquetomaprenderyapagarled

f = 4∗106

6513615=0.614 Hz

E. Con ayuda del osciloscopio mida la frecuencia del oscilador interno y la de prendido y apagado del PTA1.

27 de Abril de 2013

4

Page 5: Informe 4. Programacion Del MCU y Configuracion Del Modulo Oscilador

Cód. 285744 – 285728 – 285750. Informe – 04-GRUPO 9.

Realizando medidas a la frecuencia del oscilador interno con el registro OSCTRIM con un valor de $95 y configurando el registro PTAPUE, en su bit más significativo para ponerlo en 1 y habilitar la salida por este pin de la frecuencia de oscilación interna, se obtuvo la figura 12 del osciloscopio, en el cual se muestra una frecuencia de 11.88MHz la cual está dentro de los valores de oscilación interna del microcontrolador

Figura 12. Señal en el osciloscopio de la frecuencia del oscilador interno.

La frecuencia de encendido del led se mostró en ese caso de 0.516 Hz

F. Realice 5 ajustes en el registro OSCTRIM y repita Los puntos D y E.

En la tabla 1 se puede ver, diferentes valores del registro OSCTRIM, a la vez que se midió con ayuda del osciloscopio los valores de frecuencia del LED y el valor mismo de oscilación interna. Es claro como a medida que se aumenta el valor de OSCTRIM, el valor de la frecuencia de oscilación va cayendo hasta su valor mínimo, y lo contrario si se disminuye el valor de OSCTRIM la frecuencia de oscilación aumenta hasta llegar a su máximo.

Valor OSCTRIM

f BU

Tiempo ejecución

f LED(Hz)

S(MHz)programa(se

g)

$99 3.06 2.14 0.467

$75 3.27 1.97 0.502

$60 3.41 1.91 0.523

$46 3.59 1.83 0.551

$1A 3.83 1.71 0.592

Tabla 1. Configuración del registro OSCTRIM.

G. Diseñe un programa donde se trabaje con oscilador externo, indique la configuración del módulo y los pasos para la transición de OSC interno a externo.

Para pasar de oscilador Interno a Externo hay una serie de pasoso que se recomienda realizar para no tener ningún problema a la hora de ejecutar el programa o querer programar el microcontrolador. Estos pasos son:

1. Configurar el registro CONFIG2 de la figura 5 poniendo en 1 el bit 4 correspondiente OSCOPT0, y en cero el bit de 5 de OSCOPT1 habilitando un oscilador externo.

2. Realizar un retardo de aproximadamente 4096 ciclos de la fuente de reloj externa, para permitir la estabilización del sistema al hacer el cambio del tipo de oscilador.

3. Luego de terminar el retardo, habilitar mediante software el bit ECGON del registro OSCSTAT de la figura 6, colocando un 1 en este bit.

4. Esperar dos flancos de subida del reloj externo para verificar el reloj externo.

5. Luego el microcontrolador habilita el bit ECGST del registro OSCSTAT poniendo un uno asegurando que

27 de Abril de 2013

5

Page 6: Informe 4. Programacion Del MCU y Configuracion Del Modulo Oscilador

Cód. 285744 – 285728 – 285750. Informe – 04-GRUPO 9.

la fuente de reloj externa ha sido acoplada y luego detiene el oscilador interno.

El código realizado en el entorno CODE WARRIOR IDE para la configuración del oscilador externo se puede ver en la figura 13.

Figura 13. Configuración del microcontrolador en oscilador externo.

H. Realice la depuración paso a paso en el microcontrolador en el modo circuit&programing, luego simule el oscilador externo son la ayuda de un pulsador, ¿Se puede?, Concluya.

Para probar el programa y quemarlo en el microcontrolador, se agregó nuevamente las líneas de código para prender y apagar el led en el puerto PTA1; el código completo se ve en la figura 14.

Figura 14.Programa con oscilador externo.

Se procedió entonces a quemar el microcontrolador, y se observó como el led en el puerto PTA1 luego de desconectar el modo monitor y pasar a modo usuario, se prendió como se ve en la figura 15.

Figura 15.Programa corriendo en el microcontrolador.

Se comenzó a presionar entonces el pulsador rojo de la figura 15 para simular un fuente de reloj externa, lo que producía que el led efectivamente comenzara a prender y apagar al presionar varias veces en pulsador, como por ejemplo en la figura 16 donde se ve que el presionarlo se apaga el led.

27 de Abril de 2013

6

Page 7: Informe 4. Programacion Del MCU y Configuracion Del Modulo Oscilador

Cód. 285744 – 285728 – 285750. Informe – 04-GRUPO 9.

Figura 16.Pulsando para simular un fuente de reloj externa.

Sin embargo, al presionar el pulsador, no se genera un único pulso de reloj como se espera, sino que por la pieza mecánica del pulsador, se genera una oscilación que se va a atenuando hasta llegar al estado correcto, esto produce que no sea constante los ciclos de reloj en el microcontrolador, y por lo tanto que al final no se ejecute de manera correcta el programa ya que no se tiene una manera de temporizar y coordinar de manera correcta las instrucciones.

Esto sería más evidente por ejemplo a la hora de usar otros módulos que requieren que la coordinación de esta señal de reloj para ejecutar sus funciones, como por ejemplo el convertidor análogo digital, lo cual haría imposible con esta señal de reloj tan inestable realizar dicha función.

I. Diseñe un programa donde se active un led, este debe estar activado dos segundo, y apagado 3 segundo. Ese proceso se debe repetir 10 veces. Luego se debe incrementar en un segundo el tiempo en ON y OFF.

Para este programa nuevamente, se escogió usar un oscilador interno, y viendo los datos de la tabla 1, con un valor de OSCTRIM de $75 se lograba una frecuencia de intermitencia del led de medio segundo. Por tanto usando este mismo programa pero agregando un contador de 10, se hizo que para cuando se decrementara el acumulador donde se

cargó previamente el número $0A, y este llegara a cero, saltara a otra rutina donde el tiempo de intermitencia del led aumenta en un segundo. El programa principal se puede ver en la figura 17.

Figura 17.Intermitencia de un led, variando el tiempo de la intermitencia.

La rutina de retardo es la que se aprecia en la figura 11, y la rutina para configurar el oscilador interno se ve en la figura 9, solo que en este caso el valor de OSCTRIM es de $75.

V.PREGUNTAS

Como se ajusta la frecuencia del oscilador en la simulación y para que se utiliza en el entorno de Code warrior “Run Hill cycle”.

Una vez se ejecuta la simulación, en la ventana se da click en la pestaña HC08FCS, se baja hasta CLOCK MODULE y en ella se da click en la opción CHANGE EXTERNAL CLOCK FRECUENCY, como se ve en la figura 18.

27 de Abril de 2013

7

Page 8: Informe 4. Programacion Del MCU y Configuracion Del Modulo Oscilador

Cód. 285744 – 285728 – 285750. Informe – 04-GRUPO 9.

Figura 18.Cambio del valor del oscilador en la simulación.

Adicionalmente, en este misma pestaña de HC08FCS abajo encontramos la opción RUN TILL CYCLE, la cual nos deja avanzar el programa hasta un ciclo que le especifiquemos en decimal como se ve en la figura 19, siempre y cuando el ciclo al que se quiere ir, no haya sido ejecutado.

Figura 18. Opcion Run till Cycle.

Para que se utiliza en el entorno de Code warrior “Trace”. Para el desarrollo de su programa utilícelo y presente un ejemplo.

Trace es igualmente una herramienta de simulación de un programa, el cual permite realizar en una sola ventana un análisis de las diferentes instrucciones que se ejecutan, es una ventana de resumen de los componentes mas importantes y actividad en los registros de interés del microcontrolador. Esta se encuentra en la pestaña HC08FCS al final de ella.

Nos permite por ejemplo hacer una análisis paso a paso de cada instrucción como se ve en la figura 19

Figura 19.Herramienta Trace con su modo Instructions.

Así como también permite realizar un análisis gráfico, de los ciclos de reloj que se van produciendo con cada instrucción, como se ve en la figura 20.

Figura 20.Herramienta Trace con su modo Graphical.

VI. CONCLUSIONES

La facilidad de este tipo de microcontroladores de tener un oscilador interno, facilita su montaje en circuitos, ya que ahorra espacio y consumo de potencia de otros dispositivos para generar la señal de reloj, sin mencionar la posibilidad de usar esta señal de reloj para otros circuitos, ya que esta se puede sacar mediante un pin del microcontrolador. Sin embargo si se necesita una señal de reloj muy precisa, que no se propensa a cambios mayores al 1% por ejemplo, en este caso el modulo oscilador interno se vuelve obsoleto.

Para el oscilador externo, la opción máspopular es usar un cristal de cuarzo, por su facilidad de adquisición, relativo bajo costo y el hecho que evita también tener circuitos

27 de Abril de 2013

8

Page 9: Informe 4. Programacion Del MCU y Configuracion Del Modulo Oscilador

Cód. 285744 – 285728 – 285750. Informe – 04-GRUPO 9.

engorrosos que consumen potencia adicional para generar la señal de reloj.

El entorno de desarrollo CODEWARRIOR IDE es mucho más versátil y completo en cuanto a herramientas de simulación se refiere, en comparación por ejemplo con el software WIN

IDE, lo cual puede facilitar en gran medida la depuración de programas, pero a veces se queda corto cuando se producen errores de sintaxis en el código y no muestra de manera precisa los errores que se pudieron haber cometido.

VII. BIBLIOGRAFÍA

[1] http://pdf1.alldatasheet.net/datasheet-pdf/view/136239/FREESCALE/MC68HC908QY4A.html, pagina 20.[2] http://pdf1.alldatasheet.net/datasheet-pdf/view/136239/FREESCALE/MC68HC908QY4A.html, pagina 23.

27 de Abril de 2013

9