domingo, 15 de febrero de 2015

TELECOMUNICACIONES

MPLAB-IDE v6.60

Índice de contenidos


DISPOSITIVOS LÓGICOS MICROPROGRAMABLESMPLAB-IDE v6.6011.2

Introducción

    MPLAB-IDE es una Plataforma de Desarrollo Integrada bajo Windows, con múltiples prestaciones, que permite escribir el programa para los PIC en lenguaje ensamblador (assembler) o en C (el compilador C se compra aparte), crear proyectos, ensamblar o compilar , simular el programa y finalmente programar el componente, si se cuenta con el programador adecuado.
    MPLAB incorpora todas las utilidades necesarias para la realización de cualquier proyecto y, para los que no dispongan de un emulador, el programa permite editar el archivo fuente en lenguaje ensamblador de nuestro proyecto, además de ensamblarlo y simularlo en pantalla, pudiendo ejecutarlo posteriormente en modo paso a paso y ver como evolucionarían de forma real tanto sus registros internos, la memoria RAM y/o EEPROM de usuario como la memoria de programa, según se fueran ejecutando las instrucciones. Además el entorno que se utiliza es el mismo que si se estuviera utilizando un emulador.
    Nos vamos a centrar en la versión 6.60 (MPLAB 6.60 en zip.). Las nuevas que van saliendo cada poco tiempo y que incorporan nuevos tipos de microcontroladores, se pueden obtener de forma gratuita en la página web www.microchip.com, en la cual se encuentra una amplia información sobre todos los dispositivos que fabrica Microchip.
    Partes de MPLAB-IDE:
  • EDITOR: Editor incorporado que permite escribir y editar programas u otros archivos de texto.
  • PROJECT MANAGER: Organiza los distintos archivos relacionados con un programa en un proyecto. Permite crear un proyecto, editar y simular un programa. Además crea archivos objetos y permite bajar archivos hacia emuladores (MPLAB-ICE) o simuladores de hardware (SIMICE).
  • SIMULADOR: Simulador de eventos discretos que permite simular programas con ilimitados breakpoint, examinar/modificar registros, observar variables, tiempos y simular estímulos externos.
  • ENSAMBLADOR: Genera varios tipos de archivos objetos y relacionados, para programadores Microchip y universales.
  • LINKER: Permite unir varios archivos objetos en uno solo, generados por el ensamblador o compiladores C como MPAB-C18 o compiladores de terceros.
  • PROGRAMADOR:Mplab-IDE puede trabajar con varios tipos de programadores. El usuario debe seleccionar con cual trabajará, haciendo click en opciónProgrammer/ Select programmer, se pueden seleccionar 4 programadores distintos:
    • PICSTART Plus
    • MPLAB ICD 2
    • MPLAB PM 3
    • PRO MATE II

MPLAB - IDE: Creando un Proyecto

    La creación de un proyecto comienza con la escritura del programa. Para ello escoja la opción File/New y el editor de MPLAB-IDE presentará una página en blanco. Se sugiere que ponga nombre al archivo fuente desde el princio. Para ello, ello escoja la opción File/Save As, póngale nombre al programa, E001.ASM, en el directorio \PRG\EJEMPLOS\E001\.

DISPOSITIVOS LÓGICOS MICROPROGRAMABLESMPLAB-IDE v6.6011.3

El editor

    Aspecto del programa con el Editor en primer plano:
    Comencemos a escribir en lenguaje ensamblador nuestro primer programa (E001.ASM). El programa realiza la suma en binario de dos números (7+8 =15) y para escribirlo usamos el editor de textos. La extensión "ASM" es la que deben llevar todos los programas escritos en ensamblador. Deberemos de tener en cuenta que la primera columna del editor debemos reservarla para las etiquetas que son expresiones alfanuméricas escogidas por el usuario que definen valores de posiciones de memoria. Estas deben empezar siempre por una letra. Además se debe de tener en cuenta que no pueden usarse expresiones que ya utiliza el ensamblador tales como:
  • Instrucciones
  • Directivas del propio ensamblador
  • Nombres de registros especiales (SFR)
  • Nombre de cada uno de los bit de los registros especiales.
    En las siguientes columnas, se puede comenzar a escribir el nemónico de la instrucción o las directivas del ensamblador. Hay que decir que se pueden y se deben añadir comentarios que son elementos indispensables en muchos casos para seguir el razonamiento de los programas sin perderse, para ello cuando MPLAB encuentra un ";" (punto y coma) no se genera código máquina del texto que venga a continuación hasta la siguiente línea. Los espacios en blanco no son significativos y las líneas en blanco tampoco. Para una mejor legibilidad del programa, se recomienda acceder a cada campo utilizando el tabulador.

DISPOSITIVOS LÓGICOS MICROPROGRAMABLESMPLAB-IDE v6.6011.4
    El uso de mayúsculas y minúsculas en los programas obedece a una serie de reglas o normas de estilo, comunes entre los programadores en ensamblador, que si bien no son obligatorias, facilitan la lectura del código fuente. Estas reglas son:
  • Las directivas del ensamblador se escriben en mayúsculas.
  • Los nombres de las variables se escriben en mayúsculas y minúsculas, por ejemplo Variable A podría ser VARA o VAR_A o VarA.
  • Los nemónicos de las instrucciones se escriben en minúsculas.
  • El programa se escribe utilizando los tabuladores para definir las distintas columnas, tales como etiquetas, comienzo de líneas de programa y columna donde empiezan los comentarios separados por un ";" (punto y coma).
    Cuando terminemos de escribir el programa, si no lo hicimos antes, seleccionamos File/Save donde le damos el nombre a nuestro programa E001.ASM, dentro del directorio de proyecto.
    Una vez escrito el programa, es necesario crear un proyecto para poder compilar, simular, depurar y, en su caso, programar.
    Para crear un proyecto, escoja la opción Proyect/Proyect Wizard y siga las instrucciones que vayan apareciendo:
  • Escoja el microcontrolador (PIC16F84A)
  • Escoja el conjunto de lenguaje Microchip MPASM Tolsuit.



  •     Nota: si aparece  y pulsa  aparecerá un mensaje de error. Para solucionarlo seleccionar en Toolsuite Contents y seguidamente pulse sobre  para seleccionar C:\Archivos de programa\MPLAB IDE\MCHIP_Tools\mplib.exe

  • Póngale nombre al proyecto. Use el mismo nombre del archivo fuente (se sugiere).
  • Escoja el directorio donde trabajará. Se debe utilizar una ruta corta, por ejemplo D:\PIC\PRG, de lo contrario el ensamblador puede dar problemas (no utilizar el escritorio o mis documentos, que corresponden a rutas largas).
  • Selecione el archivo fuente y pulse el botón Add.

DISPOSITIVOS LÓGICOS MICROPROGRAMABLESMPLAB-IDE v6.6011.5


  • Finalizar. Se habrá creado el proyecto P001.mcp
    Una vez creado el proyecto, se habilitarán algunos iconos:
Crea nuevo proyecto
Abre proyecto
Guarda proyecto
Opciones
Buscar archivos de proyecto
Compila (make)
Compila (built all)
    Una vez creado el proyecto, haga click en el ícono Built All . Con esto compilará el programa y se crerarán archivos de error, mapa del programa, archivos objetos y archivos hex.
    Si no se han cometido errores al introducir los códigos, En la ventana Output, solapa Build aparecerá un mensaje parecido a este:
Clean: Deleting intermediary and output files.
Clean: Done.
Executing: "C:\Archivos de programa\MPLAB IDE\MCHIP_Tools\mpasmwin.exe" /q /p16F84A "E001.ASM" /l"E001.lst" /e"E001.err"
Loaded D:\PIC\PRG\E001.COD
BUILD SUCCEEDED: Fri Dec 03 20:03:30 2004

DISPOSITIVOS LÓGICOS MICROPROGRAMABLESMPLAB-IDE v6.6011.6
    Esto nos indica que el programa se ha ensamblado con éxito y ya estamos en condiciones de iniciar la simulación del programa. Si por el contrario, se han detectado errores, en dicho mensaje será mostrado el error; si se hace doble clic sobre la línea que muestra el error, el cursor saltará directamente a la línea de código donde se encuentra el error. Una vez subsanados los errores habrá que volver a compilar el programa.

Menú View

    Seguidamente analizaremos las distintas posibilidades que ofrece el menú view:
    Project: Esta ventana presenta la lista de archivos que actualmente hay en un proyecto. Si el proyecto se ha ensamblado o compilado la ventana de proyecto muestra una lista de todos los archivos incluidos en el proyecto. Un doble clic en cualquier archivo resaltado en la ventana, abrirá dicho archivo para su revisión.
    Output: Muestra la ventana Output, que ofrece información de salida del programa, como por ejemplo cuando se compila aqui va apareciendo la información sobre la compilación, indicando si hay errores.
    Toolbars: Permite seleccionar que barras de herramientas apareceran en MPLAB.
    Disassembly Listing: En esta ventana se puede ver el código máquina paralelamente al código en ensamblador. Resulta muy util para seguir paso a paso la ejecución del programa.
    Hardware Stack: El contenido de la pila puede verse y modificarse con el ratón o el teclado al seleccionar esta opción. Si la pila se desborda, MPLAB indica su rebosamiento con el mensaje underflow. Para modificar un nivel de la pila basta con hacer click con el puntero del ratón sobre el o utilizar el teclado con los cursores.
    Program Memory: Al seleccionar esta opción aparece la siguiente ventana en la que se puede apreciar las posiciones de memoria que ocupa cada una de las instrucciones, el código de operación de cada instrucción y la posición de memoria que se le ha dado a cada etiqueta. Puede utilizarse para seguir paso a paso la ejecución del programa y además de modificar un registro mediante el ratón y el teclado pueden modificarse varios a la vez si se pone el puntero del ratón sobre el primer registro que se quiere modificar y seguidamente se pulsa el botón derecho del ratón y se activa la opción Fill Registers.

DISPOSITIVOS LÓGICOS MICROPROGRAMABLESMPLAB-IDE v6.6011.7
    Si pulsamos en cada uno de los tres botones de la parte inferir de esta ventana podemos seleccionar tres formas de ver la memoria de programa:
  • Opcode Hex: representa la memoria de programa con los datos en hexadecimal. Esta opción es muy útil al usar el programador del dispositivo y comprobar si se grabaron bien los datos.
  • Machine: esta opción presenta el código máquina ensamblado con la información de las etiquetas y direcciones de memoria que tienen asignadas.
  • Symbolic: despliega el código hexadecimal desensamblado con los símbolos (etiquetas) utilizados en el programa.
    File Registers: La lista de registros del microcontrolador, que son de memoria SRAM, se pueden ver seleccionando esta opción. Esta ventana al desplegarse presenta una lista con la memoria de datos del dispositivo emulado. El listado de registros puede verse de dos maneras, segun se active Hex o Symbolic.
    En la siguiente figura se muestran algunos registros de la memoria del banco 0. Observese que también se muestra la posición que etiquetamos comoRESULTADO:
    Se puede modificar el contenido de uno o varios registro en esta ventana.

DISPOSITIVOS LÓGICOS MICROPROGRAMABLESMPLAB-IDE v6.6011.8
    EEPROM: Si el dispositivo emulado tiene EEPROM o memoria Flash como es el caso del PIC16F84, el contenido de la memoria puede verse seleccionando esta opción. La memoria de EEPROM puede modificarse a través de esta ventana.
    Watch : MPLAB permite supervisar los contenidos de los registros a través de esta ventana. Para agregar los registros a visualizar, se puede hacer directamente escribiendolos con el teclado o mediante los botones Add SFR o Add Symbol y las ventanas desplegables correspondientes. En la figura se muestra como se ha introducido el valor de RESULTADO para supervisarlo, después de emular el programa aparece el valor 0FH, esto es 15, que es igual a 7+8:
    Special Function Registers: El contenido de los registros de funciones especiales (FSR) pueden verse y modificarse seleccionando esta opción.

Archivos de proyecto

    Ya sabemos que el programa que hemos realizado tiene la extensión "ASM" y que la extensión del proyecto es "MCP". Cuando creamos el proyecto, en el directorio que elegimos se crearon los siguientes archivos:
  • E001.ASM Archivo del programa en ensamblador.
  • E001.COD
  • E001.ERR
  • E001.HEX
  • E001.LST
  • E001.MCP Archivo de proyecto.
  • E001.MCS
  • E001.MCW Archivo de espacio de trabajo.
    El archivo de espacio de trabajo es muy intyeresante porque permite dejar las ventanas y el programa en el estado actual, cerrar el programa y mas tarde, seguir trabajando recuperando el estado del programa tal y como lo dejamos. Para trabajar con el Workspace debemos ir al menú file.

Simulación

    Para comenzar la simulación debemos elegir la herramienta que vamos a utilizar. En nuestro caso, MPLAB SIM. Para hacerlo debemos seleccionar en la barra de menús Debugger/Select tools/MPLAB SIM:

SISTEMAS DE TELECOMUNICACIÓN E INFORMÁTICOS
ARQUITECTURA DE EQUIPOS Y SISTEMAS INFORMÁTICOS
MPLAB-IDE v6.6011.9
    Aparecerá una nueva barra de herramientas:
Run
Halt
Animate
Step Into
Step Over
Step Out
Reset
  • Run (F9): Al activarse esta opción el programa se ejecuta a toda velocidad en "modo tiempo real", aunque no hay que olvidar que se trata de una simulación por ordenador. La ejecución comienza en la dirección actual del contador de programa (PC), que se muestra en la barra de estado y en la ventana Program Memory. Mientras el programa está en ejecución Step y Run están deshabilitados y se detiene si se activa Halt o si se encuentra un breakpoint (Ver Nota mas adelante).
  • Animate: Esta opción es similar a la anterior pero en este caso el programa se simula de forma automática desde la dirección que indique el PC en el instante en que se active. Equivale a pulsar contínuamente Step Into. Se detiene con Halt.
  • Halt (F5): Detiene la ejecución del programa, el contador de programa se detiene y se actualiza la información.
  • Step Into (F7): Esta acción ejecuta la instrucción cuya dirección de memoria coincida con el valor al que apunta el PC antes de activarla. Si algún registro se modifica se resalta en color rojo. Como puede apreciarse cuando se utiliza esta acción, podemos comprobar paso a paso como se ejecuta el programa, y de esta forma, ver si hay fallos y ver donde está el error para depurarlo. También es especialmente interesante cuando se comienza a estudiar el ensamblador y queremos comprobar el repertorio de instrucciones del mismo. En definitiva, ejecuta la instrucción actual y se detiene, actualizándose la información. Si se realiza un Step Into sobre una instrucción SLEEP, como en la realidad, el dispositivo pasa a modo sleep, siendo necesario despertarlo para continuar, por ejemplo mediante un reset.
  • Step Over (F8): Ejecuta la instrucción actual y se detiene, actualizándose la información. Aparentemente funciona como Step Into pero si la instrucción a ejecutar es CALL, ejecuta la subrutina llamada y se detiene en la instrucción siguiente a la llamada. Muy util para ejecutar subrutinas ya comprobadas y seguir con la depuración del programa.
  • Step Out: Si la localización actual está dentro de una subrutina, la termina y retorna al programa principal.
  • Reset: Esta opción inicializa el sistema. El Contador de Prograna (PC), que es la dirección de memoria donde se encuentra la primera instrucción que ejecuta el microcontrolador cuando se realiza un reset en el sistema, se pone a 0. A esta dirección de memoria se le denomina vector de reset.
    Nota:
    Un breakpoint es una marca en un punto del programa de manera que en modo Run, cuando se llege a ese punto el programa se detenga. Muy util para establecer en que zona o zonas nos interesa ir paso a paso.
    Para tranbajar con breakpoints y realizar otras acciones interesantes, como colocar el contador de programa en la localización actual (Set PC at Cursor), pulsamos el botón derecho del ratón sobre el programa en ensamblador.

DISPOSITIVOS LÓGICOS MICROPROGRAMABLESMPLAB-IDE v6.6011.10
    Para realizar la simulación podemos colocar las ventanas tal y como aparece en la figura, pulsar sobre  (Step Into) y observar como se ejecuta el programa paso a paso y se modifican los registros:
    Tal y como están dispuestas las ventanas puede observarse todo lo necesario para la simulación. La flecha amarilla en la ventana donde está el ASM indica que instrucción es la que puede ejecutarse.
    Si se modificase el archivo ASM mientras se simula, aparecerá un ventana con el mensaje The project is out of date e indicando si se quiere rehacer de nuevo el proyecti. Debe contestarse que si y comenzará de nuevo la simulación con los cambios establecidos. Es importante decir que aunque se conteste que no, el cambio se guardará en el ASM.
    Con la venntana Special Function Registers se pueden observar los cambios en los registros específicos, e incluso modificarlos seleccionandolos con el ratón con un doble click y utilizándo el teclado. El menú contextual (pulsar botón derecho sobre la ventana) permite nuevas posibilidades, que por ejemplo permite con Fill Registers modificar varios registros de una vez.
    Con la ventana File Registers, se ven todos los registros, si bien resultan de especial interés los registros de proposito general, que por supuesto pueden modificarse a voluntad.
    Tanbién resulta de interés el menú Debugger/Clear Memory.

DISPOSITIVOS LÓGICOS MICROPROGRAMABLESMPLAB-IDE v6.6011.11
    En MPLAB, si bien en principio todos los registros pueden modificarse a voluntad, resulta que no se pueden modificar directamente los bits de PORTA y PORTB cuando están configurados como entradas (véase simulando PRACTICA.ASM). Si se pueden modificar los bits de PORTA y PORTB si están configurados como salidas.
Para conseguir "botones" que permitan accionar las patillas de entrada del PIC se utiliza el MPLAB Stimulus Controller, que aparece con el menúDebugger/Stimulus Controller:
    Para crear cada fila pulsar Add Row, seleccionar TypeEnablePin y Action y terminar con Edit Complete.
    En la primera fila de la figura, al pulsar Fire cambia RA0 de estado, se hace 0 si era 1 y viceversa (Toggle), el cambio no se hace efectivo hasta que se pulsaStep Into. No funciona bien con Animate si bien se puede intentar aumentar en Debugger/Setting, en la solapa Debuger Animation el tiempo de paso en la anumación. No se ven los cambios si se utiliza Run hasta que la información no se actualiza con Halt, si bien aquí resultaría casi imprescindible utilizar Breakpoint.
Ademas del tipo Action Toggle, que cambia de estado una entrada, tenemos High que aplica un 1, Low que aplica un cero y Pulse que proporciona un pulso de corta duración. En PRACTICA.ASM, tal y como se ha resuelto la entrada de datos en el programa, no sirve la utilización de Pulse y se puede utilizar Toggle o bien dos filas para cada entrada, una con High y otra con Low.
    En la ultima fila de la figura se ve como se utiliza el Type Synch (síncrono), que hace que automáticamente cambie RB3 de forma sincronizada con el reloj, estando 10 ciclos a estado alto y luego 10 ciclos a estado bajo.
    Las filas de entradas realizadas pueden guardarse y recuperarse (Pin Stimulus FileLoad y Save)

DISPOSITIVOS LÓGICOS MICROPROGRAMABLESMPLAB-IDE v6.6011.12

Operaciones habituales con MPLAB

    Conforme utilice MPLAB le surgirán dudas que puede resolver con la ayuda que proporciona el programa (en inglés) y que le permitirán ir adentrándose en el uso del programa según sus necesidades.
    A continuación se presenta una lista de tareas habituales con los menús y opciones de MPLAB exclusivamente a modo de sugerencia:

  • File/New. Para crear un archivo en ASM.
  • File/Open. Para abrir un archivo en ASM.
  • Project/Project Wizard. Para crear rápidamente un proyecto.
  • Project/Open ó File/Open Workspace. Para abrir proyectos existentes.
  • View/Project. Para mostrar ASM
  • Project/Build all. Para crear/actualizar archivos, incluido HEX.
  • Debugger/Select Tool/MPLAB SIM. Para seleccionar el simulador.
  • Para la simulación:
    • Cerramos la ventana Output
    • Aparecerá una flecha en la primera instrucción del ASM
    • View/File Registers. Para ver la memoria RAM completa.
    • View/Special Function Registers. Para ver sólo los registros especiales.
    • Debugger/Stimulus Controller. Para poder cambiar las entradas.
    • Minimizamos/cerramos ventanas innecesarias (mcw) y con Window/Tile organizamos las ventanas
    • Utilizamos los iconos de simulación, como Step Into y comenzamos la simulación.
    • También es conveniente utilizar el menu contextual en el ASM (pulsando botón derecho del ratón) para realizar acciones como por ejemplo Set PC at Cursor que coloca el PC en la instrucción donde se encuentre el cursor.

No hay comentarios:

Publicar un comentario