Curso de Microcontroladores El Mplab

MICROCONTROLADORES 36 Microcontrolador 11/3/08 09:48 Página 36 CURSO DE MICROCONTROLADORES EL MPLAB (I) Fernando Re

Views 90 Downloads 9 File size 8MB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

MICROCONTROLADORES

36 Microcontrolador

11/3/08

09:48

Página 36

CURSO DE MICROCONTROLADORES EL MPLAB (I) Fernando Remiro Domínguez Profesor de Sistemas Electrónicos IES. Juan de la Cierva www.terra.es/personal/fremiro

Francisco Javier Tortosa Martínez Ingeniero de Sistemas Indytel Sistemas S.L. www.microladder.com

En el número 178 , ya publicamos un manual de usuario del MPLAB en su versión de 16 bits, pero la verdad que en podo o mejor dicho en casi nada se parece a esta versión de 32 bits con la que estamos trabajando ahora. Por lo tanto antes de seguir analizando otros microcontroladores de Microchip, nos hemos propuesto publicar este manual de usuario del MPLAB IDE, tanto para los nuevos usuarios de los estos microcontroladores, como para algunos que son más expertos, y no le sacan todo su posible potencial de uso.

36

RESISTOR

Foto 1.- Logotipo del MPLAB COMO OBTENER EL PROGRAMA Lo primero que debemos hacer es obtener el programa que es de libre disposición y que nos lo ofrece la empresa Microbio en su web www.microchip.com y ya en la página principal en el apartado de design encontramos un enlace al MPLAB IDE, pulsamos sobre él y al final de esta nueva página encontramos un enlace de descarga en el que pone MPLAB IDE v8.02 Interim Release Zipped Installation, pulsando con el botón auxiliar del ratón lo guardamos en un subdirectorio de nuestro disco duro. Como el archivo

que hemos descargado está comprimido en formato Zip, lo extraemos en un subdirectorio y se ejecuta el archivo MP802_Install. El MPLAB IDE está desarrollado bajo el sistema operativo Windows. Es un entrono para el diseño de los microcontroladores PIC y dsPIC. Con el MPLAB se puede: • Crear y revisar código fuente a través de su editor. • Ensambla, compila y linkar el código fuente. • Depuración siguiendo el flujo del programa en el simulador o emulando en el circuito en tiempo real.

• Cronometra el tiempo de ejecución en el simulador o en el emulador • Visualiza las variables en la ventana del reloj • Permite programar el firmware utilizando diversos programadores. COMENZANDO CON EL MPLAB IDE Una vez instalado el programa, se recomienda seguir los siguientes pasos. 1. Como el path o camino absoluto de los ficheros de trabajo del MPLAB no deben exceder de 62

11/3/08

09:48

Página 37

Figura 1.- Programas que aparecen al abrir el archivo zip de la carpeta MP802. caracteres, se recomienda crear una carpeta en el directorio raiz de nuestro disco duro, en mi caso yo tengo creada una carpeta que

denomino Trabajo y dentro de ella, una carpeta con cada microcontrolador o gran proyecto realizado con los microcontroladores

PIC, por ejemplo C:Trabajo/ Pic16F876A. 2. Para empezar a trabajar con el MPLAB IDE, hacer doble clic

Figura 2.- Pantalla que aparece al ejecutar por primera vez el MPLAB IDE

MICROCONTROLADORES

36 Microcontrolador

37

RESISTOR

MICROCONTROLADORES

36 Microcontrolador

38

RESISTOR

11/3/08

09:48

Página 38

en el icono que aparece después de la autoinstalación o Start>Programs>Microchip>MPLAB selecto IDE vx.xx>MPLAB IDE. Aparecerá una pantalla desplegable como la de la figura 2. 3. Seguidamente seleccionaremos el dispositivo con el que vamos a trabajar, para ello se debe seleccionar en la barra de herramientas el menú Configure>Select Device y seleccionar el microcontrolador que aparece en la lista de dispositivos, con el que se desea trabajar, en nuestro caso el PIC16F876A. Los "Leds" indican que elementosIDE del MPLAB dan soporte al dispositivo. • El Led verde indica soporte total. • Una luz amarilla indica el apoyo preliminar es decir que solo permite hacer algunas cosas en particular para el MPLAB IDE con esta herramienta y este dispositivo. Se debe entender que a menudo una luz amarilla en lugar de verde se toma para los nuevos dispositivos que necesitan rápidamente un apoyo y no da tiempo a desarrollar todas las funciones. • Un LED rojo indica que el dispositivo no tiene apoyo para este elemento. El apoyo puede desarrollarse posteriormente o ser impropio para la herramienta, por ejemplo, los dsPIC que no pueden apoyarse MPLAB ICE 2000. 4. Para empezar a escribir nuestro primer programa, debemos seleccionar en la barra de menú File> New o seleccionar el icono con la misma función. 5. Seguidamente escribimos nuestro programa, que en este caso consiste en leer unos interruptores que conectamos en el PORTA (líneas RA0:RA5) y muestra sobre las líneas RB0:RB5 el valor leído. El programa puede ser el que seguidamente se muestra y que hemos denominado Ejem_1.asm. Para salvar el fichero fuente se selecciona File>Save As…. Aparece un cuadro de diálogo como el que se muestra en la figura 6, en el que se

Figura 3 .-Cuadro de diálogo de selección de dispositivo.

Figura 4.- Pantalla para la selección del menú de un nuevo archivo.

11/3/08

09:48

Página 39

;******************************************************************************************** ;Ejem_1.asm ;Ejemplo para simulación Entradas/Salidas en el entrenador ;Sencillo ejemplo de E/S con los PIC 16F87XA ;Leer el estado de los 5 interruptores conectados en las líneas(RA4-RA0) y reflejar el nivel ;lógico de los mismos sobre los leds RB4-RB0 conectados a la puerta B ;ESTE PROGRAMA UTILIZA EL BOOTLOADER COMO PROGRAMA DE CARGA A TRAVÉS DEL PUERETO SERIE DEL PC ;******************************************************************************************** List p=16F876A ;Tipo de procesador include "P16F876A.INC" ;Definiciones de registros internos __CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC & _WRT_OFF & _LVP_OFF & _DEBUG_OFF & _CPD_OFF org 0x00 ;Vector de Reset goto Inicio org 0x05 Inicio

Bucle

;Salva el vector de interrupciónx

bsf movlw movwf clrf movlw movwf bcf

STATUS,RP0 b'00000110' ADCON1 TRISB b'00111111' TRISA STATUS,RP0

;Selecciona banco 1

movf movwf goto

PORTA,W PORTB Bucle

;Leer las entradas RA0-RA4 ;Reflejar en las salidas ;Bucle sin fin

;Puerta A E/S digitales ;Puerta B se configura como salida ;Puerta A se configura como entrada ;Selecciona banco 0

39

RESISTOR

end Figura 5.- Circuito sobre el que se puede probar el programa Ejem1.asm

solicita el nombre del archivo, que nosotros hemos llamado Ejemp1.asm.

Al salvar el programa, el usuario verá como cambia el color del texto del fichero fuente, los comentarios

MICROCONTROLADORES

36 Microcontrolador

se ven en verde, las instrucciones en azul las etiquetas y nombres de registro en rojo tejo.

MICROCONTROLADORES

36 Microcontrolador

11/3/08

09:48

Página 40

40

RESISTOR

Figura 6.- Cuadro de diálogo para guardar el archivo fuente. 6. A la hora de trabajar con el MPLAB en la escritura de un programa fuente, no puede ser útil configurar algunas de las propiedades del editor, para lo cual seleccionamos en la barra de herramientas Edit>Properties… en este cuadro de diálogo se recomienda seleccionar la pestaña de ‘ASM’File Types y seleccionar las opciones que se muestran en la Figura 7. En la pestaña de Text se puede elegir el tipo de letra que al usuario le parezca más interesante, en dicha pestaña se pueden observar las Figura 7.- Cuadro de diálogo de la pestaña ASM File Types de editor de opciones del MPLAB

36 Microcontrolador

11/3/08

09:48

Página 41

Figura 8.- Cuadro de diálogo de las opciones de texto y fuentes opciones del cuadro de diálogo de la figura 8. En dicho cuadro se aprecia como se puede modificar el tipo y tamaño

de texto, así como los colores que los parámetros que indica dicho texto. 7. Seguidamente se puede ensamblar el programa y simular su

funcionamiento, tal y como iremos viendo en los próximo números de la revista.

36 Microcontrolador

11/3/08

09:48

Página 42

MICROCONTROLADORES

42-49 Microcontroladores:Maqueta Resistor

13/6/08

09:13

Página 42

CURSO DE MICROCONTROLADORES EL MPLAB (II) Fernando Remiro Domínguez Profesor de Sistemas Electrónicos IES. Juan de la Cierva www.terra.es/personal/fremiro

Francisco Javier Tortosa Martínez Ingeniero de Sistemas Indytel Sistemas S.L. www.microladder.com

42

RESISTOR

Foto 1.- Placas de desarrollo realizadas en el laboratorio de Desarrollo de Productos Electrónicos del IES Juan de la Cierva de Madrid.

Esta es la segunda entrega del manual del entorno de desarrollo MPLAB IDE, que como se puede ir comprobando, además de permitirnos escribir el programa en lenguaje ensamblador o con un compilador de alto nivel, permite realizar la depuración del programa ya sea utilizando el simulador que lleva incorporado o herramientas como son el MPLAB ICD2 o los emuladores MPLAB 2000 y MPLAB 4000. CREANDO UN NUEVO PROYECTO Dos de las características del MPLAB IDE son los proyectos y los escenarios (workspaces). Un proyecto contiene los archivos necesitaron para diseñar o construir

una aplicación (el código fuente, el linkador, etc.) así como varias herramientas de construcción (build). El workspace contiene la información sobre el dispositivo seleccionado, herramientas de puesta a punto del programador, además se pueden

abrir ventanas para ver y configurar otros escenarios del IDE. La manera mejor manera de preparar un proyecto y su escenario (workspace) asociado es usando el Project Wizard. No obstante cuando se trabaja con una aplicación de un

único archivo en ensamblador, se puede usar Quickbuild (Project> Quickbuild), es decir, ensamblar el código con el ensamblador MPSM y no crear un proyecto. Sin embargo utilizando un workspace se pueden guardar todos los escenarios y salvar las configuraciones. CREAR UN PROYECTO CON EL WIZARD Para crear un nuevo proyecto con el Wizard una vez que tenemos escrito nuestro programa en ensamblador, debemos de seguir los siguientes pasos: • Seleccionamos Project/Project Wizard, lo que hará aparecer la pantalla de la bienvenida de la Figura 1.

13/6/08

09:13

Página 43

• Cuando pulsamos Siguiente, aparece la ventana de selección de la herramienta de trabajo. Se puede seleccionar una herramienta de Microchip o de terceras partes. En la ventana de Active Tollsuite solo aparece la suite de herramientas de los lenguajes que trabajan con el dispositivo previamente seleccionado. Para ver el resto de herramientas instaladas pulsar sobre la flecha de Active Toolsuite, apareciendo la pantalla de la figura 3.

Figura 3.-pantalla de selección de la herramienta de programación.

Figura 1.- Pantalla de bienvenida del Project Wizard.

• Pulsamos sobre Siguiente y en la pantalla de diálogo nos solicita el microcontrolador con el que queremos trabajar. En este caso seleccionamos el PIC16F876A.

Figura 2.- Selección de microcontrolador del proyecto.

Si aún no aparece la herramienta deseada, pulsar sobre el botón “Help My Suite Isn´t Listed!” y aparecerá un listado de herramientas con una “X” en rojo indicará si es el caso que no se ha realizado la instalación o que el camino ejecutable no es conocido por el MPLAB IDE, para asignar o verificar asignaciones de herramientas a los archivos ejecutables, pulsar sobre el botón en la herramienta para mostrar el camino del archivo ejecutable. • Pulsar sobre Siguiente y aparecerá una nueva ventana de diálogo como

Figura 4

la de la figura 4, pulsando sobre Browse… elegimos el nombre y camino de nuestro proyecto. Una vez seleccionado el camino de nuestro proyecto que tiene la extensión *.mcp pulsamos sobre siguiente y aparece una ventana como la de la figura 5, en la que nos solicitan que seleccionemos los ficheros que integran nuestro proyecto, en nuestro caso ejem_1.asm , pulsamos sobre Add>> para añadir el archivo y volvemos a pulsar sobres siguiente, apareciendo la pantalla de la figura 6.

Figura 5.- Pantalla de selección de los archivos que integran el proyecto.

Figura 6.- Pantalla de finalización del asistente de creación de proyectos.

Si no se abre la ventan del proyecto, seleccionar View>Project , tal y como se muestra en la figura 7, donde se puede apreciar en la parte superior de la pantalla que aparece el nombre del Proyecto, en nuestro caso ejem_1.mcw. En estos momentos se abrirá una pantalla con forma de árbol como la de mostrada en la figura 8, en la que en la raíz aparece el nombre del pro-

MICROCONTROLADORES

42-49 Microcontroladores:Maqueta Resistor

43

RESISTOR

MICROCONTROLADORES

42-49 Microcontroladores:Maqueta Resistor

13/6/08

09:13

Página 44

• Si se pulsa el botón derecho sobre un archivo, aparece la opción de Remove, que nos permitirá eliminar archivos del proyecto. • Otra de las opciones que aparece es la de Build Options… que no usaremos en esta guía didáctica y la por ultimo aparece la opción de Edit que al activarla nos presenta el archivo seleccionado para visualizarlo y que además podremos modificarlo.

Figura 7.- Solicitud de apertura del fichero a editar.

44

RESISTOR

Figura 9.- Barra de progreso del montaje o ensamblado del programa

MONTAR O CONSTRUIR EL PROYECTO: Ahora estamos en condiciones de construir el proyecto pulsando el botón de la barra de herramientas o seleccionando Project>Build All . Durante la construcción del proyecto aparecer una barra de progreso como la de la figura 9, que se cerrará cuando haya terminado el proceso de montaje, si todo ha ido bien, la barra será de color verde y aparecerá un color rojo en caso contrario. También se abrirá la ventana de salida (Output) como la de la figura 10. Si al final de esta pantalla aparece la frase “BUILD SUCCEDED” se confirma que el ensamblado se ha producido con éxito. Por tanto, ya se está en condiciones de pasar a la simulación. En esta pantalla pueden aparecer algunos mensajes de aviso Message, que llaman la atención sobre situaciones a tener en cuenta y que podrían ocasionar un error en el programa pero que no impiden el

Figura 8.- Ventana de visualización del proyecto

yecto y los ficheros que se han añadido posteriormente. • Si se pulsa sobre uno de los archivos del árbol, este se abrirá automáticamente. • Si dentro de esta pantalla se pulsa el botón de la derecha del ratón, aparece la opción de Add Files que activándola permite agregar más ficheros fuente al proyecto.

Figura 10.- Ventana del registro de salida.

13/6/08

Figura 11.- Pantalla de selección de archivo.

Figura 12.- Contenido del archivo hexadecimal.

correcto ensamblado. En la figura 10 se aprecian los mensajes de las líneas 21, 22 y 24 en las que se utilizan respectivamente los registros ADCON1, TRISB y TRISA, que se encuentran en el banco 1, este mensaje nos indica que estos registros no se encuentran en el banco 0, para que lo comprobemos, ya que en caso contrario tendríamos problemas en el funcionamiento de nuestro programa. Si al final de la pantalla del registro de salida, aparece el mensaje “BUILD FAILED”, nos indica

09:13

Página 45

que ha ocurrido un error en el proceso de ensamblado del programa y veremos que se ha generado un fichero de errores que describen cada uno de ellos. Si hacemos un doble clic sobre la línea que muestra el error, el cursor saltará directamente a la línea de código donde se encuentra éste. Una vez subsanados los errores, volveremos a repetir el proceso de ensamblado del fichero fuente para obtener el fichero con extensión .hex que en nuestro caso será ejem_1.hex. Este fichero con extensión *.hex, es el que cargaremos en nuestro microprocesador utilizando la herramienta de grabación de la que dispongamos. Para ver el fichero ejem_1.hex, bastará con seleccionar el meni File>Open y dentro de los tipos de archivos seleccionar All Files [*.*] y seleccionamos el archivo ejem_1. hex. Cuando abrimos el archivo se puede ver que únicamente contine códigos hexadecimales y que serán los que se graven posteriormente en el microcontrolador SELECCIÓN DE LA HERRAMIENTA DE DEPURACIÓN Para poner a punto los programas, el MPLAB al pulsar en Debugger>Select Toll nos permite elegir entre las siguientes opciones, tal y como se puede ver en la figura 13: • El simulador MPLAB SIM. Simula el funcionamiento de

Figura 13,. Ventana de selección de la herramienta de depuración

MICROCONTROLADORES

42-49 Microcontroladores:Maqueta Resistor

45

RESISTOR

MICROCONTROLADORES

42-49 Microcontroladores:Maqueta Resistor

46

RESISTOR

13/6/08

09:13

microcontrolador con el software que se le introduce. • El MPLAB ICD2 depuración en circuito. Permite correr el código en el circuito donde tenemos conectado nuestro microcontrolador, con todos los periféricos que utilice y permite realizar Breack Point en el programa y ver el estado de los registros utilizando el entorno del MPLAB. • El emulador en circuito MPLAB ICE 4000.Emula las grandes memorias de los PIC18 y los dsPIC en el hardware. El emulador en circuito ICE 2000. Emula un gran número de microcontroladores y permite el acceso a las distintas partes de memoria. Comprobar en el directorio IDE la lista de dispositivos que lo soportan. Una vez elegida la herramienta de depuración por ejemplo el simulador aparece una nueva barra de herramientas como la que se muestra en la figura 14. Figura 14.- Barra de herramientas de la herramienta de depuración

Página 46

Figura 15.- Cuadro de diálogo de las ventanas de visualización del MPLAB. VENTANAS DE VISUALIZACIÓN Una vez ensamblado el programa, y seleccionada la herramienta de depuración, en este caso la de simulación, podemos visualizar las distintas ventanas que nos darán información sobre el estado del microprocesador y sus memorias. Para ello hacer clic con el ratón sobre View en la barra de herramientas, aparece el cuadro de diálogo de la figura 15. Las opciones activas son: • Disassemby Listing • EEPROM

• Fille Registers • Hardware Stack • Locals • Program Memory • Special Registers • Watch • Memori Usage Gauge • Simulator Trace • Simulator Analiczer

VENTANA DISASSEMBLY LISTING: Nos presenta el código máquina y el archivo fuente, para entrar en ella hay que pulsar en View> Disassembly Linsting y se aparece una

Rum: Comienza la ejecución del programa a toda velocidad. En este caso, simulador ejecuta el programa a toda velocidad hasta que se detenga haciendo clic en el icono de abajo.

Halt: Detiene la ejecución del programa. El programa de ejecución puede seguir paso a paso, a velocidad opcional o a toda velocidad de nuevo.

Animate: Comienza la ejecución del programa a velocidad opcional. La velocidad de ejecución se fija en el cuadro de diálogo Debugger/Stettings../Amimations/ Realtime Update.

Step Into: Comienza paso a paso la ejecución del programa. Las instrucciones son ejecutadas una tras otra. Por otra parte, haciendo clic en este icono permite ejecutar las subrutinas y macros paso a paso. Step Over: Este icono al igual que el anterior permite realizar la ejecución de las instrucciones de una en una, pero las subrutinas las ejecuta de golpe, como si fuera un única instrucción.

Step Out: Cuando estamos dentro de una subrutina al pulsar este icono, el programa corre de golpe hasta que sale de ella y se para poder seguir con la ejecución paso a paso.

Reset: Restablece microcontrolador. Al hacer clic en este icono, el contador de programa se posiciona al principio del programa y la simulación puede comenzar.

42-49 Microcontroladores:Maqueta Resistor

13/6/08

Figura 16.- Ventana de visualización Disassembly Listing, ventan como la de la figura 16, en la que podemos ver que aparece de izquierda a derecha la posición de memoria de programa, el código de hexadecimal de la instrucción, el código de la instrucción en ensamblador, el número de línea de nues-

09:13

Página 47

tro programa fuente y el programa fuente que escribimos nosotros. Además nos muestra en el caso de estar simulando el funcionamiento con una flecha de color verde la posición en la de memoria a la que apunta el contador de programa en

este momento y con una letra B encerrada en un circulo rojo los puntos del ruptura (Breakpoints) que hemos marcado en la simulación haciendo un doble clic con el ratón sobre la línea en la que queremos el Breakpoints. Pulsando sobre el botón contractual del ratón, aparece una ventan con las siguientes opciones: • Set/Remove Breakpoint: nos permite poner o quitar un punto de ruptura a la línea actualmente seleccionada. • Enable/Disable Break: Activa o desactiva un punto de ruptura en la línea actualmente seleccionada. • Breakpoints: deshabilita, habilite o borra todos los puntos de ruptura. • Run To Cursor: Ejecute el programa de situación del cursor actual hasta aquí.

MICROCONTROLADORES

42-49 Microcontroladores:Maqueta Resistor

48

RESISTOR

13/6/08

09:13

• Set PC at Cursor: Ponga al Contador del Programa (PC) en la en el valor de la posición que se indica con el cursor. • Copy: copia el texto seleccionado al portapapeles. El texto se selecciona pulsando el botón de la izquierda del ratón y arrastrando hasta donde nos interese y en ese momento soltamos el botón. • Select All: Selecciona todo el texto de la ventana. • Output to File: Guarda el contenido de la ventana en un archivo de texto que podemos indicar desde aquí. • Print: Para imprimir el archivo • Properties: Despliega un cuadro de diálogo de cómo queremos que aparezcan escritos los datos de la ventana de desensamblado.

VENTANA EEPROM: Seleccionando View>EEPROM aparece una ventana como la que se muestra en la figura 17, en la que se ve el contenido de la memoria E2PROM de usuario del microcontrolador con el que estemos trabajando. En esta ventana se muestran los datos de las columnas de la dirección hexadecimal de los datos, el contenido de las distintas posiciones de memoria y la representación en código ASCII de la línea de datos correspondiente. Pulsando sobre el botón contractual del ratón aparece un menú que nos permite: • Close: Cerrar esta ventana • Find: Buscar en esta ventana el texto indicado en el cuadro dialogo de esta opción. • Find Next: Encontrar en esta ventana la próxima coincidencia del texto indicado en el cuadro de diálogo anterior. Con busca hacia delante en la ventana y con + busca hacia atrás en la ventana. • Go To: Va a la dirección de memoria indicada en el cuadro de diálogo. • Import Table: abre el cuadro de diálogo para importar una tabla de

Página 48

Figura 17,. Venta del contenido de la memoria E2PROM de usuario.

Figura 18.- Ventana que muestra el contenido de la memoria RAM de datos en formato hexadecimal.

valores a la E2PROM desde la posición que se indique. • Export Table: Abre el cuadro de diálogo para exportar el contenido de la las posiciones de memoria E2PROM a un archivo de extensión *.MCH. • Fill Memory: Abre el cuadro de diálogo que nos permite llenar desde una posición a otra de memoria E2PROM con un valor constante, datos que vayan incrementado o datos aleatorios. • Output to File: abre un cuadro de diálogo para guardar el contenido del bloque de posiciones de memoria que se indique. • Print: Para imprimir el contenido de la ventana. • Refresh: Refresca los datos de esta ventana.

• Properties: Despliega un cuadro de diálogo de cómo queremos que aparezcan escritos los datos de esta ventana.

VENTANA FILE REGISTERS: Para visualizar esta ventana se activa View>File Registers. Muestra el contenido de todas las posiciones de la memoria RAM del dispositivo seleccionado, cuando el simulador ejecuta una instrucción, comprueba el valor del registro correspondiente y si lo modifica, la ventana se actualiza. En el formato hexadecimal, que corresponde con la mostrada en la figura 18, se pueden ver las siguientes columnas de información: • Parte alta de la dirección Hexadecimal de la memoria, la parte baja

13/6/08

09:13

Página 49

Figura 19 Ventan que muestra el contenido de la memora RAM en formato simbólico.

se indica en la cabecera de cada una de as columnas. • La representación ASCCII de la línea de datos correspondiente. En el formato simbólico que corresponde a la figura 19, presenta los registros representados con su nombre simbólicos y el contenido de los mismos en formato hexadecimal, decimal, binario y ASCII. Pulsando sobre el botón contractual del ratón aparece un menú que nos permite: • Close: Cerrar esta ventana • Full Memory Update: La actualización de los registros de esta ventan se actualizan después de una parada solo si se habilitó. Por defecto esta opción esta habilitada. Si la ventana está abierta, solo los datos visibles se actualizan, si la ventana está cerrada no se actualiza ningún dato. • Find: Buscar en esta ventana el texto indicado en el cuadro dialogo de esta opción. • Find Next: Encontrar en esta ventana la próxima coincidencia del texto indicado en el cuadro de diálogo anterior. Con busca hacia delante en la ventana y con + busca hacia atrás en la ventana. • Go To: Va a la dirección de memoria indicada en el cuadro de diálogo. • Import Table: abre el cuadro de diálogo para importar una tabla de valores a la memoria RAM desde la posición que se indique. • Export Table: Abre el cuadro de diálogo para exportar el contenido

de la las posiciones de memoria RAM a un archivo de extensión *.MCH. • Fill Memory: Abre el cuadro de diálogo que nos permite llenar desde una posición a otra de memoria RAM con un valor constante, datos que vayan incrementado o datos aleatorios. • Output to File: abre un cuadro de diálogo para guardar el contenido del bloque de posiciones de memoria que se indique. • Print: Para imprimir el contenido de la ventana. • Refresh: Refresca los datos de esta ventana. • Properties: Despliega un cuadro de diálogo de cómo queremos que aparezcan escritos los datos de esta ventana.

VENTANA HARDWARE STACK: Para visualizar esta ventana se activa View>Hardware Stack . Nos muestra el contenido de la Pila

Hardware y el número de niveles disponibles y los utilizados por el punto en el que se encuentra la simulación del programa. En la venta se muestra: • TOS: la parte alta de la pila (TOS) • Stack Level: Es el número total de niveles de pila del dispositivo. • Stack Return Address. Indica la dirección a la que retorna el programa cuando el Contador de Programa cargue le valor de vuelta de subrutina o de interrupción. En esta ventan los valores usados permanecen sin variar cuando se mueve el puntero de la Pila hacia arriba. • Location: Informa sobre la posición relativa de una función Estando en esta venta si se pulsa sobre el botón contractual del ratón, se despliega una ventana que nos permite: • Close: Cerrar la ventana • Pop Snack: Carga la parte alta de la Pila en el Contador de Programa • Set Top-of-Stack: Pone en la parte alta de la Pila la dirección en la que se encuentra el cursor. • Output to File: abre un cuadro de diálogo para guardar el contenido del bloque de posiciones de memoria que se indique. • Print: Para imprimir el contenido de la ventana. • Refresh: Refresca los datos de esta ventana. • Properties: Despliega un cuadro de diálogo de cómo queremos que aparezcan escritos los datos de esta ventana.

Figura 20.- venta de la Pila Hardware.

MICROCONTROLADORES

42-49 Microcontroladores:Maqueta Resistor

49

RESISTOR

MICROCONTROLADORES

50-57 Microcontroladores:Maqueta Resistor

22/7/08

09:15

Página 50

CURSO DE MICROCONTROLADORES EL MPLAB (III) Fernando Remiro Domínguez Profesor de Sistemas Electrónicos IES. Juan de la Cierva www.terra.es/personal/fremiro

Francisco Javier Tortosa Martínez Ingeniero de Sistemas Indytel Sistemas S.L. www.microladder.com

50

RESISTOR

Foto 1.- Placas de desarrollo realizadas en el laboratorio de Desarrollo de Productos Electrónicos del IES Juan de la Cierva de Madrid.

Esta es la tercera entrega de este manual sobre el funcionamiento del MPLAB IDE. En estos momentos Microchip ha sacado la versión 8.14 de este programa, por lo que ya anticipamos que todas las referencias que hagamos para el próximo número de Resistor, se harán sobre esta nueva versión, que puede obtenerse de forma totalmente gratuita de la web www.microchip.com VENTANA PROGRAM MEMORY En esta ventana se pueden ver las posiciones de memoria que ocupa cada una de las instrucciones, el código de operación de cada instrucción y la dirección de memoria de programa que se ha

asignado a cada etiqueta. Se visualiza activando View>Program Memory. Pulsando sobre el botón contractual del ratón, aparece una ventan con las siguientes opciones: • Close: Cerrar esta ventana • Set/Remove Breakpoint (Machi-

ne/Symbolic Only): Poner o quitar un punto de ruptura a la línea actualmente seleccionada. • Enable/Disable Break (Machine/Symbolic Only): Habilita o deshabilita un punto de ruptura en la línea seleccionada actualmente.

22/7/08

09:15

Página 51

Figura 1.- Ventana de la Memoria de Programa

• Breakpoints: Habilita o deshabilita todos los puntos de ruptura • Run To Cursor: Ejecuta el programa a la situación actual del cursor. • Set PC at Cursor: Pone el Contador de Programa (PC) en la posición actual del cursor. • Center Debug Location: Indica posición actual del PC actual en la ventana • Cursor Tracks Debug Location: Rastrea el flujo del cursor para depurar la dirección. • Find: Busca en esta ventana el texto indicado en el cuadro dialogo de esta opción. • Find Next: Encuentra en esta ventana la próxima coincidencia del texto indicado en el cuadro de diálogo anterior. Con busca hacia delante en la ventana y con + busca hacia atrás en la ventana. • Go To: Va a la dirección de memoria indicada en el cuadro de diálogo. • Import Table: abre el cuadro de diálogo para importar una tabla de valores a partir de la posición de memoria de programa que se indique. • Export Table: Abre el cuadro de diálogo para exportar el contenido de la las posiciones de memoria de programa a un archivo de extensión *.MCH. • Fill Memory: Abre el cuadro de diálogo que nos permite llenar desde una posición a otra de memoria de programa con un valor constante, datos que vayan incrementado o datos aleatorios.

MICROCONTROLADORES

50-57 Microcontroladores:Maqueta Resistor

51

RESISTOR

Figura 2.- Venta de los Registros Especiales.

• Output to File: abre un cuadro de diálogo para guardar el contenido del bloque de posiciones de memoria que se indique. • Print: Para imprimir el contenido de la ventana. • Refresh: Refresca los datos de esta ventana. • Properties: Despliega un cuadro de

diálogo de cómo queremos que aparezcan escritos los datos de esta ventana.

VENTANA DE SPECIAL REGISTERS Esta ventana presenta todos los registros Especiales SRF indicándonos la posición que ocupa el registro dentro

MICROCONTROLADORES

50-57 Microcontroladores:Maqueta Resistor

52

RESISTOR

22/7/08

09:15

de la memoria, el nombre del registro y su contenido en binario, hexadecimal y ASCII. Se visualiza en View>Special Function Registers. Para modificar manualmente uno de estos registros se debe hacer un doble clic en la fila del registro correspondiente y modificarlo. Esto no es válido para los puertos que actuen como entrada, en cuyo caso hay que ir dentro del menú , Debugger, la opción Stimulus Controler como se verá más adelante. Pulsando sobre el botón contractual del ratón, aparece una ventan con las siguientes opciones: • Go To: Va a la dirección de memoria indicada en el cuadro de diálogo. • Import Table: abre el cuadro de diálogo para importar una tabla de valores a partir de la posición de memoria de programa que se indique. • Export Table: Abre el cuadro de diálogo para exportar el contenido de la las posiciones de memoria de programa a un archivo de extensión *.MCH. • Fill Registers: Abre el cuadro de diálogo que nos permite llenar desde un registro hasta otro con un valor constante, datos que vayan incrementado o datos aleatorios.

Página 52

Figura 3.- Cuadro de diálogo de las propiedades de los Registros de funciones especales.

Figura 4.- Ventana de visualización de Watch. • Output to File: abre un cuadro de diá- • Refresh: Refresca los datos de esta logo para guardar el contenido del bloventana. que de registros, desde el registro que • Properties: Despliega un cuadro de se indique. diálogo de cómo el que se muestra en • Print: Para imprimir el contenido de la la Figura 3. En esta ventana se puede ventana. modificar la posición de las columnas

que hemos indicado al principio de este epígrafe, de manera que si queremos que aparezca la columna Binary inmediatamente después de SFR Name, debemos de posicionarnos sobre el epígrafe Binary del cuadro de

22/7/08

09:15

Página 53

diálogo y pulsando obre Move Up o Move Down poner dicha columna en la posición que nos interese. Si pulsamos el botón Hide, la columna desaparece de la ventana.

VENTANA WATCH Esta ventan permite supervisar los registros de usuario o FSR que hayamos seleccionado previamente mientras corre el programa, en esta ventana se pueden abrir cuatro subventanas diferentes. Se visualiza en View> Watch. Pulsando sobre el botón contractual del ratón, aparece una ventan con las siguientes opciones: • Close: Cerrar esta ventana • Find: Buscar en esta ventana el texto indicado en el cuadro dialogo de esta opción. • Find Next: Encontrar en esta ventana la próxima coincidencia del texto indicado en el cuadro de diálogo anterior. Con busca hacia delante en la ventana y con + busca hacia atrás en la ventana. • Add: Al activar esta opción aparece un cuadro de diálogo como el de la figura 5, que nos permite añadir un SRF o un símbolo al Watch.

Figura 5.- Cuadro de diálogo para añadir nuevos símbolos al Watch.

Figura 6.- Representación de la memoria utilizada en un programa que no corresponde al ejem1.

• Delete: Borra del Watch el iten que tengamos seleccionado • Save Watch Tab: Guarda los registros y símbolos de la subventana seleccionada en un archivo. • Load Watch Tab: carga los registros y símbolos de un archivo en la subventana seleccionada. • Add Watch Tab: añade una nueva subventana al Warch, se pueden tener hasta 16. • Rename Watch Tab: Permite dar un nombre a cada una de las subventas • Import Table: Abre el cuadro de diálogo para importar el contenido de la los registros o símbolos. • Export Table: Abre el cuadro de diálogo para exportar el contenido de la las posiciones de memoria de programa a un archivo. • Output to File: abre un cuadro de diálogo para guardar el contenido del bloque de posiciones de memoria que se indique. • Print: Para imprimir el contenido de la ventana. • Refresh: Refresca los datos de esta ventana. • Properties: Despliega un cuadro de diálogo de cómo queremos que aparezcan escritos los datos de esta ventana. VENTANA MEMORI USAGE GAUGE Esta ventana indica la cantidad de memoria de programa y de memoria de

datos se usan actualmente en el proyecto. Se visualiza en View>Memori Usage Gauge, pero para poder visualizar los datos se debe lindar el programa por ejemplo en nuestro en el caso que estamos simulado (el programa ejem1) que trabaja con el PIC16F876A, se puede añadir al proyecto el archivo C:\Archivos de programa\Microchip\ MPASM Suite\LKR\16F876a.lkr.

VENTANA SIMULATOR TRACE Esta ventana nos ayuda a la simulación del programa. El simulate Trace toma una “instantánea” de la ejecución del programa. En el simulador el buffer de traza o de memoria de traza es útil para visualizar un registro a lo largo de la ejecución del programa, de manera que se pueda registrar por donde pasa el programa y después analizarlo. El simulador toma datos desde la última vez que se pulsó Rum o Animate hasta que se detiene la simulación del programa, que normalmente será con un Breakpoint. El buffer de traza es compartido con el logic analyzer. Para visualizar la ventana de memoria de traza hay que seleccionar el menú View>Simulate Trace. El simulador muestra una ventana denominada Trace en la se puede ver cualquier variación sobre los registros al ejecutarse el código de instrucción. Esta ventana tiene las columnas de información siguiente:

MICROCONTROLADORES

50-57 Microcontroladores:Maqueta Resistor

53

RESISTOR

MICROCONTROLADORES

50-57 Microcontroladores:Maqueta Resistor

22/7/08

09:15

Página 54

54

RESISTOR

Figura 7.- Ventana de Traza de memoria

• Line: Número de líneas ejecutadas desde que se pulsó Rum por última vez. • Addr: Dirección de la memoria de programa donde se encuentra la instrucción • Op: Código de operación numérico de la instrucción. • Label: Etiqueta de la instrucción si la tuviera. • Instruction: Instrucción ejecutada. • SA: Dirección numérica del registro fuente • SD: Dato del registro fuente • DA: Dirección numerica del registro destino • DD: Dato del registro Destino • Cycles: Ciclos máquinas transcurridos.

Pulsando sobre el botón contractual del ratón, aparece una ventan con las siguientes opciones: • Close: Cerrar esta ventana • Find: Buscar en esta ventana el texto

indicado en el cuadro dialogo de esta opción. • Find Next: Encontrar en esta ventana la próxima coincidencia del texto indicado en el cuadro de diálogo anterior. Con busca hacia delante en la ventana y con + busca hacia atrás en la ventana. • Go To: Salte al la opción especificada: • Trigger. Salte a la situación del Trigger. • Top. Salta a la parte alta de la ventana. • Bottom. Salte al final de la ventana. • Go To Trace Line. Vaya a la línea de la traza especificada en el cuadro de diálogo. • Go To Source Line. Abra la ventana del Archivo y va a la línea de código de fuente que corresponde a la línea del rastro seleccionada. • Show Source: Habilita o deshabilita la ventan con el código fuente que aparece debajo de la memoria de traza.

• Reload: Recarga la memoria de traza con los valores que contiene el buffer. • Reset Tie Stamp: Inicializa la imagen de tiempo condicional del prosecesador. • Display Time: En el ventana aparece la información del número de ciclos en segundos o en formato científico. • Symboloc Disassembly: En lugar de la dirección numérica para SFRs y símbolos, despliega los nombres de los mismos. • Output to File: abre un cuadro de diálogo para guardar el contenido del bloque de posiciones de memoria que se indique. • Print: Para imprimir el contenido de la ventana. • Refresh: Refresca los datos de esta ventana. • Properties: Despliega un cuadro de diálogo de cómo queremos que aparezcan escritos los datos de esta ventana.

50-57 Microcontroladores:Maqueta Resistor

VENTANA SIMULATOR ANALIZER La ventana de la figura 8 corresponde a un analizador lógico, sobre el que se pueden visualizar todos los pines del

22/7/08

09:16

Página 55

microcontrolador seleccionados durante un período de tiempo. Los datos son guardados junto con la memoria de traza y están sincronizados. Para visualizar la ventana del analizado lógico hay que

seleccionar el menú View> Logic Analyzer. Y en este caso para comprobar el funcionamiento del analizador ejecutaremos en el simulador el siguiente código:

;******************************************************************************************** ;Contador_binario.asm ;Cuenta en binario, incrementado el PORTB cada 5 us ;******************************************************************************************** List p=16F876A ;Tipo de procesador include "P16F876A.INC" ;Definiciones de registros internos

__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC & _WRT_OFF & _LVP_OFF & _DEBUG_OFF & _CPD_OFF CBLOCK 0x20 Inicio

Bucle

ENDC ORG bsf clrf bcf clrf incf nop nop goto end

0x00

STATUS,RP0 TRISB STATUS,RP0 PORTB PORTB,F Bucle

;Vector de Reset

;Selecciona banco 1 ;Puerta B se configura como salida ;Selecciona banco 0

MICROCONTROLADORES

50-57 Microcontroladores:Maqueta Resistor

56

RESISTOR

22/7/08

09:16

Página 56

Figura 9.- Ventana de diálogo de la selección de canales del analizador lógico.

Para utilizar el analizador lógico hay que seleccionar los canales que se desean visualizar, para ello pulsar sobre el botón de Channels que despliega una ventana como la de la figura 9, y que dependiendo del microcontrolador puede mostrarnos hasta 64 canales, sobre los que podremos ver los “0” y “1” y los cambios de estados de la simulación. Para el ejemplo que nos ocupa seleccionamos todas las líneas del PORTB, para ello con el ratón seleccionamos RB0 y manteniendo pulsado la tecla de mayúsculas, seleccionamos RB7. Seguidamente pulsamos el botón Add y pasarán los pines seleccionados a la ventana Selected Signal(s), si se quiere eliminar algún canal, solo habrá que seleccionarlo y pulsar el botón de Remove.

Los Controles de esta ventana • Trigger Position: Dispone de tres botones circulares que permiten especificar donde ocurrirá el disparo: al inicio de la captura (Star), en el centro de captura (Center), o al final de la captura (End). • Active PC = :Hay dos métodos de activar la captura de los datos. • Trigger PC = value. El valor introducido en la caja de texto es el valor de disparo.

• Trigger Now: Activando este botón, el valor actual del PC se pone en la caja de texto. • Trigger Clear: Limpia el valor de disparo y los buffer de datos para una nueva captura. Los buffers de datos también se borran si se cierra la ventana del analizador lógico. • Time Base: La base de tiempos se puede seleccionar entre ciclos de

máquina, segundos, milisegundos, microsegundos y nanosegundos. • Mode: Indica el modo de disparo seleccionado, es decir, simple o complejo. En la barra de herramientas se pueden seleccionar las siguientes: • Scroll Axes: Permite deslizarse en el eje vertical del analizador lógico. • Zoom Axes: Realiza un Zoom de zona seleccionada. • Zoom It All Axes: Realiza un ampliación del la zona de la ventan • Zoom Out All Axes: Reduce el tamaño del contenido de la ventana • Zom Boox: Activando esta opción, con ratón se puede marcar un área de la ventan del analizador lógico para ampliarla. • Cursor: Activando el cursor, se puede mover arrastrándole con el ratón o con las teclas de las flechas o con las teclas de avance y retroceso de pagina. • Copy to Clipboard: Copia la imagen al portapapeles. • Save to File: Guarda la pantalla del analizador como una imagen. • Print: imprime la pantalla como un grafico. • Preview: Es una vista previa del documento que se va a imprimir.

Figura 9.- Ventana de diálogo de la selección de canales del analizador lógico.

MICROCONTROLADORES

50-57 Microcontroladores:Maqueta Resistor

17/10/08

11:35

Página 50

CURSO DE MICROCONTROLADORES EL MPLAB (IV)

Francisco Javier Tortosa Martínez Ingeniero de Sistemas Indytel Sistemas S.L. www.microladder.com

Fernando Remiro Domínguez Profesor de Sistemas Electrónicos IES. Juan de la Cierva www.terra.es/personal/fremiro

50

RESISTOR

Foto 1.- Foto de robot “Zapatones”, realizado en el Laboratorio del C.G.S. de Desarrollo de Productos Electrónicos del IES Juan de la Cierva de Madrid.

En esta ocasión nos vamos a centrar en la integración del programa Proteus de Labcenter Electrónica con el MPLAB. Como podemos ver el programa nos permitirá realizar la simulación que veníamos realzando con el MPLAB a la vez que generamos o visualizamos externas al programa del microcontrolador.

50-57 Microcontroladores:Maqueta Resistor

VENTANAS DE DEBUGGER Para depurar los programas el MPLAB dispone de una serie de herramientas que se despliegan dentro de la barra de herramientas de Debugger>Select Tool, tal y como se muestra en la figura 1.

17/10/08

11:36

Página 51

Bus de datos

8 RA4/T0CKI pin

Foosc/4

0 1 PSout 1 Preescaler Programable

T0SE

0

Sincronización con el reloj interno

TMR0 PSout

(Retardo de 2 ciclos) El bit T0IF se pone a 1 si hay overflow

3 T0CS

PS2,PS1,PS0

PSA

Figura 1.- Diagrama de bloques del TMR0

REGISTRO OPTION u OPTION_REG (Dirección 81h,181h) Figura 1.- ventana de Debugger

El debugger por Proteus VSM solo aparecerá si tienes instalado en su ordenador la versión 7.1 de este programa, que se va haciendo cada vez más popular en las universidades, centros de formación profesional e ingenierías, por lo que nos parece interesante recalcar como funciona en su integración con el MPLAB. Para ello vamos a ilustrar con un ejemplo de como se trabajaría con este entorno. Pero antes de nada debemos decir que Proteus es un programa de Labcenter Electronics, cuya web es http://www.labcenter.co.uk/index.cfm ,en España este producto está comercializado por la empresa Ingeniería Eléctrica Electrónica, cuya pagina web es http://www.ieeproteus.com/ .

Ejemplo de aplicación: Se trata de comprobar como funciona el TMR0 del PIC16F877A como contador de eventos externos que le llegan a través de la línea RA4 y para ver el estado del TMR0 presenta el valor de este en el PORTB. Para ello en nuestro programa configuraremos la línea RA4 como entrada y todo el PORTB como salida y en el registro OPTION_REG el bit T0SC=1 para indicar que los impulsos de TMR0 llegarán a través de la línea RA4, T0SE=1 para que se incremente en los flancos de bajada y el PSA=1 para asignar el preescaler al WDT y que por lo tanto el TMR0 se incremente directamente en cada flanco, que lle-

El Registro de OPTION_REG es un registro que puede ser leído o escrito y que contiene varios bits de control para configurar la asignación del preescaler al TMR0 o al WDT, la interrupción externa, el TMR0 y las resistencias de pull-up del PORTB. Nota.- Asignar el preescaler como 1: 1 al registro TMR0, asigna el preescaler al Watchdog. R/W-1 RBPU Bit 7

R/W-1 INTED

R/W-1 T0CS

R/W-1 T0SE

R/W-1 PSA

R/W-1 PS2

R/W-1 PS1

R/W-1 PS0 Bit 0

Bit 7: #RBPU: Resistencia de Pull-up en, el PORTB 1=Resistencia de Pull-up desactivada 0= Resistencia de Pull-up activada bit6 1:INTEDG:, Flanco, de control de interrupciones 1:Interrupción por flanco ascendente en el pin RB0/INT, 0:Interrupción por flanco: descendente en el pin RB0/INT bit 5: T0SC. Selección del tipo de Reloj para TMR0 1 = Los pulsos se introducen a través del, pin RA4/TOCK1 0 = Los Pulsos de reloj internos- Fosc/4 bit 4: T0SE: Tipo de flanco para TMR0 1 = Incremento de TMR0 en cada flanco, descendente por el pin RA4/TOCKI 0 = Incremento de TMR0 en cada flanco ascendente :por el pin RA4/TOCKI bit 3: PSA:, Asignación del Preescaler 1 = El preescaler se le asigna al WDT 0 = El preescaler se le asigna al TMR0 bit 2-0:PS2:PS0: Rango de actuación del preescaler PS2 0 0 0 0 1 1 1 1

PS1 0 0 1 1 0 0 1 1

PS0 0 1 0 1 0 1 0 1

Divisor de TMR0 1:2 1:4 1:8 1:16 1:32 1:64 1:128 1:256

Divisor de WDT 1:1 1:2 1:4 1:8 1:16 1:32 1:64 1:128

51

RESISTOR

MICROCONTROLADORES

50-57 Microcontroladores:Maqueta Resistor

52

RESISTOR

17/10/08

11:36

Página 52

;*********************************************************************************** ;Programa...........:Timer0_02 ;Plataforma Hardware :Monibot PIC16F877A ;Fecha..............:Septiembre 2008 ;Descripción........:Este programa comprueba el funcionamiento del Timer 0 como ;contador de los impulsos aplicados a la línea RA4/T0CKI, donde se ha conectado ;un pulsador. Cada vez que se pulse se incrementa un contador que se visualiza ;los 8 diodos LEDS conectados en las líneas RB0:RB7. ; Como es un incremento por cada impulso aplicado al pin TOCKI no es necesario asignarle ; divisor de frecuencia al TMR0. Por tanto el Prescaler se asigna al Watchdog. ; ; ZONA DE DATOS ********************************************************************** List p=16F877A ;Tipo de procesador include "P16F877A.INC" ;Definiciones de registros internos

CBLOCK

ENDC

0x20

__config _CP_OFF & _DEBUG_OFF & _CPD_OFF & _LVP_OFF & _XT_OSC &_WDT_OFF

; ZONA DE CÓDIGOS ******************************************************************** org 0x00 ;Vector de Reset goto Inicio Inicio

org

bsf movlw movwf bsf clrf movlw movwf bcf clrf

0x05

STATUS,RP0 b'00000110' ADCON1 TRISA,4 TRISB b'00111000' OPTION_REG STATUS,RP0 TMR0

;Selecciona banco 1

;Puerta A E/S digitales ;Configura RA4 como entrada ;Configura el PORTB como Salida ; TMR0 como contador por flanco descendente de ; RA4/T0CKI. Prescaler asignado al Watchdog. ; Inicializa contador.

; La sección "Principal" es de mantenimiento. Solo se dedica a visualizar el Timer 0. Principal movf TMR0,W ; Lee el Timer 0. movwf PORTB goto Principal end

Figura 3.- Circuito de prueba para el programa TMR0_02.asm.

gan a la línea RA4. , para ello configuramos el TMR0 como contador de eventos externos, para que el preescaler sea de 1:1, se asigna el preescaler al WDT .Por lo tanto el programa puede ser el que hemos denominado Timer0_02.asm. Lo primero que vamos a hacer es dibujar el circuito que queremos simular en el programa ISIS (“Intelligent Schematic Input System”) de Proteus, que es programa que realiza la captura de esquemas. En nuestro caso obtendremos un circuito como el que se muestra en la Figura 3. Las características de la señal de reloj que se conecta a la línea RA4 son las que se muestran en la figura 4, l. además para que la simulación no de

17/10/08

11:36

Página 53

Figura 4.- Edición de la señal de reloj que inyectamos por la línea RA4.

Figura 5.- Ventan de edición del microcontrolador PIC16F877A.

Figura 6.-selección del Use Remote Debug Monitor del MPLAB

problemas, el interruptor de conectado a la línea RA4 debe permanecer abierto, como se ve en el circuito. Como se puede apreciar el microcontrolador no hace falta ni conectarle el circuito de reloj, es decir cristal de cuarzo de la frecuencia de oscilación y condensadores o una red R-C, ni conectar la señal de reset a nivel alto para evitar un reset del microcontrolador, no obstante al editar las propiedades del PIC16F877A debemos de indicar la frecuencia a la que deseamos trabaje el microcontrolador y no le vamos a asignar ningún archivo de simulación, ya que luego en la integración con el MPLAB lo tomará. Por lo tanto, la ventan de propiedades del microcontrolador queda como se muestra en la figura 5. Por último en la barra de herramientas seleccionamos Debug y activamos la opción Use Remote Debug Monitor, tal y como se muestra en la figura 6. Por ultimo salvamos el archivo con el nombre “Entrenador Basico PIC16F877A“ y cerramos el programa ISIS de Proteus. Seguidamente abrimos el entorno del MPLAB y creamos un proyecto con el nombre Timer0_02 siguiendo los pasos que hemos indicado a lo largo de los artículos anteriores. Y para comprobar el funcionamiento del mismo, seleccionamos la opción Debugger>Proteus VSM, esto provoca la

Figura 7.- Pantalla del visor del Proteus VSM en el entorno MPLAB.

MICROCONTROLADORES

50-57 Microcontroladores:Maqueta Resistor

53

RESISTOR

MICROCONTROLADORES

50-57 Microcontroladores:Maqueta Resistor

17/10/08

11:36

Página 54

Figura 8.- nueva barra de herramientas después de abrir el esquema de nuestro circuito denominado “Entrenador Basico para PIC16F877A”. Figura 9.- Aspecto de la barra de herramientas durante la simulación del funcionamiento del circuito.

54

RESISTOR

Figura 10.- Visualización de los registros internos del microcontrolador, al mismo tiempo que corre el programa y le llegan señales externas.

apertura de una ventana como la que se muestra en la figura 7. Seguidamente, se abre el diseño que previamente habíamos guardado para probar el funcionamiento de nuestro software. Esto provoca dos cosas, la primera es que se abra el esquema del circuito que habíamos diseñado y la segunda es que aparezca en la barra de herramientas un botón como verde cuya función es la de inicio de simulación (start simulations) y otro en video inverso, tal y como puede verse en la figura 8. Al pulsar sobre el punto verde, la barra de herramientas toma el aspecto que se muestra en la figura 9, donde

ahora en vide inverso aparece el botón que antes era verde y aparece un botón rojo que al activarlo genera la parada de la simulación ( stop simularon). Además aparecen activos los iconos de Rum y Animate. Pues bien, si pulsamos sobre el botón de Rum, podemos observar como al correr el programa sobre el circuito, se modifican el estado de los diodos LEDS conectados al PORTB de acuerdo a un contador de 8 bits binarios a la frecuencia de 1 Hz. Lo que estamos viendo es como reacciona nuestro circuito y nuestro programa cuando le llega una señal externa, sin necesidad de habilitar la opción de Debugger>Estimulus y generar a mano los dis-

tintos o con un fichero el momento de cambio de las señales externas del circuito. Si ahora activamos el botón rojo de Stop Simulation y volvemos al programa Proteus y volvemos a abrir nuestro circuito, podemos modificar este, por ejemplo se sugiere modificar la frecuencia de la señal de reloj a una frecuencia de 100 KHz., salvamos el archivo con el mismo nombre y al volver al MPLAB veremos que el archivo se ha modificado, si ahora abrimos una venta en View>Watch y añadimos los registro WREG, PORTA y PORTB, podemos ir ejecutando el programa en modo animate o en modo paso a paso (step) y anali-

50-57 Microcontroladores:Maqueta Resistor

zar como van variando los distintos registros según corre el programa principal y según van cambiando las señales externas, tal y como se muestra en la figura 10. Ejemplo de aplicación: En el siguiente ejemplo vamos a hacer que el microcontrolador utilice su módulo comparador para generar una señal en forma de diente de sierra escalonada y para visualizarlo podremos utilizar el osciloscopio virtual que incluye Proteus. El programa se configura el registro CVRCON para que la tensión del módulo CVREF se obtenga también por la línea RA2 del microcontrolador y para que el rango del escalón sea CVRRSRC/24, de acuerdo con los parámetros de este registro. En la figura 11 se muestra el diagrama de bloques del módulo generador de tensión de referencia CVREF. Básicamente consta de una red resistiva de 16 etapas. El bit CVREN habilita o no el módulo CVREF desconectándolo de la alimentación. El bit CVRR modifica la red resistiva lo que permite obtener 2 rangos diferentes. Mediante los bits CVR3:CVR0 se controla un multiplexor que permite determinar la tensión de salida (CVREF) según la etapa seleccionada. Cuando se produce un Reset en el dispositivo, el módulo CVREF queda desconectado (CVREN=0). También queda desconectada la salida de la tensión CVREF por la línea RA2 (CVROE=0) y se selecciona el rango alto (CVRR=0). En el modo Sep de bajo consumo, el módulo CVREF sigue activado y el registro CVRCON permanece inalterable.

17/10/08

11:36

Página 55

Registro CVRCON (dirección 0x9D) R/W-0 R/W-0 CVREN CVEOE Bit 7

R/W-0 CVRR

U-0 --

R/W-0 CVR3

R/W-0 CVR2

R/W-0 CVR1

bit 7: CVREN: Activación del módulo CVref 1 = Alimentación para el módulo CVref en ON 0 = Alimentación para el módulo CVref en OFF bit 6: CVROE: Salida de la tensión de referencia CVref 1 = La tensión del módulo CVREF se obtiene también por el pin RA2/AN2/VREF0 = La tensión del módulo CVREF se se desconecta del pin RA2/AN2/VREFbit 5: CVRR: Selección de rango 1 = Rango bajo de 0 a 0,75CVRSRC con pasos de CVRSRC/24 0 = Rango alto de 0 a 0,75CVRSRC con pasos de CVRSRC/32 bit 4: No implementado bit 3-0:CVR3:CVR0: Selección de la tensión CVREF de salida 0VR2:VR015 Si CVRR=1 CVREF = ((CR)/24)*CVRSRC Si CVRR=0 CVREF =  * (CVRSRC) +(VR3:VR0/32)*(CVRSRC) La tensión de referencia del módulo es la Vdd y Vss general del sistema. La tensión de salida se puede ajustar en dos rangos de 16 etapas cada uno. El rango se selecciona mediante el bit CVRR y las etapas mediante un valor de 4 bits (entre 0 y 15) que se aplican a los bits CVR3:CVR0. La ecuación para calcular la tensión de salida CVREF es la siguiente: • Si CVRR=1 (rango bajo)  CVREF = ((CR)/24)*CVRSRC • Si CVRR=0 (rango alto)  CVREF =  * (CVRSRC) +(VR3:VR0/32)*(CVRSRC) Si la tensión fuente de referencia CVREF = 5V, en rango de baja resolución es de 0.20833V por cada etapa o paso (1/24)*5. La tensión de salida está comprendida entre 0 y unos 3.124V. En el rango de alta resolución es de 0.150 por cada etapa o paso. La tensión CVREF de salida está comprendida ahora entre 1,25V y 3.59V.

V DD

16

Es tados

CVR EN 8R

R

R

R

R

8R

RA2/ AN 2/ VR EF- /C VR EF

C VR OE Entr ada C om par ador C VR EF

R/W-0 CVR0 Bit 0

Mu ltipl exor Anal ogi co 16:1

Figura 11.-Diagrama de bloques del módulo generado de CVREF

C VR 3 C VR 2 C VR 1 C VR 0

C VR R

55

RESISTOR

MICROCONTROLADORES

50-57 Microcontroladores:Maqueta Resistor

56

RESISTOR

17/10/08

11:36

Página 56

;*********************************************************************************************** ;Programa: Diente_Sierra_02.asm ;Plataforma Hardware :Monibot PIC16F877A ;Fecha..............:Octubre 2008 ;Descripción:Utilizando el módulo generador CVREF, obtenemos una tensión analógica en diente de sierra ;de 16 escalones.La tensión de salida se obtiene por la patilla RA2/CVREF ;*********************************************************************************************** List p=16F877A ;Tipo de procesador ;Incluir definiciones de los registros internos include "P16F877A.INC" CBLOCK Valor ENDC

0X20

;Valor para el D/A de salida

__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC & _WRT_OFF & _LVP_OFF & _DEBUG_OFF & _CPD_OFF Inicio

Bucle

org

bsf movlw movwf bcf

0x00

STATUS,RP0 b'00001000' OPTION_REG STATUS,RP0

;Configuta el TMR0 como temporizador y preescaler 1:1

movlw b'00001111' andwf Valor,W ;Lee el valor para salida iorlw b'11100000' ;CVREF en ON, CVREF --> RA2,rango bajo, bsf STATUS,RP0 movwf CVRCON ;Tensión fuente (CVRSRC)=Vdd-Vss, Valor --> CVR3:CVR0 bcf STATUS,RP0 incf Valor,F ;Siguiente valor o etapa de la rampa del diente de sierra call Retardo_200micros ;Retardo_1ms goto Bucle ;********************************************************************************** ;Subrrutina de temporización de 200uS utilizando el TMR0 Retardo_200micros bcf INTCON,INTF ;Flag de desbordamoento de TMR0 = 0 movlw .66 ;Valor experimental que hay que cargar en TMR0 movwf TMR0 ;para que la subrruina dure 200 uS Espera btfss INTCON,T0IF ;Se ha desbordado el TMR0? goto Espera ;si no se ha desbordado espera return ;Si se ha desbordado retorno subrruitna end

;Fin del programa fuente

Figura 12.- Circuito para comprobar el funcionamiento del programa diente_sierra_02.asm

50-57 Microcontroladores:Maqueta Resistor

Si se desea reducir el consumo en el modo Sep será necesario desconectar el módulo CVREF poniendo a “0” el bit CVREN, lo que desconecta a la red resistiva. Este módulo generador de tensión de referencia CVREF puede trabajar de forma totalmente independiente del módulo amparador. Esa tensión de referencia se puede obtener por la patilla RA2/ CVREF siempre que se active el bit CVROE. Es este caso la línea RA2 se puede considerar como señal de salida de un convertidor D/A de 4 bits (16 etapas). Por lo tanto el programa será el que hemos denominado Diente_Sierra_ 02.asm. El circuito que capturaremos en Proteus es el que se muestra en la figura 12. Si seguimos los pasos indicados en el ejemplo anterior, al simular el funcionamiento del programa, aparecerá una pantalla de osciloscopio como la que se muestra en la figura 13, en la que se puede ver perfectamente el funcionamiento del programa.

17/10/08

11:36

Página 57

Figura 13.- Señal obtenida en el osciloscopio virtual de Protesus