martes, 17 de enero de 2012

MPLAB

MPLAB es un editor IDE gratuito, destinado a productos de la marca Microchip. Este editor es modular, permite seleccionar los distintos microcontroladores soportados, además de permitir la grabación de estos circuitos integrados directamente al programador.
Es un programa que corre bajo Windows y como tal, presenta las clásicas barras de programa, de menú, de herramientas de estado, etc. El ambiente MPLAB® posee editor de texto, compilador y simulación (no en tiempo real). Para comenzar un programa desde cero para luego grabarlo al μC en MPLAB® v7.XX los pasos a seguir son:
  1. Crear un nuevo archivo con extensión .ASM y nombre cualquiera
  2. Crear un Proyecto nuevo eligiendo un nombre y ubicación
  3. Agregar el archivo .ASM como un SOURCE FILE
  4. Elegir el microcontrolador a utilizar desde SELECT DEVICE del menú CONFIGURE
Una vez realizado esto, se está en condiciones de empezar a escribir el programa respetando las directivas necesarias y la sintaxis para luego compilarlo y grabarlo en el PIC.

Directivas

Las directivas son palabras reservadas para indicarle al MPLAB® que funciones debe configurar cuando compile nuestro programa. Las indispensables para la correcta compilación del programa son:
Directiva
Descripción
Sintaxis
CBLOCK
Defina un Bloque de Constantes
cblock [<expr>]
#DEFINE
Defina una Etiqueta de Substitución de Texto
define <name> [<value>]
define <name> [<arg>,...,<arg>] <value>
DT
Defina Tabla
[<label>] dt <expr>[,<expr>,...,<expr>]
[<label>] dt “<text_string>”[,”<text_string>”,...]
ELSE
Empieza el bloque alternativo de un IF
Else
END
Fin de bloque de programa
End
ENDIF
Fin del bloque de condiciones ensambladas
Endif
ENDM
Fin de la definición de una Macro
Endm
ENDW
Fin de un bucle de While
Endw
EQU
Define una constante para el ensamblador
<label> equ <expr>
IF
Empieza un bloque de código condicional
if <expr>
#INCLUDE
Incluye Ficheros fuentes adiccionales
include <<include_file>> |“<include_file>”
LIST
Opciones listado
list [<list_option>,...,<list_option>]
MACRO
Declara la Definición del Macro
<label> macro [<arg>,...,<arg>]
ORG
Pone el Origen del Programa
<label> org <expr>
WHILE
Realiza el bucle Mientras la Condición es Verdadera
while <expr>


Barra de Herramientas y Menús:



MPLAB pone a tu disposición 4 barras de herramientas personalizables según la tarea que estés realizando, pues no voy a describirlas, ya que puedes acceder a cada una de las opciones desde cualquiera de los menús, los cuales si describiré, pero veamos cuales son esas barras.


La primera es la barra USER, que por defecto es la única que utilizo, bueno tu elegirás la que mas te agrade. La segunda es la barra EDIT, todo lo relacionado a la Edición de texto. La tercera es la barra DEBUG, con todo lo necesario para simular nuestro programa, depurarlo, etc. Finalmente la barra PROJECT, todo lo referido al proyecto que estás realizando.

Por cierto, puedes cambiar de barra de herramientas simplemente presionando repetidas veces el primer botón, si colocas el cursor del mouse sobre este icono verás en la parte inferior de la ventana la función que cumple, en este caso... "Swap Toolbar" en entendible "Cambiar barra de herramientas", pues es como una ayuda emergente coloca el cursor sobre otros botones y sabrás para que se utilizan.

Menú File:

NEW: Crea un nuevo archivo con extensión .asm
OPEN: Abre un archivo que puede ser .asm/.obj/.c/.err/.h/.lkr/.map/.hex/.lst
VIEW: Abre un archivo en modo solo lectura.

SAVE (Guardar), SAVE AS (guardar como), SAVE ALL (guardar todo), CLOSE (cerrar un proyecto), CLOSE ALL (cerrar todos los proyectos abiertos).

Respecto a IMPORT y EXPORT, no los utilizaremos por ahora.

PRINT (Imprime), y PRINT SETUP te permite configurar el modo de impresión, EXIT cierra MPLAB, y finalmente los 5 últimos archivos utilizados.

Menú Project:

Como MPLAB te permite trabajar con varios archivos y todos los elementos y herramientas a la vez, es bueno crear un proyecto y tener en él todo lo necesario para realizar tu tarea, como ser; codificar, ensamblar, simular, etc. Pronto veremos como crear un proyecto o comienza ahora si lo deseas, y deja esto para otro momento...

NEW PROJECT: Abre un cuadro de diálogo para crear un nuevo proyecto y en él todo lo que necesites para tenerlo más a tu alcance.
OPEN PROJECT: Abrir un proyecto
CLOSE PROJECT: Cerrar un proyecto
SAVE PROYECT: Guardar Proyecto
EDIT PROJECT: similar a New Project, pero referido a un proyecto ya abierto, al que se le puede agregar nodos, librerías y la forma en que desarrollarás el proyecto en cuestión.
MAKE PROJECT: Según los que de todo saben, dicen que ensamblará todo, pero teniendo en cuenta la fecha de creación del archivo .HEX, la cual compara con el archivo .asm del que ensambló. Si éste tiene una fecha mas reciente que el archivo .HEX asociado, debido digamos a una actualización del código, entonces ensamblará nuevamente el proyecto. En caso de que la fecha sea anterior al archivo .HEX generado (es decir, archivo .ASM mas viejo que el .HEX) este no hará nada (extraído textualmente de no recuerdo donde, pero igual, yo jamás lo utilicé)
BUILD ALL: Le importa nada la fecha y ensambla todo. (este si, y de tiempo completo...!!!)
BUIL NODE: Ensamblar un nodo que hayamos asociado al proyecto.
INSTALL LANGUAGE TOOL: Es para configurar el lenguaje a utilizar, que en nuestro caso es el ASM de Microchip.

Menú Edit:

UNDO: Deshacer, y en ese orden Cortar, Copiar y Pegar
SELECT ALL: seleccionar todo
SELECT WORD: selecciona la palabra sobre la que esta el cursor.
DELETE LINE: borra la línea sobre la que esta el cursor.
DELETE EOL: borra desde donde esta el cursor hasta el final de la línea.
GOTO LINE: Abre un cuadro de diálogo para saltar a una determinada línea (Line to go to), te indica además la cantidad total de líneas (Last Line) y la línea en que tienes el cursor (Current Line), es algo así como el "Ir a" de Word.
FIND: es para buscar algún texto dentro de nuestro código, tiene algunas opciones, pruébalas...
REPLACE es para reemplazar un texto o una pequeña frace.
REPEAT FIND: es para repetir la búsqueda si es que hay otra palabra o frace igual.
REPEAT REPLACE es para repetir el reemplazo.
MATCH BRACE Vaya Dios a saber para que es, yo nunca lo utilicé, ...si alguien lo sabe, me cuenta...?.
TEMPLATE: Pues como todos los templates, para crear unos archivos personalizados o plantillas, y así no estas reescribiendo todo un código nuevamente.
TEXT: También tiene sus opciones; Transpose intercambia los caracteres que están a ambos lados del cursor; Upper case cambiar a mayúsculas; Lower case cambiar a minúsculas; Indent mantiene la tabulación de la línea anterior; Un-Indent lo opuesto.

Menú Debug:

De lo más importante, desde aquí haremos las simulaciones de nuestro programa, los tres primeros submenús son los de mayor interés, veamos de que se trata cada uno de ellos...

RUN: Aquí tenemos varias opciones, a por ellas.
  • RUN: Como su nombre lo indica, Runnnnnn... inicia la simulación a una velocidad que la verdad, no se distingue nada de lo que ocurre a lo largo del código, verás la parte inferior de la ventana toda pintada de amarillo (señal de que la simulación está en proceso). Útil cuando colocas algunos puntos de ruptura (breakpoints) para detener la ejecución y así no estar esperando que se ejecute todo aquello que sabes que esta correcto.
  • RESET: Nada, Resetea el micro y te ubica en la primer línea donde comenzará la simulación (en ese caso verás toda la línea pintada de negro y las letras blancas) "listo para comenzar la simulación"
  • HALT: Detiene la ejecución.
  • HALT TRACE: Detiene un traceo que se este haciendo (yo aun no lo utilicé).
  • ANIMATE: es igual que RUN pero lo hace más lento, para que vayas siguiendo la ejecución, mostrándote línea por línea todo lo que se está ejecutando, es el que más utilizo yo.
  • STEP: paso, es decir, un paso por cada vez que lo presionas (en la barra de herramientas verás dos huellas de zapato, pues es eso, paso a paso). Simplemente ejecuta una a una cada línea de código por cada vez que lo presionas.
  • STEP OVER: Igual que el anterior pero con un pequeño detalle, cada vez que se encuentre con un call lo ejecuta de modo tan rápido que ni tu te enteras de que ya pasó, es decir, utilízalo si no quieres perder tiempo con el call.
  • UPDATE ALL REGISTER: Actualiza el valor de todos los registros.
  • CHANGE PROGRAM COUNTER: Carga el Programa Counter Strike para jugar un rato, jajajajaja, es broma. La verdad es que cambia el valor del PC y te ubica en la etiqueta del código a la que quieres ir.
EXECUTE: Bueno, execute tiene dos opciones, veamos...
  • EXECUTE AN OPCODE: te permite ejecutar un código cualquiera desde cualquier sitio en el que te encuentras, por ejemplo ingresas un goto inicio y hacia allí irá. independiente a la secuencia del programa.
  • CONDITIONAL BREAK: Para ejecutar un breakpoint en forma condicional, Por ejemplo por que cambió el valor de un registro, o por que quieres ver que paso hasta ese punto, o bueno, en fin. (por si las moscas, para quien no tenga idea de que es un Breakpoint, es un punto de ruptura en el código del programa, es decir, si se está ejecutando..., cuando se encuentre con el breakpoint se detendrá y allí se quedará hasta que le des la orden de continuar), habré sido claro...???
SIMULATOR STIMULUS: Con este nos vamos a lucir, desde aquí podrás simular que le envías señales al micro por uno de sus pines, este submenú tiene 4 opciones...
  • ASYNCHRONOUS STIMULUS: te abrirá un pequeño diálogo con 12 botones como el que se muestra en la imagen, vendrían a ser como interruptores, nota que al primero le asigné el pin RA0 (pin 17) y entre paréntesis una T (de TOGGLE)



    Si presionas con el botón derecho del mouse en uno de esos botones verás las opciones de configuración de estos estímulos, desde donde los puedes configurar, es algo así...



    • ASSIGN PIN: muestra los pines del puerto para que selecciones aquel que llevará un estímulo.
    • PULSE: un pulso, hasta ahora no hice uso de él...
    • LOW: Le asigna un nivel bajo permanente
    • HIGH: Lo contrario, nivel alto permanente
    • TOGGLE: Cada vez que lo pulses cambiará de nivel de alto a bajo o de bajo a alto.
    • HELP: tampoco lo utilicé así que no preguntes...!!!
  • PIN STIMULUS: Es para cuando creas un archivo de texto con extensión .sti, desde aquí lo cargas o lo quitas, se trata de utilizar un archivo que creaste con esta extensión y que contiene los estímulos ya asignados para cada uno de los pines.
  • CLOCK STIMULUS: Desde aquí puedes enviarle pulsos de reloj a un determinado pin, indicando el tiempo que se mantendrá en nivel alto y el tiempo en nivel bajo, tipo (timer).



    Tiene un par de opciones como ser; Guardarlo como un archivo .sti, Abrir alguno si es que ya lo tienes creado, Aplicar los cambios, agregarle mas impulsos a otros pines, y el help (por supuesto, la ayuda).
  • REGISTER STIMULUS: Es exactamente lo mismo que con los pines, solo que lleva la extensión .reg y sirve para que en una determinada posición del programa se cargue un registro con el valor que tu le quieras dar.
CENTER DEBUG LOCATION: te ubica en la posición en la cual el programa se está ejecutando, por si perdiste la línea de ejecución, se suele utilizar cuando detienes la ejecución, empiezas a husmear por otro lado y luego no sabes donde andabas, pues bueno, ahí te lo acercas...

BREAK SETTINGS, Te muestra un diálogo para que le des nombre a los breakpoints y luego desde aquí los habilitas, los quitas, los guardas etc.

TRIGGER IN/OUT SETTINGS: Son para los emuladores MPLABICE y PICMASTER, aquellos que dijimos no tener...

TRIGGER OUTPUT POINTS: Para cuando consigas PICMASTER.

CLEAR ALL POINT limpia todos los breakpoints y los tracepoints que pusiste a lo largo del programa.

COMPLEX TRIGGER SETTING y ENABLE CODE COVERAGE Para cuando consigas MPLAB-ICE, jeje...!!!

CLEAR PROGRAM MEMORY: Borra la memoria de programa, yo nunca lo utilicé, pero según leí por ahí... Cuando simulamos un programa, lo que la máquina en realidad hace, es seguir a través de la memoria de programa. Luego desde allí mismo, puedes grabar el PIC, si es que cuentas con el programador PICSTART PLUS, así es que ahí lo dejé...

SYSTEM RESET: Eso mismo, Resetea el sistema.

POWER ON RESET: Para el caso en que se podría producir un reset en el micro, y así saber que ocurre o que es lo que hace el micro si esto llegara a ocurrir.


Menú Options:

DEVELOPMENT MODE: ya hablamos de él en la introducción a este turorial, simplemente es donde hacemos las configuraciones del proyecto.

WINDOW SETUP: como estamos en la sección de personalización, puedes personalizar totalmente la forma en que vas a trabajar, tus preferencias, luego Guardarlas (Save Setup), Cargarlas (Load Setup) si es que ya las tienes guardadas, o utilizar una por defecto (Default Configuration).

CURRENT EDITOR MODES: Es para que personalices el modo de edición, por ejemplo las tabulaciones de 8 espacios, que se mantenga la indentación de la línea anterior, que se muestre el número de líneas al margen del código, hacer un backup cada cierto tiempo (por si olvidas que de vez en cuando es bueno guardaaaaar...), etc. aquí tienes una imagen de esas opciones.


RESET EDITOR MODES: Elimina los cambios que hiciste anteriormente
ENVIRONMENT SETUP:  verás un inmenso cuadro de diálogo para una personalización completa.
PROGRAMMER OPTIONS: Son las opciones para configurar el programador que usarás con MPLAB, pero como no lo utilizaremos para cargar el pic ya que no disponemos de esas herramientas.

Menú Tools:

Personalmente, nunca lo utilicé y no tengo la más pálida idea de para que sirve, como dije anteriormente, si alguien lo sabe, me lo cuenta y luego lo incluimos aquí, si es que fuera necesario por supuesto.

Menú Window:

El más importante de todos, ya que desde aquí nos veremos cara a cara con cada uno de los bits de los registros del micro, el estado que tienen y como se modifican, claro que lo verás cuando lo ejecutes en modo "step" (paso a paso) .

PROGRAM MEMORY: Verás la memoria de programa, y así sabes cuanto espacio te queda disponible, no te preocupes que un ejemplo lo aclarará todo.

Unos cuantos que no mencionaré, y pasemos a lo que mas me interesa

STACK: La pila, recuerdas aquello de la pila de platos, en nuestro primer tutorial, bueno aquí la tienes en vivo, recuerda que son de 8 posiciones y la ultima en ingresar es la primera en salir, aquí la imagen de uno que estoy simulando en este momento.


FILE REGISTER: Para que veas como se modifican los registros mientras el programa se está ejecutando, solo en modo "Step" o "Animate".


SPECIAL FUNCTION REGISTER: Los Registros de funciones especiales, que más dá, con nombre y todo, trisa/b, porta/b, status, w, creo que lo que mas quieres es ver como se modifican los bits de entrada y salida de los puertos, pues aquí los tienes, como antes, sólo los verás cuando lo ejecutas en modo "Step" o "Animate".

SHOW SIMBOL LIST: todos los símbolos utilizados y su respectiva ubicación (dirección de registro), aquello que definimos al iniciar nuestro código, como "status equ 0x03". Del otro lado las etiquetas utilizadas a lo largo del programa, en fin.


STOPWATCH: Para que veas el tiempo en milisegundo consumidos por el micro que cuenta con un XT de 4 MHz.


PROJECT: Los datos del proyecto que estas realizando.

WATCH WINDOW: Para crear tu propia ventana de registros, Cuando encaremos un proyecto que la requiera hablaremos de ella.

MODIFY: Para modificar los valores de algún registro determinado, en caso de que no quieras esperar demasiado por ejemplo cuando haces un retardo.

Cómo crear un proyecto con MPLAB:

Bueno, Lo que voy a describir en este apartado es aplicable en general para cualquier proyecto que quieras realizar, por lo que cada uno de los procedimientos serán siempre los mismos.



Lo primero es abrir MPLAB, si es que no lo tienes abierto ya...!!!

Selecciona el menú File-->New y verás un diálogo como el siguiente...

Que según mi inglés dice algo así... "No existe ningún proyecto abierto, desea crear uno?", y como en eso andamos, seleccionas "YES", nota que también se abrió una página en blanco "Untitled1", bueno, en ella es que introduciremos nuestro código.

Luego de darle a Yes, verás una nueva ventana "New Project" en la que nos pide el nombre del proyecto y el directorio en que lo vamos a guardar, de nombre le puse "cqpic.pjt" (.pjt es la extención de project) y lo guardaré en una carpeta que tengo por ahí llamada proyect justamente.


Pues bien, seleccionas OK y comenzaremos a crear nuestro proyecto desde la ventana Edit Project (Edición de Proyecto).

Aquí es donde comenzamos a ajustar todos los detalles para nuestro proyecto, y si estuviste siguiendo el tutorial desde un principio, te habrás dado cuenta que hay algunas cosas que ya nos son familiares, como... "Development Mode" al cual accedimos alguna vez desde el menú "Options" y nos muestra el micro para el que estamos trabajando, "Language Tool Suite" el lenguage utilizado por Microchip.

Un detalle a tener en cuenta es que MPLAB ya le asignó la extensión .hex al proyecto que estamos creando, el cual por defecto lleva el mismo nombre, de hecho la finalidad es esa, crear un archivo con extensión .hex para luego grabarla en la memoria del pic.

Si seleccionamos cqpic[.hex] en Projects Files (parte inferior de la ventana), podrás ver que se nos habilita el botón Node Properties. como se ve en la imagen anterior, haces un click en él, y verás la ventana desde la cual configuraremos la forma en que MPLAB debe generar el archivo .hex, te debería quedar algo así:

Como verás aquí también hay algunas cositas ya conocidas, como INHX8M (nuestro código objeto con extensión .hex), el fichero de errores (.err), el archivo list (.lst), Default Radix que vendría a ser el formato de los números que vamos a utilizar (hexadecimal), etc., bien, ahora presionamos OK y volvemos a la ventana anterior, seleccionas Add Node y verás el siguiente diálogo.

Desde aquí vamos a ligar al proyecto nuestro archivo .asm, que es el que codificaremos, y que todavía no hemos creado, de todos modos sabemos que se llamarácqpic.asm otra cosa que debes tener en cuenta es que deberás guardarlo en el mismo directorio en que creaste el proyecto, luego presionas Aceptar y regresarás al cuadro Edit Project pero de la mano de nuestro cqpic[.asm] observa.


Listo, ya está, ahora presionas OK y regresas al IDE de MPLAB en el cual tienes esa página en blanco para ingresar el código, el tema es que aún sigue siendoUntitled1.

Anteriormente solo creamos un proyecto llamado cqpic.pjt, luego le ligamos un nodo con cqpic.asm (el cual aún no existe) e incluso le dijimos donde lo guardaremos, y nos pusimos de acuerdo con MPLAB la forma en que queremos crear el archivo .hex, pues bueno lo que estamos haciendo ahora, es crear cqpic.asm, así es que te diriges a File-->Save As y lo guardas como cqpic.asm.


Antes de continuar con el tutorial nos vamos a tomar un descanso para aclarar un par de cosas, primero necesito un proyecto para que pongas en práctica todo lo que te ofrece MPLAB, así es que hablemos un poco de eso, el proyecto.



No hay comentarios:

Publicar un comentario

Clima