DE
TAPA:
Niple
INTRODUCCION Todos nuestros lectores saben que el autor es un fantico del PIC y que siempre se caracteriz por tratar de develar sus misterios en forma prctica. En efecto, alrededor de este pequeo microprocesador hay mucha gente que gana buen dinero empezando por el fabricante del mismo, que ha logrado buenas ventas de sus chips y recursos asociados, por los programadores, por los programas utilitarios, por los emuladores, por los programas intrpretes, etc. Microchip ha tenido siempre polticas agresivas para colocar los PICs en el mercado y para lograrlo, entrega herramientas gratuitas co-
mo el viejo y querido MPAMS y el nuevo MPLAB. Pero, si bien los integrados manejan sets de instrucciones reducidas, sus recursos no suelen ser muy fciles de manejar por el principiante y para colmo, no estn en castellano. Hace muchos aos exista en la Argentina algo que se llamaba "La Tele Escuela Tcnica" que todas las maanas difunda conocimientos tcnicos sobre mecnica y electrnica. El lema de esa escuela era "Un hombre que sabe es un hombre libre". Esa buena idea muri hace muchos aos porque seguramente resultaba poco econmica, o sea no era negocio. Nuestra revista quiere hacer un aporte al conocimiento sobre microprocesadores y
por eso nos sentimos complacidos de describir algo diferente Es tan diferente que le prometemos que Uds. van a tener terminado un programa dentro de los prximos 90 minutos si no tienen experiencia previa y prcticamente de inmediato si tienen experiencia en programar PICs. PROGRAMACION DE PICs POR NIPLE Como todos saben el PIC es un microprocesador programable de bajo costo y alta velocidad. Ud. le puede ensear a funcionar como un destellador de un led, como un decodificador de seales de video o
Saber Electrnica
Ar tculo de Tapa
como cualquier otra cosa que se le ocurra a un tcnico imaginativo. El PIC tiene su propio lenguaje de programacin. Este lenguaje no es muy complejo (solo tiene algo ms de treinta instrucciones) pero tampoco es muy simple. Si quiere programarlo en su propio lenguaje tiene que recordar una serie de procedimientos repetitivos y tediosos y es muy probable que se le escape alguna letra equivocada, porque programar en el lenguaje del PIC significa escribir un texto muy particular con un encolumnado especial. Un solo error ortogrfico hace que el programa no funcione o funcione mal. Esto implica que despus de escribir el programa se lo debe depurar. Para eso existe un programa gratuito distribuido por Microchip que se llama MPLAB. Este programa analiza lo que Ud. escribi y si descubre un error le indica en qu parte del programa est. No le dice exactamente cul es el error, pero le muestra la palabra que no entiende. Este procedimiento puede ser muy tedioso en programas largos. Lo que el MPLAB no le dice es si su programa est mal estructurado o construido. Esto simplemente genera un funcionamiento deficiente. En una palabra que Ud. est solo, sin ninguna ayuda de ningn tipo. Pero una mente sagaz se da cuenta que los procedimientos que se utilizan durante la programacin no son infinitos y todos diferentes entre s. Se trata de procedimientos repetitivos que solo varan en algn valor y que no merecen la atencin del programador. Es decir que no hay por qu estar pensando en cmo hacer un retardo (por ejemplo para que un led se mantenga encendido durante un tiempo determinado) que por mucho es la operacin ms comn en un programa. Lo ideal sera que dentro del lenguaje de microchip existiera una sentencia para generar un retardo de una cantidad de segundos, milisegundos o microsegundos elegidos por el programador y no tener que construir ese retardo cada vez que se lo necesite. Que el programador se dedique a lo particular y que la PC resuelva sola lo repetitivo, esa es la idea del NIPLE y de paso que corrija los errores que pueda cometer el programador a medida que los vaya cometiendo por el sencillo expediente de mandar mensajes de error. El NIPLE es un lenguaje intrprete que traduce nuestras ideas generando el cdigo de microchips. Por qu digo ideas y no palabras? Porque el NIPLE es un lenguaje visual como el Windows. Podramos decir que el NIPLE es al lenguaje de Microchip como el Windows es al DOS. Nosotros le vamos a ensear a programar usando el mouse y no el teclado. Ud. va a generar conos y los va a unir entre s para formar un diagrama de flujo que representa visualmente al programa y cuando dicho diagrama est terminado el resultado ser un texto que cumple todas las reglas de Microchip y que por lo tanto puede ser ensamblado por el MPSAM o el MPLAB generando un archivo del tipo hexadecimal que es el nico que comprenden los cargadores de PICs (tambin llamados programadores, como por ejemplo el Quarkpro). Entiende ahora de dnde viene el nombre NIPLE? El niple de los gasistas (en Argentina y varios pases de Amrica Latina) sirve para adaptar un cao a otro. Nuestro NIPLE adapta un dibujo en la pantalla a un programa con el lenguaje de microchip y lo hace tan fcilmente como enrroscar un niple en un cao de gas. En qu lugar del mundo fue creada esta maravilla de la informtica? Aunque le parezca mentira, esta herramienta fue diseada por latinoamericanos, pensando en la forma de pensar de los que vivimos en esta regin Sus creadores son de la hermosa ciudad de Gualeguaych, en la provincia de Entre Ros, de la Repblica Argentina. Es lo que se denomina una pymi (pequea y mediana industria) del interior de la Argentina con un grupo de jvenes y pujantes profesionales emprendedores. Qu ventaja tiene un software creado en Amrica Latina? Varias y muy importantes... Lo ms importante es que tiene un precio muy accesible, segundo en importancia es que est escrito en castellano, aunque cabe aclarar que el NIPLE ya est siendo traducido al ingls. Cul es el papel de la revista Saber en el lanzamiento del Niple? A nosotros nos parece una idea maravillosa y estamos dispuestos a apoyarla en todo. Por eso cuando los directivos de NIPLE me pidieron que difundiera su programa no dud un solo instante y me puse a trabajar. A cambio de ese apoyo le ped a los responsables de la empresa que realizaran un DEMO ejecutable gratuito para lectores de Saber Electrnica con los que sea posible trabajar sin problemas y aprender a razonar cuando se quiere hacer un programa para ser cargado en un PIC. La nica limitacin de este demo es que no permite guardar los trabajos que Ud. est realizando. Pero Ud. puede ejercitarse y crear sus propios diagramas de flujo y ensamblar sus primeros trabajos. La idea es, que segn mi criterio, para aprender a programar hay que hacer algo ms que leer un artculo de la revista. Hay que hacer el programa de demostracin en la pantalla del NIPLE porque de ese modo la mente y las manos del lector se ejercitan notablemente. Para poder seguir leyendo este artculo es recomendable que instale el DEMO en su PC, para ello ingrese a nuestra pgina: www.webelectronica.com.ar Luego dirjase al cono "pasword" arriba a la izquierda de la pgina. Una vez all haga click con el mouse e ingrese el cdigo nip11, podr descargar el demo de NIPLE. Instlelo en su PC y luego siga las instrucciones del prximo punto para ir armando el primer tutor de NIPLE. Nuestra primer entrega est construida de este modo. Arme el
Saber Electrnica
rizador de encendido interno (power up timer) durante la predisposicin al cargar el programa. LO QUE UD. DEBE SABER SOBRE EL PIC PARA ENTENDER EL DEMO Un PIC 16F84 (o la nueva versin 16F84A o el viejo 16C84) tiene 13 patas de I/O. El nombre I/O significa Imput/Output (Entrada/Salida). Es decir que su PIC posee 13 patas que Ud. puede programar sencillamente como de entrada o de salida. Estas 13 patas estn organizadas formando 2 puertos llamados puerto A y puerto B. El puerto A tiene solo cinco patas y el puerto B esta dotado de 8 patas. Esta organizacin es muy til para procesar la informacin en forma de palabras de ocho cifras (bytes de 8 bits). En el fondo el PIC solo procesa Bytes. Los suma, los resta, los compara, mueve sus bits, los hace iguales a cero o a 1, etc. Los bytes que procesa ingresan por los terminales de entrada o se generan con el mismo programa y cuando estn debidamente procesados, se envan al exterior para realizar una determinada accin. El puerto de salida o de entrada trabaja con una tensin normalizada de 0 o 5V. Es decir que en el terminal correspondiente a un uno se obtendrn 5V y en el correspondiente a un cero se obtendr 0 volt. Cuando una pata de un puerto se utiliza como fuente puede proveer hasta
Saber Electrnica
Ar tculo de Tapa
CIRCUITO DE DESTELLADOR En el primer proyecto a realizar con el DEMO, la accin es encender un LED en forma intermitente; pero el usuario puede adaptar el circuito para que realice otras funciones como generar un tono de audio o un pulso de sincronismo o de excitacin horizontal o vertical para un TV, o controlar la velocidad de un motor alimentndolo en forma pulsada. En este demo solo utilizaremos uno de los bits del byte que sacaremos por el puerto A. Mas precisamente el ms significativo es decir RB7. Ver la figura 2. Nuestro circuito completo es en realidad una combinacin del circuito de la figura 1 con el agregado de un resistor y un diodo led en la pata 13. Cuando en el puerto B aparezca el nmero binario 1000 0000 el led se encender y cuando aparezca el binario 0000 0000 se apagar y esos nmeros aparecern en intervalos de tiempo de 100 mS. PROGRAMA DEL PROYECTO 1 REALIZADO CON EL DEMO DEL NIPLE Si Ud. ya tiene instalado el Niple slo debe hacer un doble click sobre el ejecutable para abrirlo, en ese momento aparecer la pantalla del Niple DEMO vaca como lo indica la figura 3. Esta pantalla como cualquier otra pantalla de windows posee menes" desplegables que se operan con el mouse. Si Ud. selecciona "archivo" se desplegan una serie de opciones. Elija "nuevo proyecto" o Abrir proyecto existente (la opcin que sea posible). Si le permite abrir un nuevo proyecto, aparecer una pantalla como la mostrada en la figura 4. En esta pantalla hay una sola zona que debe ser llenada obligatoriamente y es la denominada "archivo". La ventana de "nombre del proyecto" es de llenado voluntario, as como la ventana grande de la derecha que sirve para describir el funcionamiento del dispositivo. La ventana
Figura 2
20mA y cuando se usa como consumo 25. Tambin se debe tener en cuenta que el puerto A en su totalidad solo puede entregar 80mA co-
mo fuente y 50mA como consumo. Estos valores se incrementan a 100 y 150 mA respectivamente para el puerto B.
Figura 3
Figura 4
Saber Electrnica
Figura 5
Figura 6
Figura 7
de la fecha se llena automticamente con la fecha actual que indica su PC. Si le permite seleccionar la opcin Abrir un proyecto existente haga click y busque un archivo en: Niple\Ejemplos\demo2.NPL. Aparecer una pantalla como la mostrada en la figura 5. Dirjase a la derecha de la pantalla y en la seccin Herramientas (16F84) haga un click en Rutinas Bsicas y cuando se despliegue un sub men, haga doble click en Iniciar Programa (figura 6). De esta manera se crea automticamente el encabezado del programa y se muestra un nuevo men desplegable a la derecha de la ventana de trabajo en donde se puede elegir la accin a seguir. En nuestro caso se debe crear el puerto B antes que ninguna otra cosa y definir la pata RB7 como salida. La definicin de puertos es una rutina bsica o sea que deberemos ahora hacer un click en la palabra puerFigura 8 tos que est dentro del sub men de Rutinas Bsicas. Haciendo doble click sobre la palabra PUERTOS se despliegan cuatro opciones de puertos (figura 7) de la que se
No es necesario crear la unin entre los conos; sta se crea automticamente en tanto el cono anterior se encuentre activo (marcado con los seis puntos caractersticos). Si no estuviera activo se puede activar pulsando sobre l con el mouse. Si no est activado el ltimo cono y se solicita el puerto o cualquier otra operacin aparecer un cartel de advertencia como el indicado en la figura 10.
Figura 10
Saber Electrnica
Ar tculo de Tapa
Lo ms conveniente es elegir "NO", activar el ltimo cono y volver a solicitar la nueva funcin con el ltimo cono activado. A continuacin debemos atender las condiciones iniciales. Nuestro proyecto requiere que al conectar la fuente se encienda el led por 100 mS y luego se apague y contine con la secuencia. Por la tanto la condicin inicial del puerto debe ser el binario 1000 0000. Es decir, iniciamos el programa, decimos que todas las patas del puerto B sean salidas y ahora debemos mandar un 1 al bit 7 del puerto B (RB7), o sea, la pata 13. Existen dos modos de cargar un puerto y nosotros vamos a explorar los dos modos en este proyecto. El primero consiste en cargar el puerto con una "constante" tambin llamada nmero "literal". El segundo mtodo algo ms complejo es con una "variable" guardada en una determinada posicin de memoria que se haya llenado previamente y que eventualmente puede ser variada por el programa (en este demo es un valor que permanece constante). Las posiciones de memoria tienen una direccin determinada que es un nmero binario (aunque generalmente se utiliza su equivalente hexadecimal). Como recordar estos nmeros es difcil, Niple permite guardar las variables en posiciones de memoria que tengan nombres, equivalentes a esas posiciones. Utilizaremos por ejemplo el nombre "ini" donde guardaremos la condicin inicial del puerto B. Lo primero que debemos hacer entonces es elegir la rutina bsica "asignar valor". Cuando la pulsemos Niple nos preguntar si deseamos asignarle valor a un registro o a un bit especifico de un registro predeterminado. Al hacer doble click sobre la palabra REGISTRO, aparecer una pantalla que me pregunta si vamos a asignar un valor a un registro nuevo o a un registro existente, nosotros decimos que es un registro nuevo (vamos a crear el registro ini) y aparecer una pantalla como la mostrada en la figura 11. En esta pantalla se pueden observar los registros previamente asignados. Aunque Ud. no haya asignado ningn registro los primeros registros ya estn ocupados por registros especiales imprescindibles que no pueden ser borrados ya que mantienen el funcionamiento bsico del PIC. Observe que la memoria est dividida en dos bancos y que el primer lugar libre es el registro 0Ch (0C hexadecimal). Justamente all agregamos el nombre "ini" con que bautizamos a nuestra variable, para ello hacemos click sobre la segunda columna de la posicin 0Ch, posteriormente pulsamos en aceptar y aparece una ventana para escribir el nombre del registro. Aceptamos y ya tenemos la variable "ini" lista para recibir valores. Pulsando nuevamente en "asignar valor a un registro" volver a aparecer la pantalla correspondiente pero esta vez con la ventana para seleccionar el registro con una flecha para desplegar el posible contenido; la pulsamos y obtenemos una lista con una sola fila conteniendo el registro ini. Si hubiramos creados ms registros apareceran ubicados a continuacin del "ini". Seleccione el registro "ini" y aparecer la parte inferior de la ventana invitndolo a introducir un "literal" o el valor de otro registro. Marque un "literal" y Niple le preguntar si quiere introducir un Decimal un Binario o un Hexadecimal. Nosotros marcamos binario e introducimos el valor 1000 0000 que pone un uno en el dgito ms significativo o RB7, tal como se muestra en la figura 12.
Figura 12
En la misma figura se puede observar que tenemos la oportunidad de introducir comentarios para recordarnos qu es lo que hemos querido hacer con esa instruccin. Al marcar ingresar ya tenemos el registro INI cargado con el numero 1000 0000. Ahora debemos conseguir que ese valor interno al PIC salga por la pata RB7 del puerto. La operacin necesaria para sacar informacin por un puerto se llama "escribir en un puerto" y se la puede encontrar en la ventana derecha haciendo Insertar/Rutinas bsicas/Puertos/Escribir en un puerto. Aparecer una simple ventana que nos invita a definir lo que usted desea enviarle al puerto, ya sea un literal o el valor de un registro, seleccione "valor de un registro", luego accediendo a la ventana podr elegir dentro de los registros creados (tambin se podra crear un registro nuevo), que en nuestro caso generaramos all el registro ini que generamos previamente. Como nosotros ya lo tenamos creado simplemente seleccionamos ini. Ver la figura 13. Una vez completada la seleccin
Figura 13 Figura 11
Saber Electrnica
Figura 15
proyecto es conveniente ver hasta donde progresamos en el diagrama de flujo que Niple comenz a crear. Ver la figura 16. Transcurrido el tiempo con el led
Figura 14
el led se enciende. Nuestro deseo es que se mantenga encendido por 100 mS. Por lo tanto debemos emplear una subrrutina de demora que es un loop del programa que se ejecuta sin realizar ninguna operacin. Simplemente el programa no va a hacer nada por el tiempo programado. Para ingresar un retardo vaya hasta "Rutinas Bsicas", luego baje hasta "Temporizadores" haga doble click y seleccione "Tiempo por Bucles". Esta es la seleccin ms adecuada para que el tiempo que Ud. genere ser tan preciso como el cristal que utiliz al armar el circuito. Se ver en la pantalla una nueva ventana, en ella podremos elegir como funcionara el temporizador, para eso tenemos dos opciones "Tiempo Fijo" o "Tiempo Variable", en nuestro caso queremos que el led se encienda y se apague durante un tiempo determinado. Para eso clickeamos en el cuadradito al lado de "Tiempo Fijo", ahora lo que debemos hacer es seleccionar la base de tiempo, nos dirigimos a la pestaa de la derecha y
Figura 16
encendido deberemos apagarlo por un periodo de tiempo igual. Eso significa escribir un cero en el puerto B y realizar una nueva demora de 100 mS. Para practicar vamos a escribir en el puerto de una manera ms rpida. Pida Insertar/Puertos/Escribir en un puerto y aparecer la pantalla para "escribir datos en puerto". Se-
Saber Electrnica
Ar tculo de Tapa
Si se apoya el mouse sobre cada bloque sin presionar ningn botn se despliega la explicacin de la operacin realizada lo que nos ayuda a entender el programa. Sintticamente: 1) Se inicia el programa 2) Se define el puerto B como todas salidas. 3) Se crea el registro "ini" y se le asigna el valor 1000 0000. 4) Se vuelca el valor de "ini" en el puerto B. 5) Se demora 100 mS. 6) Se vuelca el valor 0000 0000 en el puerto B. 7) Se demora 100 mS. 8) Se retorna a la definicin de ini = 1000 0000 9) Se retorna a 3 10) iden 4 y as indefinidamente LA GENERACIN DE ARCHIVOS plemente ingrese a la primer columna Archivo/Archivo ASM/Generar cdigo ASM y aparecer un cuadro de dilogo que le pregunta dnde desea guardar los archivos que se van a generar tal como lo hace cualquier otro programa de Windows. Indique el camino, pulse en guardar y aparece el mensaje de Niple que le indica que el archivo se gener satisfactoriamente. Cuando lo quite aparece el cuadro de dilogo del MPLAB para que Ud. pueda generar todos los archivos deseados. Ver la figura 20. Atencin: No en todas las mquinas aparecer esta opcin, depender de la versin del DEMO, del sistema operativo de su PC, de la versin del MPLAB, etc. En muchas ocasiones deber ensamblar el archivo (.asm) por medio de los mtodos tradicionales con el MPLAB o el MPASM, haciendo un doble click sobre el ejecutable correspondiente para que aparezca la pantalla de la figura 20. Otra forma de obtener el archivo (.hex) es ir a Herramientas/Software Compliador.Hex, para que aparezca en pantalla la figura 20. Observe en la parte superior del
Figura 18
Figura 19
18. Nuestro programa est terminado y ahora debemos cargarlo en nuestro PIC. Los PIC no entienden directamente el lenguaje de Niple. Para cargar un PIC el archivo de Niple debe primero transformarse en un archivo del tipo (.asm) generado por un programa gratuito de Microchip que se llama MPLAB. Este programa debe ser bajado desde la red en el sitio de microchip en www.microchip.com e instalado en su PC de acuerdo con los indicaciones enviadas con ese programa. Niple no tiene software compilador ni programador pero maneja directamente al que Ud. tenga instalado de modo que parece que lo tuviera. Para que maneje ese software Ud. debe comunicarle en qu parte de su PC est instalado el mismo. En una palabra, debe indicarle el camino que debe seguir en su disco rgido para llegar al MPASM o al MPLAB. En la ventana principal, ingrese a Herramientas/configuracin del sistema. Aparecer un cuadro de dialogo con los dos ltimos casilleros libres tal como se ve en la figura Ud. debe llenar los dos ltimos casilleros, con los datos de su mquina, para ello debe saber en qu carpeta de su disco tiene guardado el MPASM y el programa para compilar el archivo (.hex). Por ejemplo tal como lo indica la figura 19 para la mquina del autor. Ahora est en condiciones de usar el MPLAB desde su Niple. Sim-
Figura 20
Saber Electrnica
"demoni01.npl" gurdelo en su rgido y cuando llegue a la pantalla de la figura 19 ubquelo en la ventana superior del MPASM. Siga el procedimiento indicado como si ese archivo hubiera sido generado por su NIPLE.
Figura 22
CONCLUSIONES
cuadro. All debe estar indicado el archivo .ASM sobre el que Ud. desea operar. Si no es el archivo deseado pulse en Browse y busque su archivo. Tal como est predispuesto el cuadro, Ud. va a generar tres archivos al mismo tiempo. El archivo indicado como Hex Out es el que utiliza su programador para cargar un PIC. El indicado como ERROR FILE indica si el archivo compilado tiene algn error de construccin y el archivo LIST FILE es el listado del programa con todos los renglones numerados para su adecuado control. Pulse en Assemble y el archivo se ensamblar (se transformar en un archivo de otro lenguaje). Observe que aparecer un pequeo cuadro indicndole el progreso del ensamblado y cuando se llegue al 100% se leer que el ensamblado no contiene errores. Ver la figura 21. Slo nos queda cargar el PIC, para ello debe picar en Herramientas/Software programador y aparecer el cuadro de dialogo de su programador. En la figura 22 podemos observar el cuadro de dilogo del programador que utiliza el autor. Si Ud. est trabajando con el DEMO de Niple preparado para lectores de la revista Saber Electrnica, no tiene posibilidad de salvar el archivo .npl que se genera partiendo del diagrama de flujo. Pero en la pgina web existe un archivo modificado que su demo puede leer perfectamente. Bsquelo tal como lo hizo con el DEMO. Obtendr el archivo
Le aconsejamos que a pesar de lo simple de este proyecto, lo realice y lo pruebe como un excelente ejercicio didctico mucho ms efectivo que la simple lectura sin ejecucin. Posteriormente le aconsejamos que modifique este programa a gusto realizando todas las variantes que se le ocurra de acuerdo a sus preferencias personales. Por ejemplo, si Ud. se dedica a la TV puede generar una seal de excitacin para el transistor driver horizontal con solo adecuar los tiempos y hacerlos diferentes entre s. Si Ud. se dedica al audio puede fabricar un generador de onda cuadrada solo con cambiar Centro Argentino de Televisin los tiempos a 1 Aumente sus Ingresos mS. Si Ud. se dedica a la robtica Ao 2003 - Cursos y Seminarios puede alimentar un motor a travs * Service Camcorders y Cmaras de un driver ade- * Electrnica 1 y 2. Cursos Intensivos cuado y variar la velocidad cam- * Service TVC, curso prctico biando el periodo * Armado y Reparacin de PC, Redes de actividad de la * Hornos a Microondas seal generada. Y cualquier otro uso * Videocassetteras que se le pueda * Audio, CD, CDR/W, DVD ocurrir. * Monitores e Impresoras Niple es un * Fuentes de Alimentacin PC software que se instala y se usa de Tenemos otros cursos y seminarios. inmediato, sin neReserve su vacante. Inscrbase YA! cesidad de profundos estudios teriwww.ceartel.com CUOTAS ACCESIBLES cos del mismo, la mejor manera de conocerlo es realiPje. El Maestro 55 (alt. Rivadavia 4650) zando realmente Tel.: 4901-4684, Tel./Fax/Memo: 4901-5924 los demos proHorario de Atencin: Lu-Vi 16.00 a 21.00hs puestos y modificando los prograceartel@infovia.com.ar mas para adecuar-
los a sus necesidades particulares. Si Ud. es un experto programador que solo utilizar el Niple para acelerar el diseo de sus programas puede leer los demos "a vuelo de pjaro" para aprender a utilizarlo y preguntarle al Help los detalles que no se tratan en los demos. Consideramos que una buena combinacin de un Help con varios demos, es la estructura didctica ms adecuada para que Ud. haga de Niple un amigo inseparable. Para conseguir este programa se puede poner en contacto con los autores del utilitario, cuyos datos aparecen al desplegarse la pantalla inicial del DEMO. !
Saber Electrnica