jueves, agosto 19, 2010

Práctica 2: Presentación de las herramientas de trabajo.

En esta sesión, revisamos la tarea de la práctica 1 en la que vimos un panorama del microcontrolador PIC16F877. Se explicaron las diferencias entre la serie base y la serie A (PIC16F877A), se enlistaron los periféricos incluidos en el dispositivo, y se explicaron las utilidades de estos periféricos, no el modo de empleo.
Se trabajó el software MPLAB mostrando los pasos de configuración para trabajar, los errores que suelen haber al programar, y la ubicación de las herramientas de trabajo.
Finalmente, se presentó un ejemplo de ejecución de simulación en el software Proteus ISIS.

La familia de microcontroladores PIC16F87X tiene una versión aumentada, la serie "A" (PIC16F877A). El análisis de todas las diferencias entre cada versión se pueden encontrar en el documento PIC16F87X to PIC16F87XA Migration el cual se puede descargar en este link.
Básicamente, la diferencia radica en la adición de un módulo de comparación analógica, y mejoras en el tiempo de vida de las memorias FLASH y EEPROM.
Puesto que se pretende mantener compatibilidad con las versiones base de la familia, el módulo de comparación está multiplexado a los pines existentes, para así no afectar a aplicaciones diseñadas sobre la versión base.

El software MPLAB es un IDE (Entorno de Desarrollo Integrado) para microcontroladores de Microchip ©. Entre sus características principales se encuentra la posibilidad de depurar línea por línea el código que estemos editando, capacidad de simulación de los tiempos de ejecución, y la supervisión de todos los registros de programa.
Posee además opciones de depuración en circuito y en simulación avanzadas, además de la capacidad de trabajar con proyectos de uno o más archivos fuente, lo que facilita el desarrollo de soluciones tecnológicas más complejas.

Es de suma importancia que al utilizar MPLAB-IDE se realice una configuración adecuada de las herramientas para reducir el número de errores de compilación únicamente a los relacionados a la programación. El método de configuración de MPLAB para trabajar es el siguiente:
Fig. 1: Selección del dispositivo.
  1. Configurar el dispositivo con el que se va a trabajar.
    Aquí tenemos que seleccionar el modelo de microcontrolador que utilizaremos, así el programa podrá compilar orientado al dispositivo del que disponemos. Para acceder a el menú de selección del dispositivo, utilizamos el menú Configure>Select Device y ahí seleccionamos de la lista el microcontrolador con el que estemos trabajando.

  2. Establecer los bits de configuración.



    Los bits de configuración son las configuraciones generales de funcionamiento del microcontrolador al momento de ejecutar el programa. entre las configuraciones posibles se encuentra el modo de reloj de programa (Cristal cuarzo "XT", Circuito "RC", Alta velocidad "HS" y bajo consumo de energía "LP" ), las protecciones de loop (Watchdog timer), de establecimiento de energía (Power-up Timer), de decaimiento de alimentación (Brown Out Detect) etc. Estos bits de configuración no se almacenan en un registro con acceso desde la tabla de registros de función especial (FSR), se establecen al grabar el microcontrolador, y se pueden determinar por un cuadro de dialogo en el entorno de desarrollo integrado, o directamente colocando su valor numérico (binario, exadecimal, etc.) en el encabezado del código. La manera más sencilla es seleccionar los bits es con el cuadro de dialogo:
    Fig. 2: Selección de los bits de configuración.
  3. Fig. 3: Crear nuevo programa
  4. Crear nuevo programa.
    Damos click en el botón de la barra de herramientas para abrir un nuevo código. Nos mostrará el editor en blanco.

    Será cuestión de las preferencias individuales de cada programador si queremos ver los números de línea, o si queremos conservar un formato tabulado. para eso está la opción del menú "Edit>Properties

  5. Editar el código ensamblador.
    Una vez configurado el sistema y el editor, procedemos a escribir el código. En sesiones posteriores profundizaremos más sobre el formato del código, y las precauciones necesarias. Por ahora, pasamos a la compilación.

  6. Compilar el código



    Una vez escrito el código vamos a compilarlo (build) para así obtener el código máquina que grabaremos sobre el microcontrolador. Seleccionamos el comando del menú Project>Quickbuild. El menú mostrará el nombre del archivo fuente a compilar. Es recomendable haber guardado el programa antes de ejecutar la compilación para evitar sorpresas.
    Si se escribió de manera correcta, la ventana Output mostrará el mensaje Build Succeeded, o los mensajes de error correspondientes. Si se desea acceder a la línea de código donde se encuentra el error, se puede dar doble click en la línea de error en la ventana Output y se enviará a la línea correspondiente.

    Fig. 4: Quickbuild
    Fig. 5: "BUILD SUCCEEDED"
  7. Selección de la herramienta de depuración
    Para seleccionar la herramienta de depuración, se accede al menú Debugger > Select Tool. Ahí se encuentran opciones de depuración en circuito o de simulación. Para empezar utilizaremos la depuración con simulación: MPLAB SIM.

  8. Configuración de MPLAB SIM.
    Todas las configuraciones del MPLAB SIM se hacen en el menú Debugger > Settings. Lo primero que hay que configurar en el depurador es la frecuencia de trabajo del sistema. Es muy importante que se configure con la misma frecuencia de trabajo que tiene el reloj de nuestro sistema, pues con esa frecuencia el simulador nos podrá mostrar el tiempo de ejecución de instrucciones. El resto de configuraciones del Simulator Settings no son tan importantes por ahora.

  9. Herramientas de depuración.
    Una vez seleccionado el modo de depuración (MPLAB SIM) hay que escoger qué herramientas vamos a utilizar para visualizar los datos del programa. Básicamente se necesitarán mínimo 2 herramientas, el Stopwatch y el Watch.




    La herramienta Stopwatch se utiliza para contar el tiempo de ejecución del programa. Muestra tanto el tiempo total de simulación como el tiempo transcurrido desde un momento especificado. Es en esta herramienta donde la selección de la frecuencia del Oscilador es importante, pues si se hubiera puesto una frecuencia diferente, el stopwatch hubiera calculado tiempo diferente (toma la frecuencia y calcula el tiempo con el número de ciclos de instrucción.)

    La herramienta Watch se utiliza para observar el estado de los registros de programa y las variables del programa. tiene dos columnas de selección: Add SFR (Agregar Registro de Función Especial) y Add Symbol (Agregar Símbolo, variable).
    Así podemos seleccionar los registros y variables importantes para nuestro programa e ir visualizando su estado en Hexadecimal, Binario, Decimal según activemos las columnas de visualización (click derecho sobre la barra de nombres (Update, Address,Symbol Name, Value etc...) y seleccionar los formatos deseados.
    Fig. 6: Herramientas Stopwatch y Watch

  10. Depuración paso a paso.



    Una vez que se han configurado las herramientas y el simulador, volvemos a compilar y observaremos que ahora aparece un cursor en la línea de inicio del programa.
    Fig. 7: Cursor al inicio del programa
    En la barra de herramientas de MPLAB aparecen activados los botones de depuración: Run, Halt, Animate, Step Into, Step Over, Step Out, Reset y Breakpoint.
    Fig. 8: Botones de depuración
    Cada uno de ellos tiene una función específica:

    • Run: Ejecuta el programa desde la línea de actual hasta el siguiente Breakpoint o al final.
    • Halt: Detiene la ejecución en modo Run o Animate.
    • Animate: Ejecuta el programa línea a línea a un ritmo lento permitiendo observar el resultado paso a paso.
    • Step Into: Ejecuta una línea de código
    • Step Over. Ejecuta una línea de código. Si esta línea inicia una subrutina, se ejecuta en modo Run hasta salir de la subrutina (ejecutar toda la subrutina)
    • Step Out: Cuando se encuentra el programa en una subrutina, este comando ejecuta el modo Run hasta salir de la subrutina
    • Reset: Ejecuta una operación de Reset (Reinicio) como la activada por un MCLR (Master Clear Reset).
    • Breakpoint: Inserta un Breakpoint en la línea de código activa. Un breakpoint es un punto de alto a la ejecución. Sirve como punto de "stop" al ejecutar en modo Run, Animate, Step Out y Step Over.
    Con estos comandos se puede ir comprobando el código línea por línea o rutina por rutina. Es muy útil utilizar los Breakpoints para comprobar el programa solo en los puntos estratégicos, como las líneas de comprobación del estado de una variable.
    Con cada ejecución de estos comandos, se actualizan las herramientas Watch y Stopwatch.
  11. Corrección del código
    En el caso que la depuración hubiese revelado un error de programación, hay que buscarlo y corregirlo, recompilar y volver a depurar. Cuando el código no muestre errores de compilación y la depuración muestre el comportamiento deseado, podremos transferir el código máquina (extensión .HEX) ya sea al dispositivo físico (sistema mínimo) o a un simulador del sistema electrónico, como Proteus Isis.
Simulación en Proteus Isis.

El software Proteus Isis está diseñado para simular circuitos eléctricos y electrónicos. Cuando simulemos en Proteus tenemos la ventaja de poder simular los periféricos externos al microcontrolador, como voltajes analógicos, entradas por botones de pulso, entradas de teclados matriciales, salidas por leds o por pantallas de cristal líquido (LCD) etc.

  1. Creación del circuito eléctrico
    Primero se debe tener un circuito eléctrico completo del sistema a simular. El ejemplo más sencillo es el sistema mínimo del microcontrolador, el cual solo requiere de una alimentación de voltaje a 5V, un cristal de cuarzo a 4Mhz con sus capacitores de 0.1uF, y visualizadores de estado lógico de las entradas/salidas.



    Fig. 9: Sistema en Proteus Isis

  2. Configuración del microcontrolador.
    Una vez hecho el circuito electrónico, dar click derecho el PIC y seleccionar la opción Edit Properties. Ahí la opción Program File permite seleccionar el archivo de programa .HEX. Hacemos click en la carpetita y vamos a la carpeta donde estaba el código de MPLAB. Ahí debe aparecernos un archivo .HEX con el nombre del código ensamblador editado en MPLAB.

    Al igual que en MPLAB, hay que configurar la frecuencia del reloj a 4 MHz. (Processor Clock Frequency)



    Fig. 10: Editor de Propiedades
  3. Ejecución de la simulación



    Ahora ya que está hecho el sistema electrónico, y que se ha configurado el PIC, se puede correr la simulación en tiempo real o por pasos. Para esto se utilizan los comandos de la esquina inferior izquierda: Play, Step, Pause, Stop.






Es así cómo utilizamos las herramientas de depuración y simulación de MPLAB IDE y Proteus ISIS.

No hay comentarios: