manual rápido del mplab

79
Manual Rápido del MPLAB Hoy: Jueves, 21 de Octubre del 2010__________________ Incluir en favoritos si quiere volver a visitarnos. Introducción. En los proyectos que se describen en estas páginas utilizaremos el software de uso libre como es el MPLAB , si por alguna razón el lector quiere usar la versión que he manejado en estos artículos puede bajarse la versión 5 (¡ojo! pesa 11MBytes y si su conexión no es rápida puede tardar algo de tiempo) El motivo es que hemos de entender y aprender a utilizarlo para ensamblar nuestros proyectos, hacerlo fácil y esto es lo que vamos a describir aquí. Si no se dispone de esta herramienta recomendamos se obtenga es gratis, para poder seguir nuestros pasos. En programación como ya se ha dicho en estas páginas, existen unas directivas generales que se utilizan de forma repetida y por ese motivo se ha descrito una plantilla del programador que encontrará en estás páginas, como herramienta menor de ayuda. El entorno de trabajo MPLAB vers5, necesita de una configuración de las instrucciones para 'que vaya como la seda', ya hemos documentado este apartado en otras ocasiones y lo vamos a repetir aquí. Para empezar, se debe documentar todo nuestro trabajo, esto significa que los comentarios aclaratorios necesarios son: Nombre del Autor, Archivo, Fecha y Descripción de qué hace el programa y para este fin el MPLAB dice que detrás de "; " todo se considera comentario y no se tendrá en cuenta al compilar el listado.

Upload: punkyjair

Post on 23-Nov-2015

49 views

Category:

Documents


1 download

TRANSCRIPT

Manual Rpido del MPLAB

Hoy: Jueves, 21 de Octubre del 2010__________________ Incluir en favoritos si quiere volver a visitarnos. Introduccin.En los proyectos que se describen en estas pginas utilizaremos el software de uso libre como es el MPLAB, si por alguna razn el lector quiere usar la versin que he manejado en estos artculos puede bajarse la versin 5 (ojo! pesa 11MBytes y si su conexin no es rpida puede tardar algo de tiempo) El motivo es que hemos de entender y aprender a utilizarlo para ensamblar nuestros proyectos, hacerlo fcil y esto es lo que vamos a describir aqu.Si no se dispone de esta herramienta recomendamos se obtenga es gratis, para poder seguir nuestros pasos. En programacin como ya se ha dicho en estas pginas, existen unas directivas generales que se utilizan de forma repetida y por ese motivo se ha descrito una plantilla del programador que encontrar en ests pginas, como herramienta menor de ayuda.El entorno de trabajo MPLAB vers5, necesita de una configuracin de las instrucciones para 'que vaya como la seda', ya hemos documentado este apartado en otras ocasiones y lo vamos a repetir aqu. Para empezar, se debe documentar todo nuestro trabajo, esto significa que los comentarios aclaratorios necesarios son: Nombre del Autor, Archivo, Fecha y Descripcin de qu hace el programa y para este fin el MPLAB dice que detrs de "; " todo se considera comentario y no se tendr en cuenta al compilar el listado. Podemos hacer una primera incursin en el MPLAB para tener una visin general de cmo proceder a compilar un listado que tengamos en formato .asm, despus entraremos en detalles ms extensos. Estos son los pasos: 1. Ejecutar el programa MPLAB. Hay disponibles cuatro mens de iconos, como muestra la figura de abajo. Elegir el segundo men para empezar un proyecto y el primero, para ejecutar distintas acciones de anlisis. 2. Men File-New, mostrar un cuadro de dialogo que dice: 'A project is not currently opened' o sea, que no hay un proyecto disponible, 'desea crear uno', pulsamos sobre la opcin Yes para empezar. Si ya lo hemos usado con un proyecto y al salir lo guardamos, ahora nos propondr si queremos abrirlo, pulsamos sobre la opcin Yes para continuar con el proyecto. 3. Mostrar una ventana 'New Project' en la celda correspondiente daremos un nombre a nuestro proyecto y se puede elegir el directorio en el que guardarlo y pulsamos OK. 4. Empezaremos a crear nuestro proyecto en la ventana 'Edit Proyect' como se ve en la imagen de abajo a la izquierda. 5. En esta ventana hay cinco celdas en las que debemos introducir datos: En la primera, 'Target Proyect' aparecer el nombre de nuestro proyecto. 'Include Path', 'Library Path' y 'Linker ...', se dejan como estn. En 'Development Mode' nos aseguramos que el sistema de desarrollo es el correcto 'MPLAB SIM PIC16F84' y en la cleda de abajo en 'Language Tool Suite', se encuentra Microchip. Ahora viene la parte ms compleja si se quiere, en el men 'Project' la opcin 'Edit Project' o CRTL+F3, abre un cuadro de dialogo, en la parte de abajo en 'Project Files' aparecer el nombre del archivo que vamos a producir con la extensin [.hex], al seleccionarlo, a su derecha se activar el botn 'Node Properties...', lo pulsamos, aparecer una nueva ventan con cuatro zonas diferenciadas, como se aprecia en la imagen de abajo, en la parte de arriba aparece la celda 'Node' con el nombre del proyecto y la extensin hex, a su derecha la celda ' Language Tool' que normalmente no se toca.En la zona central, se encuentra una cuadricula 'Options' con seis columnas y distintas descripciones, observar que algunas no estn activas, en definitiva y para acortar, deben estar activadas, en 'On' las siguientes: 'Hex Format', 'Error File', 'List File', 'Case Sensitivity' y 'Default radix' y activada en 'Off' la de 'Cross-reference File'. Ya se describirn ms adelante estos criterios, ver esto en la imagen que sigue.

Debajo, en la zona 'Command Line', se muestran las ordenes que se han generado en segn lo asignado en el apartado anterior. En la ltima zona 'Additional Command Line Options' estar en blanco. Y para cerrar pulsamos OK.6. Se mostrar la ventana en blanco, de ttulo Untitle1, donde se debe escribir nuestro programa (cdigo fuente). Sin embargo como ya se ha dicho, en muchas ocasiones ya lo dispondremos de nuestro editor ms habitual, podemos traer el cdigo fuente hasta la carpeta donde tenemos el proyecto con la extensin .prj . Entonces con el 'Edit Project' pulsamos el botn 'Add Mode...' y nos abrir una ventana para seleccionar la carpeta en la que localizamos la que contiene el archivo con la extensin .asm que ya tenemos guardado y luego pulsamos 'Aceptar'. Ahora el archivo 'puntoasm' se muestra debajo del anterior y para cerrar pulsamos 'OK'. 7. Digamos que, ya est en el simulador MPLAB el listado, por fin podremos compilar el programa. 8. Es el momento de acceder al 'Men-Project' y 'Make Project' o simplemente pulsamos la tecla F10. Esto abrir una nueva ventana como la de la derecha, en la que se mostrar una barra de progreso de color verde e inmediatamente debajo, unos indicadores con los Errores, Warnings, Menssages, etc. si es que los hay, aunque no siempre hay errores. Normalmente si hay errores, presentar una ventana como la mostrada debajo que, nos indicar todos los errores producidos y su localizacin el nmero de lnea en la que se encuentra cada uno. Para corregir los errores, haremos doble clic en uno de ellos, el puntero se desplaza hasta la lnea del listado de cdigo que contiene el error, para que as lo modifiquemos. Revisamos las instrucciones que hayamos puesto, para corregir los fallos.

Una vez rectificados los errores, volveremos al paso 7 y procederemos a la nueva compilacin del programa, verificaremos que no se hayan producido errores o los rectificaremos hasta lograr la depuracin del programa. Recuerde que nadie es perfecto y aprenda de sus errores.El caso ms comn es que despus de ciertas correcciones no presente errores, quizs una atencin (warning) y obtendremos el listado en hexadecimal que se ha creado en la misma carpeta donde est el proyecto, ste es el que tenemos que usar con el 'quemador'de chips descrito en otro artculo de la serie, para comprobar si nuestro proyecto refleja nuestros deseos, en caso de no ser as, debemos realizar los cambios necesarios en el programa y volver a empezar el proceso de compilar de nuevo hasta lograr nuestro propsito y luego a por otro proyecto.Como estimular al MPLABEsta bien, cuando hemos terminado de ensamblar un listado .asm y antes de quemar el chip con el cdigo generado por este, es conveniente en muchas ocasiones, proceder a simular la ejecucin del archivo hexadecimal generado para mayor seguridad y para esto el MPLAB incorpora una herramienta que nos permite realizar dicha simulacin. Hasta aqu, todo es normal, en el caso especial de necesitar estimular una lnea, es decir, como por ejemplo, simular que se ha presionado un pulsador en un momento de la simulacin, aqu es donde se necesita dominar esta herramienta. En men Window, disponemos de las ventanas que ms nos servirn para seguir con detalle la evolucin de la simulacin, tambin estn los iconos propios en las barras de men que se menciona al principio de este artculo. Destaca la ventana del stack o pila, aqu se vern en accin la pila con sus 8 niveles y que el ltimo en ingresar es el primero en salir, para eso tiene que estar la simulacin en activo. La ventana que mayor importancia le doy, en la de 'Special Function Register', o registros de funcin especial de la izquierda, en esta se aprecia la evolucin de los distintos registros con sus valores cambiantes segn el valor resultante de la ejecucin de cada instruccin. Todo esto es posible examinarse mediante la ejecucin del programa en el modo, paso a paso (step to step) o animado (animate). Es conveniente que el interesado haga su propia simulacin en ambos modos y compruebe lo que ocurre en cada momento. Otra ventana es la de 'Program Memory' a la derecha que, nos muestra la evolucin del programa instruccin a instruccin, obsrvese las columnas que empiezan por 0000, corresponde a la localizacin en memoria y a su derecha con 4 dgitos, corresponde al cdigo de la instruccin de esa lnea, las siguientes columnas se refieren a la etiqueta, a la instruccin propiamente y a sus valores. En Modify, podemos modificar el valor de un registro en un momento dado, para no tener que esperar tanto tiempo de ejecucin como ocurre con un retardo. Sigamos con la simulacin. En el men Debug/Simulator Stimulus.../Asincronus Stimulus tenemos la ventana donde se pueden configurar las seales que deben influir en la simulacin como son, pulsadores, seales de reloj, etc. Al abrir esta ventana, muestra 12 botones que, en principio indican Stim 1(P), Stim 2(P), etc. Con el botn derecho del ratn sobre uno de ellos, mostrar una ventana para seleccionar distintas opciones. En nuestra simulacin se trata de sendos pulsadores en el puerto de entrada, por ej. RA2, RA3 y RA4. En el mencionado men emergente, se selecciona Assign pin... RA0, ahora es RA0 (P), nuevamente haremos click con el botn derecho sobre el mismo botn pero esta vez seleccionamos Toggle aqu significa pulsador, con RA3 y RA4 se procede del mismo modo. Una vez configurados estos botones, debemos iniciar el generador de tiempos que, como un generador de reloj, se encarga de enviar los pulsos a los terminales de puerto, indicados por los botones de estimulo anteriores, en la secuencia prevista.

Ahora, en Debug/Simulator Stimulus.../Clock Stimulus, en la celda Stimulus pin, elegimos RA2. En la secuencia de reloj High y Low anotamos 4 que, es la marca espacio de la seal o sea, el ancho del pulso H y L. Si fuera necesario, aadir los dems botones de tiempos pulsando Add.. y para aplicar todo esto, pulsamos sobre Apply. Por fin estn configurados los estmulos. Antes de empezar la simulacin, se debe hacer un Reset de la simulacin, imagen de la derecha. Al pulsar el Reset, la simulacin se inicializa y los valores de los registros empiezan a moverse segn se ejecutan las instrucciones. En este momento debemos disponer cinco ventanas en pantalla; la de proyecto, para seguir el programa; la de registros, para ver la evolucin de los mismos; la de memoria que, permite ver los valores de memoria en uso y la de tiempos y estmulos, ver posicin en la figura para su mejor apreciacin. LA SIMULACIN.Es el momento de iniciar la simulacin, en men Debug/Run/Step se inicia el simulador en modo paso a paso, este modo nos permite apreciar el trasvase de informacin entre los registros que intervienen al ejecutar una instruccin, una vez iniciado y dependiendo del programa a simular, podemos optar por la opcin de ejecucin animada mediante Debug/Run/Animate o usarCtrl+F9, que empezar desde el punto en el que se encuentre en ese momento hasta el final del programa. Si hubiera algn error, se produce una parada que muestra una ventan emergente indicando el motivo, para poder corregir el error. El proceso de simulacin podemos pararlo con una pulsacin en el icono semforo rojo, para seguir slo pulsamos Ctrl+F9 y seguimos la tarea, debe seguirse el proceso para entender lo que ocurre con nuestro programa. En alguna ocasin el programa nos pide que se presione un pulsador o requiere una seal de entrada por una lnea de un puerto, esto puede parecer un problema de, como interactuar con el programa. Supongamos que el programa trata de un temporizador que, se pone en marcha cuando se aprieta el pulsador A que est en RA1, iniciando el retardo de 1 minuto, al termino del mismo se activa un LED indicando que ha transcurrido el minuto. En ese caso al simular el programa, se ejecutar hasta la instruccin del lazo de espera a que se presione el pulsador y no avanzar hasta que le llegue esa seal. Parainteractuar, usamos una herramienta que genera ese pulso en RA1 y podremos seguir. Estamos en el lazo. Entonces abrimos la ventana Asincronus Stimulus y le ponemos RA1 en el primer botn y la opcin Toggle, a continuacin en la venta Clock Stimulus, ponemos lo que se indica en su apartado anterior que lo describe muy bien. Con esto, ya podemos seguir la simulacin, las seales necesarias se producirn en el momento adecuado y se apreciar su efecto. Sin embargo, justo en nuestro programa se produce un retardo que para la simulacin puede ser tedioso su seguimiento, no hay problema, est todo previsto en el MPLAB, en el men Debug/Execute/Execute An Opcode..., elegimos la opcin return y pulsamos Execute, en ese mismo momento habremos salido del lazo de retardo que nos retena y seguir la simulacin si no hay otra condicionante. OTRO MTODO.Cuando haga la simulacin de un retardo, como ya se ha comentado o ha de emplear largo tiempo en decrementar un registro, es interesante conocer esta posibilidad de Modificar que nos brinda el MPLAB. Por ej. Estamos simulando un programa que crea una seal cuadrada a la salida RB0, para ello utiliza el TMR0 y la interrupcin por desbordamiento del mismo, asignando el prescaler con un factor de divisin de 1/2. De esta forma las interrupciones saltarn a intervalos fijos de tiempo. Invirtiendo el estado de RB0 durante las interrupciones se conseguir una onda cuadrada perfecta. Cuando estemos ejecutando el cdigo y lleguemos a la rutina 'hacer nada', nos detenemos y debemos acceder a File Registers Window , en el men Window/File Registers, se ver el cuadro Ventana Registros. Si nos fijamos en el cdigo, el registro PCL est aumentando con cada instruccin, cuando llega a la rutina 'hacer nada', el valor es 08 como muestra la imagen, al detenernos el registro mantiene el valor, ahora vamos a modificar el valor de este registro, para reducir el tiempo de espera. Con el botn derecho del ratn, hacemos un click justo sobre 08 y luego en File Register(s) como se aprecia en la imagen de la derecha y nos muestra un cuadro de dilogo Modify (ver debajo). 1) En l seleccionar en Address, el registro que vamos a modificar, en este caso 01 2) en Data/Opcode el nuevo valor para ese registro en este caso ff (este valor hace que llegue al mximo de la cuenta), tal como se ve en esta imagen. Y3) Luego le damos a Write (escribir) y se habr modificado el valor del registro 0x01, para seguir la simulacin. Ahora si, le damos a F7 para ver que el registro adquiere el nuevo valor, con la siguiente F7, el registro se desborda y hace que el programa avance en su ejecucin saliendo del lazo y saltando a la subrutina de servicio de interrupcin (RSI) BCF INTCON,2 en la simulacin, esto quiere decir que todo va correctamente y nos ahorramos una larga espera. Que podemos decir de una temporizacin de 50 segundos, lo que hacemos all es verificar que los respectivos registros (19h,1Ah, 1Bh, 1Ch y 1Dh) se decrementan con cada iteracin del programa, de modo que, nuevamente nos encontramos ante un prolongado tiempo de espera para verificar una rutina que ha entrado en un lazo de retardo y ya conocemos su funcionamiento. Con este ejemplo puede darse por aclarado el uso de algunas de las opciones que nos ofrece esta herramienta que es el MPLAB. DESENSAMBLADOR.En alguna ocasin cuando por motivos extraos, se pierde un listado en asambler (.asm) y solo dispones del listado en hexadecimal. La mejor forma de proceder para disponer del listado es usar un desensamblador, personalmente recomiendo el que viene integrado en el MPLAB.El procedimiento es el siguiente: En el men File, ir a Import y elegir el archivo en hexadecimal (.HEX) En el men View, ir a Program Memory; dispone de tres opciones: OPCODE HEX, MACHINE y SYMBOLIC. Sobre la pantalla, botn derecho pulsar 'Output to file' para terminar. "Vaya a FILE, IMPORT y elija el archivo .HEX que desee desensamblar. Luego vaya a VIEW, PROGRAM MEMORY y fjese que abajo tiene 3 opciones. OPCODE HEX, MACHINE , SYMBOLIC. Luego botn derecho sobre la pantalla '... Output to file' y listo ya puede tener un .asm del archivo elegido. Eso s, luego ser trabajo suyo determinar que es variable y que no lo es, etc."Ms adelante y si tengo tiempo abordar este tema con ms profundidad en el que hablare de cmo influir en el MPLAB para simular la accin de un pulsador o un interruptor, por ejemplo, aunque entiendo que ya hay artculos en la red que lo describen muy bien y desde aqu lo hago constar.Este prrafo lo redact en 2005, en estos momentos ya se ha modificado para mejor.

.: IntroduccinBienvenido a esta seccin, como ves... aqu estamos nuevamente, y esta vez decididos a liarnos un poquito ms, y como lo prometido es deuda, volv para presentarles "El Entorno Integrado de Desarrollo" MPLAB, la mejor herramienta para desarrollar proyectos con PIC's, bue... segn yo...!!!

El tema es, ya tienes MPLAB...???. Si no es as pues bye, que esto no te servir de nada, y si quieres continuar, ingresa aqu, lo descargas lo instalas y ya...!!!

Por cierto, actualmente en Microchip se encuentra disponible la versin 7, y este tutorial apunta a la versin 5.70.40, versin que todava se encuentra para descarga.

No es que sea conservador pero para la utilidad que le vamos a dar es suficiente, a dems es ms liviano que la versin 7.: Instalacin y ConfiguracinAlguien dijo por ah que cuando lo instales, le saques los tildes a todo lo referente a PICMASTER, PROMATE, MPLAB-ICE, MPLAB-ICD, ICEPIC, dado que se refieren a herramientas hard de microchip, y que nosotros no tenemos, pero bueno, yo me enter tarde :oP

Algunas de las cosas ms importantes seran:

- Archivos MPLAB IDE- Archivos MPASM/MPLINK/MPLIB- Archivos de Proteccin del Simulador- MPLAB-SIM

y por supuesto, los Archivos de Ayuda. Luego seleccionas los componentes de lenguaje Microchip que debes instalar (Todos por defecto), bien termines la instalacin, lo ejecutas y veras el IDE de MPLAB.

Por las dudas surja algn cuadro de dilogo dicindote algo de un proyecto, que si quieres crear uno o que no existe ninguno o bueno algo as, pues le das a no y continas, y no te preocupes demasiado que luego hablaremos de ese tema, por ahora haremos una inspeccin de nuestro entorno de trabajo luego entramos en materia...

Ahora lo vamos a preparar para nuestra ardua tarea de programar y simular nuestros proyectos segn el Micro del que disponemos, es decir, mi querido y bien amado 16F84...

Te diriges al men Options --> Development Mode... y vers un cuadro de dilogo algo as...

En la pestaa Tools seleccionas el procesador PIC16F84 y del otro lado el modo en que lo vas a utilizar MPLAB-SIM Simulador eso te permitir programar, depurar, simular, etc., el resto lo dejas como est, finalmente le das a Ok y vers en la barra de estado los cambios que hiciste...

Hasta aqu estamos listos para comenzar a trabajar, as es que daremos inicio a este tutorial....: Men Debug:De lo ms importante, desde aqu haremos las simulaciones de nuestro programa, los tres primeros submens son los de mayor inters, 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 simulacin a una velocidad que la verdad, no se distingue nada de lo que ocurre a lo largo del cdigo, vers la parte inferior de la ventana toda pintada de amarillo (seal de que la simulacin est en proceso). til cuando colocas algunos puntos de ruptura (breakpoints) para detener la ejecucin 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 lnea donde comenzar la simulacin (en ese caso vers toda la lnea pintada de negro y las letras blancas) "listo para comenzar la simulacin" HALT: Detiene la ejecucin. HALT TRACE: Detiene un traceo que se este haciendo (yo aun no lo utilic). ANIMATE: es igual que RUN pero lo hace ms lento, para que vayas siguiendo la ejecucin, mostrndote lnea por lnea todo lo que se est ejecutando, es el que ms utilizo yo. STEP: paso, es decir, un paso por cada vez que lo presionas (en la barra de herramientas vers dos huellas de zapato, pues es eso, paso a paso). Simplemente ejecuta una a una cada lnea de cdigo por cada vez que lo presionas. STEP OVER: Igual que el anterior pero con un pequeo detalle, cada vez que se encuentre con un call lo ejecuta de modo tan rpido que ni tu te enteras de que ya pas, es decir, utilzalo 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 cdigo a la que quieres ir. EXECUTE: Bueno, execute tiene dos opciones, veamos... EXECUTE AN OPCODE: te permite ejecutar un cdigo 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 cdigo 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 podrs simular que le envas seales al micro por uno de sus pines, este submen tiene 4 opciones... ASYNCHRONOUS STIMULUS: te abrir un pequeo dilogo con 12 botones como el que se muestra en la imagen, vendran a ser como interruptores, nota que al primero le asign el pin RA0 (pin 17) y entre parntesis una T (de TOGGLE)

Si presionas con el botn derecho del mouse en uno de esos botones vers las opciones de configuracin de estos estmulos, desde donde los puedes configurar, es algo as...

ASSIGN PIN: muestra los pines del puerto para que selecciones aquel que llevar un estmulo. 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 extensin .sti, desde aqu lo cargas o lo quitas, se trata de utilizar un archivo que creaste con esta extensin y que contiene los estmulos 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 extensin .reg y sirve para que en una determinada posicin del programa se cargue un registro con el valor que tu le quieras dar. CENTER DEBUG LOCATION: te ubica en la posicin en la cual el programa se est ejecutando, por si perdiste la lnea de ejecucin, se suele utilizar cuando detienes la ejecucin, empiezas a husmear por otro lado y luego no sabes donde andabas, pues bueno, ah te lo acercas...

BREAK SETTINGS, Te muestra un dilogo 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 segn le por ah... Cuando simulamos un programa, lo que la mquina en realidad hace, es seguir a travs 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 podra producir un reset en el micro, y as saber que ocurre o que es lo que hace el micro si esto llegara a ocurrir.

Slo le das a Power On Reset y habrs ocasionado un reset en el pin4 del micro (MCLR), luego le das a "cancel" y continas con la ejecucin para saber que hace el pic, y as asegurarte de que todo est en orden...

Nos queda lo ltimo, as que no me aflojes ahora, que luego viene lo mejor...

.: Men Options:DEVELOPMENT MODE: ya hablamos de l en la introduccin a este turorial, simplemente es donde hacemos las configuraciones del proyecto.

WINDOW SETUP: como estamos en la seccin de personalizacin, 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 edicin, por ejemplo las tabulaciones de 8 espacios, que se mantenga la indentacin de la lnea anterior, que se muestre el nmero de lneas al margen del cdigo, 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 anteriormenteENVIRONMENT SETUP: Wowwww...!!! vers un inmenso cuadro de dilogo para una personalizacin completa.PROGRAMMER OPTIONS: Son las opciones para configurar el programador que usars con MPLAB, pero como no lo utilizaremos para cargar el pic ya que no disponemos de esas herramientas, ah queda....: Men Tools:Personalmente, nunca lo utilic y no tengo la ms plida 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 ms 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 vers cuando lo ejecutes en modo "step" (paso a paso) o "Animate" (de forma animada)...

PROGRAM MEMORY: Vers la memoria de programa, y as sabes cuanto espacio te queda disponible, no te preocupes que un ejemplo lo aclarar todo, seguimos...?

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 ms da, 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, slo los vers cuando lo ejecutas en modo "Step" o "Animate".

SHOW SIMBOL LIST: todos los smbolos utilizados y su respectiva ubicacin (direccin de registro), aquello que definimos al iniciar nuestro cdigo, 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 realizandoWATCH WINDOW: Para crear tu propia ventana de registros, Cuando encaremos un proyecto que la requiera hablaremos de ella...MODIFY: Para modificar los valores de algn registro determinado, en caso de que no quieras esperar demasiado por ejemplo cuando haces un retardo, pronto se aclararan tus dudas, obvio si practicas...!!! :oP

El resto es de poco inters, as es que... ni para que mencionarlos

Terminamooooooooosssssss, al fiiiiinnn..., no sientes una gran satisfaccin despus de tanto lo...???

En fin... En la siguiente pgina comenzaremos un proyecto desde CERO y que proyecto...!!!

Ah nos vemos...

.: Cmo 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 sern siempre los mismos.

Comencemos...

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

Selecciona el men File-->New y vers un dilogo como el siguiente...

Que segn mi ingls dice algo as... "No existe ningn proyecto abierto, desea crear uno?", y como en eso andamos, seleccionas "YES", nota que tambin se abri una pgina en blanco "Untitled1", bueno, en ella es que introduciremos nuestro cdigo, pero sigamos...

Luego de darle a Yes, vers 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 extensin 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 (Edicin de Proyecto).

Aqu es donde comenzamos a ajustar todos los detalles para nuestro proyecto, y si estuviste siguiendo el tutorial desde un principio, te habrs 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 extensin .hex al proyecto que estamos creando, el cual por defecto lleva el mismo nombre, de hecho la finalidad es esa, crear un archivo con extensin .hex para luego grabarla en la memoria del pic.

Si seleccionamos cqpic[.hex] en Projects Files (parte inferior de la ventana), podrs ver que se nos habilita el botn Node Properties. como se ve en la imagen anterior, haces un click en l, y vers la ventana desde la cual configuraremos la forma en que MPLAB debe generar el archivo .hex, te debera quedar algo as...

Como vers aqu tambin hay algunas cositas ya conocidas, como INHX8M (nuestro cdigo objeto con extensin .hex), el fichero de errores (.err), el archivo list (.lst), Default Radix que vendra a ser el formato de los nmeros que vamos a utilizar (hexadecimal), etc., bien, ahora presionamos OK y volvemos a la ventana anterior, seleccionas Add Node y vers el siguiente dilogo...

Desde aqu vamos a ligar al proyecto nuestro archivo .asm, que es el que codificaremos, y que todava no hemos creado, de todos modos sabemos que se llamar cqpic.asm otra cosa que debes tener en cuenta es que debers guardarlo en el mismo directorio en que creaste el proyecto, luego presionas Aceptar y regresars 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 pgina en blanco para ingresar el cdigo, el tema es que an sigue siendo Untitled1.

Veamos... Anteriormente solo creamos un proyecto llamado cqpic.pjt, luego le ligamos un nodo con cqpic.asm (el cual an 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.

Ahora s, ya estamos completos...

Supongo que pensars lo mismo que yo en mis inicios, "crear un proyecto es toda una azaa", pero bueno, creme que lo vale...!!!

Bien mis queridos amigos, debo felicitarlos por haber llegado a este punto, la verdad..., que aguante no...!!!

Bueno, lo que viene ahora..., que v, ve a la siguiente pgina y lo descubres... :o)) .: CQPIC: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 prctica todo lo que te ofrece MPLAB, as es que hablemos un poco de eso, el proyecto...

Me imagino que debes estar ya cansado de leer CQPIC, sin saber que demonios significa eso, hice lo que todos, trat de darle al proyecto un nombre que me sea orientativo, se trata de un Secuenciador con PIC, como vers soy un apasionado de esos aparatejos, y aqu en jujuy competimos a gran escala por ellos en pocas de primavera "Fiesta Nacional de los Estudiantes", que nunca escuchaste hablar de eso...???, si quieres saberlo entra a la pgina oficial www.fne.org.ar y vers a que me dedico todos los aos en esta poca.

Tena pensado hacer un proyecto sencillo para que te gues mejor en el uso de MPLAB, pero luego lo pens, y me dije, ...un proyecto sencillo no te lleva a descubrir mucho de MPLAB, as que decid hacer algo mas complejo, no me arrojes piedras por eso ok?, de todos modos tratar de detallarlo lo mejor posible as evacuamos todas las dudas, de acuerdo...?

Siempre que buscaba secuenciadores no me gustaban ya que eran muy comunes, hasta que me di de narices con ste, y dije "Wooooooooowwwww... un secuenciador de 8 salidas y 16 efectos...!!!", cada uno de los efectos se seleccionan con la combinacin de 4 interruptores, bueno, como vers no es originalmente mo, y est basado en un proyecto de Jaime Bosch, este fue publicado en la edicin n 21 de la revista "Electrnica Prctica actual" en septiembre del 2000. La verdad JAIME te las mereces todas...!!!, un trabajo espectacular, si andas por estos rumbos, recibe mi mas cordial saludo y felicitaciones por ese gran trabajo.

"Armarlo por primera vez fue toda una ancdota que quizs un da se las cuente..."

Aunque aquella publicacin no traa el cdigo fuente, me toc estudiar el .hex (pero lo abr con I-CProg ;oP)y hasta el da de hoy no encuentro nada mejor, y lo modifico las veces que se me antoja o a pedido de mis alumnos.

Ok, Fin de la introduccin, para que te des una idea de lo que vamos a programar, hice un par de animaciones, slo tenle un poco de paciencia por si demora en cargarse, ya que son puras imgenes, creo que es mejor eso a tener que explicar algo que es tan complejo, ya que podrs ver los 16 efectos y la posicin de los interruptores para cada uno de ellos..., ya puedes ingresar...

.: CQPIC: Secuenciador de 8 Canales y 16 EfectosAlgunos de los efectos fueron conservados del original, bueno, los que ms me gustaban, el resto fue hecho en casa, notars que adems inclu la posicin de los interruptores escrita en binario y a la vez el nmero que le corresponde en hexadecimal, eso nos har falta para cuando comencemos a codificar...

Interruptores en posicin 0000, 0x00 en hexa. Hecho en casa...Monitor de LED'sEfecto 01

Interruptores en posicin 0001, 0x01 en hexa, conservado del original...Monitor de LED'sEfecto 02

Interruptores en posicin 0010, 0x02 en hexa. Conservado del original...Monitor de LED'sEfecto 03

Interruptores en posicin 0011, 0x03 en hexa. Hecho en casa...Monitor de LED'sEfecto 04

Interruptores en posicin 0100, 0x04 en hexa. Hecho en casa...Monitor de LED'sEfecto 05

Interruptores en posicin 0101, 0x05 en hexa. Hecho en casa...Monitor de LED'sEfecto 06

Interruptores en posicin 0110, 0x06 en hexa. Hecho en casa...Monitor de LED'sEfecto 07

Interruptores en posicin 0111, 0x07 en hexa. Conservado del original...Monitor de LED'sEfecto 08

Interruptores en posicin 1000, 0x08 en hexa. Hecho en casa...Monitor de LED'sEfecto 09

Interruptores en posicin 1001, 0x09 en hexa. Hecho en casa...Monitor de LED'sEfecto 10

Interruptores en posicin 1010, 0x0A en hexa. Hecho en casa...Monitor de LED'sEfecto 11

Interruptores en posicin 1011, 0x0B en hexa. Hecho en casa...Monitor de LED'sEfecto 12

Interruptores en posicin 1100, 0x0C en hexa. Hecho en casa...Monitor de LED'sEfecto 13

Interruptores en posicin 1101, 0x0D en hexa. Hecho en casa...Monitor de LED'sEfecto 14

Interruptores en posicin 1110, 0x0E en hexa. Hecho en casa...Monitor de LED'sEfecto 15

Interruptores en posicin 1111, 0x0F en hexa, hecho en casa..., como vers ya no saba que hacer...!!!Monitor de LED'sEfecto 16

Espero haya sido de tu agrado, ya que a esto nos dedicaremos de ahora en ms...

.: Estuvo bueno no crees...???.: Descripcin general del proyecto - Los puertos:Ahora es que empieza todo. Primero tenemos que saber que es lo que haremos con las entradas y que haremos con las salidas, cuantas salidas son necesarias y cuantas entradas tambin, debes tener en cuenta que en algn momento querrs tener control en la velocidad del desplazamiento de las luces, lo cual ya te puede llevar a pensar en un potencimetro, pues si, es as, de todos modos lo aclararemos un poco ms....: Salidas:El secuenciador posee 8 salidas que tomaremos del puerto B y las asignaciones sern las siguientes... Salida 0 Special Function Registers

y esto es lo que vers...

Puede que a ti te aparezcan otros valores en los registros, no te preocupes por eso, pasa que yo estuve jorobando antes, jejeje

Sigamos, en esta ventana vers como se modifican los registros cuando comencemos a simular.

Ahora vamos por otra, dirgete al men...

Debug --> Simulator Stimulus --> Asynchronous Stimulus...

Programa RA0 como Toggle, ok de acuerdo, cuando lo abres todos los botones estn sin configurar con la leyenda Stim 1(P), Stim2(P), etc. con el botn derecho del mouse haz clic en Stim 1(P) y vers un men emergente, selecciona Assign pin.. --> RA0 ahora Stim 1(P) es RA0 (P), nuevamente haz click con el botn derecho sobre el mismo botn pero esta vez selecciona Toggle

Bien, yo lo hice para RA0, debes hacer lo mismo para RA1, RA2 y RA3, con esto, habrs creado los cuatro interruptores que seleccionan los distintos efectos para el secuenciador.

Lo que necesitamos ahora es el 555 o timer, como no disponemos de eso nos la arreglaremos y crearemos un timer que enve pulsos a la patilla RA4, de acuerdo...???, entonces vamos al men...

Debug --> Simulator Stimulus --> Clock Stimulus...

Vers el dilogo para configurar pulsos de reloj en uno de los pines, comencemos, en Stimulus Pin:, despliega la lista y selecciona RA4, en High y en Low escribe 4, esto es el tiempo que permanecer en nivel alto (High), y el tiempo en nivel bajo (Low), ahora presiona el botn Add (parte inferior de la misma ventana), y por ltimo lo seleccionas y presionas Apply, para que se aplique a este proyecto, ya est, ya lo configuraste as que debe estar as...

Bueno, estamos listos para comenzar la simulacin, pero organiza un poco las ventanas para que puedas ver todo con mayor comodidad.

Ahora presiona el botn de Reset del micro, dirgete al men...

Debug --> Run --> Reset

o presiona F6 o bien, presiona este botn...

Ahora estamos en esta situacin...

Observa que el micro se ubic en la posicin donde se inicia cada vez que el secuenciador se encienda, aquello que venimos diciendo desde hace tiempo

Ok, en la prxima pgina comenzamos a simular...

.: Comenzando con la simulacinAclaremos un poco las cosas, tienes 4 ventanas abiertas

una con el cdigootra con el timerotra ms con los registros del microy una ltima con los 4 interruptores

La primera es para que sigas al cdigo mientras este se ejecuta y no la tocaremos mientras se est ejecutando.

La segunda slo tiene la configuracin del timer y sta enviar seales al micro como si fuese un 555. Tampoco la tocaremos

La ventana de Registros del micro nos mostrar los cambios en todos los registros del micro, en especial los que queremos ver, como ser los pulsos en RA4 (que hace de timer), el estado de los interruptores RA0, RA1, RA2 y RA3, que son los que se modificarn cada vez que presiones alguno de los 4 botones que configuramos anteriormente como Toggle, te mostrar donde estn...

Ese es el registro del puerto A. Pero tambin vers los cambios en el Puerto B.

portb 00 0 00000000

Estas son las salidas, es decir los LED's, claro que en forma simulada :oP

La cuarta ventana, la de los pulsadores es la nica que tocaremos, presionando los botones para cambiar los datos del puerto A (es decir, para cambiar de efecto).

Perfecto...!!!, ahora comenzamos a toquetear, Ve al men...

Debug --> Run --> Run

Jaja, hizo runrun, ves lo rpido que se ejecuta todo el cdigo, ahora me crees...???, bueno, esto fue slo para que lo veas, ahora presiona el botn del semforo rojo, para detener la simulacin, vaya Dios a saber por donde est la lnea de ejecucin de cdigo en estos momentos, pero comencemos de nuevo, resetea el micro como lo hiciste anteriormente, y ahora ve al men...

Debug --> Run --> Step

o presiona el botn de los zapatitos, ste...

por cada vez que presiones este botn vers como avanza la ejecucin del cdigo lnea por lnea, ahora observa como se inicia la configuracin de los puertos haciendo uso del registro w, en trisa para el Puerto A con los 5 primeros bits como entrada y trisb con los 8 bits como salida, bueno, eso fue para que veas esta forma de ejecucin, si continas as podrs ver tambin el quinto bit de porta que cambia con cada pulso del timer que programamos, a dems al estar los interruptores en cero, se ejecutar el efecto 1.

Bien, ahora que ya lo viste lo ejecutaremos de la forma que ms me gusta, Resetea el micro y apunta al men...

Debug --> Run --> Animate

Esto es un espectculo, observa esta toma de pantalla...

En la ventana de cdigo se est analizando el timer (RA4) en clokoff, en la ventana de Registros, aquello que est en rojo es lo ltimo que se analiz y se ejecut, observa...

porta 13 19 00010011

porta es el puerto A, 13 es el valor de los bits de este registro en hexadecimal, 19 es lo mismo pero en decimal, y finalmente 00010011 que es lo mismo pero en binario, bien, fjate que los interruptores que ahora te los marcar en azul 00010011 estn en 0011 y el clock 00010011 en 1, por lo tanto se est ejecutando el cuarto efecto (efect4), recuerda que el primer efecto es con los interruptores en 0000 el segundo en 0001, el tercero en 0010 y el cuarto en 0011. y el timer est en nivel alto (1)

Por otro lado...

portb F2 242 11110010

es el estado de los bits del puerto B, esto quiere decir que estn encendidos los LED's 1, 4, 5, 6 y 7 estos que te marco en rojo 11110010

En fin, contina simulando si deseas ver todos los efectos, recuerda que cada vez que presiones uno de los interruptores ste cambiar de estado de 0 a 1 o bien de 1 a 0.

Ahora experimentemos un poquito ms...

.: Break Points, La pila y la ventana File RegisterResetea el micro y luego ejectalo en forma animada, coloca los interruptores en 0000, as...

porta 10 16 00010000

No importa el estado del timer (ese 1 que apareci ah), esto es slo para asegurarnos que se ejecutar efect1 (es decir el primer efecto). Ahora detn la ejecucin.

En la ventana de cdigo ve a la etiqueta trece que se encuentra en efect1, casi en la mitad del cdigo que corresponde a este efecto, coloca el cursor en esa lnea y click con el botn derecho, vers un men emergente algo as...

pues bien, selecciona Break Point(s) y toda esa lnea se te pintar de rojo, lo que hicimos, es colocar un punto de ruptura en esa lnea, esto quiere decir que cuando se ejecute el cdigo, este se detendr en esa lnea, ahora lo veremos en vivo, ve al men...

Debug --> Run --> Run

esto es ejecutar el cdigo a todo lo que da, y Oh sorpresa...!!!, la ejecucin termin en el punto de ruptura, bien, veamos que pas en la ventana de Registros, observa esto...

portb00000000000

las cosas estn as, la instruccin...

CLRFportb; (00000000)

es la que envi 00000000 a portb.

CALLclokon

fue la llamada al timer y cuando regres se encontr con el punto de ruptura en ...

treceBSFportb,0; (00000001)

por lo tanto esta lnea no se ejecut, es por eso que el estado de portb es...

portb00000000000

ocurrir lo mismo si lo ejecutas en forma animada, prueba y vers...

Bueno, ahora quitaremos este Break Point, ve al men...

Debug --> Clear All Points

y vers un mensaje que dice "Do you want to Clear all Break, trace, and trigger points?" que en entendible seria, "estas por quitar todos los puntos de rupturas, bla, bla, bla...", ...que ingls ms raro el mo...!!!, pero bueno, le das a si y listo, ya lo quitamos.

otra cosa que puedes ver es como se van apilando los datos en la pila (Stack) (aquella de las 8 posiciones), vamos por ella, ve al men...

Window --> Stack

y aqu la tienes ejecutndose...

Observa como se carga y se descarga en plena ejecucin...

Otra de las ventanas que podemos ver es File register, ve al men...

Window --> File Register

aqu est...

Ejecuta el cdigo en modo Animate y vers como cambian los registros.

Bueno ahora si, slo quera mostrarte algunas de las opciones que tienes cuando ejecutas tu programa.

Espero que lo hayas disfrutado, y lo ms importante, que hayas comprendido como hacer la simulacin con MPLAB, ahora es tu turno, experimenta con MPLAB, tiene varias opciones las cuales te mostr al comenzar el tutorial, se que podrs hacer cosas ms interesantes que estas y mucho ms complejas por supuesto, lo que yo siempre hago es hacer una copia del proyecto y experimentar para aprender algo ms, y preguntar slo si no le encuentro solucin a mi problema, lo ms tpico es errarle hasta que salga todo bien, creo que es la mejor forma de aprender, no crees...???

.: ltimos ComentariosSlo resta cargar nuestro cqpic.hex en el pic, para hacerlo ve a la carpeta donde guardaste el proyecto, que seguramente debe estar en...

C --> Archivo de Programas --> MPLAB --> Tu carpeta de proyectos

All vers este archivo junto a otros ms, pues es hora de cargar cqpic.hex en el micro, abre el programa que utilizas siempre, y lo cargas, respecto a este tema ya lo describ en el tutorial anterior, no lo voy a repetir ahora.

Como dije anteriormente, MPLAB es para codificar, simular, etc., etc., pero menos para cargar el programa en el pic, ya que todos tenemos nuestro propio grabador, y bueno... que si no tienes uno, ya es hora de que lo armes no crees...???

Lo que necesitas ahora, es montar el circuito, as es que ve a la seccin de proyectos, que ah estn todos los detalles, o haz click aqu, que ms da...

Bien mis queridos amigos... Aqu damos por finalizado este tutorial, espero haberles sido de ayuda para aquello que estn a punto de emprender... Dime si no vali la pena...???, viste que si...!!!

Nos veremos en la prxima y a ver si hacemos algo mejor, Suerte, y que Dios acompae vuestros cdigos, y las metidas de pata tambin, porque no? :o))