Você está na página 1de 126

Los Circuitos Integrados Programables

Introduccin

rio, con dos fuentes de entrada series asincrnicas capaces de ejecutar hasta Alguna vez dese tener un Kernel de 19.200 baud junto con siete sensores que Tiempo-Real para la familia PIC16CXXX de deben estar "indicados" como entradas microcontroladores? O quiso averiguar (vea el captulo 5). Se debe manejar otra de qu se tratan las Multitareas o los Enca- lnea de entrada que cause un "r econ jes? Si la respuesta es positiva, este captu- teo" del software interno. Para la salida, lo est dirigido a usted. Le ensearemos a este ejemplo tiene un LED que muestra implementar todas las caractersticas de ocho estados internos diferentes de la un gran Kernel Multitareas de Tiempo-Real "Alar ma Remota", la cual titila a diferenRemota" en poco espacio y sin ocuparnos de los tes promedios y secuencias. Esta salida sekernels existentes. Con una planificacin rie y asincrnica es capaz de ejecutarse a adecuada, y usando las tcnicas que des- 38.400 baud y las entradas pasan a la sicribiremos en este libro, podr construir su guiente estacin de la alarma remota. Se propio kernel de tiempo-real rpido con incluyen distintos temporizadores cortos y las caractersticas necesarias para hacer largos para cumplir con las nueve tareas cualquier tarea. cooperativas de este ejemplo. Por si no recuerda, se denomina baud a la transmisin de un byte por segundo. Qu es el Kernel? El segundo ejemplo se implement con un PIC16C64 para formar un Kernel SemiKernel es la palabra que se utiliza para Prioritario conducido por interrupcin. Este describir parte de "un sistema operativo" o ejemplo transforma las rutinas series de enel sistema operativo completo con el que trada y salida del primer ejemplo en Rutiopera un microcontrolador o una compu- nas de Servicio de Interrupcin (ISR) para tadora. En muchos artculos, en lugar de obtener mayor velocidad y precisin. emplear el trmino "Ker nel" empleo la palabra "entor no", sin embargo, aqu emno" plearemos el trmino en ingls que no poQu es un PIC? see traduccin directa. En la Nota AN585 de Microchip (gran Los circuitos integrados programables parte de la bibliografa consultada para (Programmable Integrated Circuits = PIC) redactar este texto es de la empresa Mison componentes sumamente tiles en la crohip) se incluyen dos ejemplos primordia- Electrnica de Consumo. An cuando son les: uno basado en el PIC16C54 y otro en conocidos desde hace ms de veinte el ms poderoso PIC16C64. Se implement aos, existen en la actualidad nuevos tipos una "Alar ma Remota" con el PIC16C54 que cumplen con una serie de requisitos y como un ejemplo de un Kernel No-Priorita- caractersticas sumamente tiles.

Todo sobre PICs

LOS CIRCUITOS INTEGRADOS PROGRAMABLES


Los microcontroladores PIC son en el fondo procesadores similares a otros tipos, como por ejemplo la familia de los microprocesadores X86, 80486, Pentium y muchos otros que usan una arquitectura interna del tipo Von Neumann. En este tipo de arquitectura los datos y la memoria del programa se encuentran en el mismo espacio de direcciones. En r ealidad un micr opr ocesador y un micr ocontr olador no son la misma cosa. Los PICs son micr ocontr olador es, es decir, una unidad que posee en su interior al micr opr ocesador y a los ele mentos indispensables para que pue da funcionar como una minicompu tadora en un solo chip. Esta circunstancia da lugar a una gran prdida de tiempo porque los datos tienen que ser retirados de la memoria y llevados a la CPU (Central Processor Unit) y viceversa. Esto significa que la computadora dedica la mayor parte del tiempo al transporte de datos de ida o de vuelta, en lugar de usar este tiempo para trabajar sobre los datos. Otra caracterstica de los procesadores PIC es el uso de un conjunto de instrucciones del tipo RISC (Reduced Instruction Set Computer). Con el RISC se suele ejecutar la mayora de las instrucciones con un solo pulso del clock. Con las instrucciones que se usan en otros equipos del tipo CISC (Complex Instruction Set Computer), se logra instrucciones ms poderosas, pero a costa de varios ciclos del clock. En el bien conocido procesador 68HC11 de Motorola se requieren a veces hasta 5 ciclos del clock para ejecutar una instruccin.

Figura 1

Todo sobre PICs

LOS CIRCUITOS INTEGRADOS PROGRAMABLES


Caractersticas de Algunos Procesadores PIC Para ilustrar mejor el concepto usado en los PIC, vemos en la figura 1 un esquema en bloques de los procesadores de la familia PIC 16C8X. En este esquema se observa claramente los dos tipos de bus: un data bus (arriba a la derecha) y un program bus (arriba a la izquierda hacia abajo). En este data bus vemos otra caracterstica inusitada: su capacidad es de 14 bits. Esta cifra no es divisible por 8 y por lo tanto la CPU debe considerarse como de 8 bits, pero las instrucciones usan palabras de 14 bits. Este nmero por cierto no es nico ni obligatorio: en la serie de procesadores16C5X se usan palabras de 12 bit y en la serie PIC 17CXX se usan palabras de 16 bits. Sin embargo ambos siguen siendo microcontroladores de 8 bit. En los procesadores PIC se usa slo un registro de trabajo, el registro W. Esto parece ser poco comn, pero se explica por el hecho que muchas de las operaciones que el RISC ejecuta, almacenan su resultado en la RAM o en el registro W, lo que aumenta su capacidad. Otros registros son el registro STATUS, el registro FSR (Feedback Shift Register) y el contador de programas. No existe en el PIC un registro stack (registro de pila), lo que limita el nmero de subrutinas que se pueden ejecutar. Existe sin embargo un stack de 13 bits y de 8 niveles que funciona en conjunto con el contador de programas. Una consecuencia de la arquitectura RISC es la reducida cantidad de instrucciones simples que llega slo a 35. Estas instrucciones pueden, sin embargo, combinarse para formar instrucciones ms complejas que solucionen los problemas satisfactoriamente. El set de instrucciones de un PIC se compone de slo 35 parmetr os de los cuales suelen emplearse con asidui dad solamente 15. En el Assembler suministrado por el fabricante de los procesadores PIC se usa una serie de macros que ayudan a crear un conjunto de instrucciones muy abundante. Como en todas las memorias programables, el gran secreto del xito reside en el software de la programacin que debido a la arquitectura RISC es sumamente amplio. El esquema de la figura 1 corresponde tambin a diferentes integrantes de la familia PIC, a saber: PIC 16C83, PIC 16R83 con una capacidad de 512 x 14 bits y PIC 16C84, PIC 16C84A y PIC 16R84 con 1k x 14 bits. Para superar exitosamente todos los problemas eventuales que puedan surgir en la programacin de los PICs, el fabricante provee tambin una herramienta adecuada llamada MPLAB que es un IDE (Integrated Development Envir onment = ambiente de desarr ollo integrado). integrado) En el mismo se incluye el software para un ensamblador, editor, simulador y programador, todo en un paquete dedicado. En el captulo 3 veremos cmo se usa este programa. Tenga en cuenta que si Ud. lo desea, puede obtener gratuitamente el MPLAB de la pgina WEB de Microchip o, si no puede bajarlo, puede comunicarse con el departamento de Atencin al Cliente de editorial Quark (Herrera 761/763 -1295- Capital Federal) al telfono (011) 4301-8804 o por Internet a: ateclien@vianetworks.net.ar O en nuestra pgina WEB: www.editorialquark.com.ar

Todo sobre PICs

LOS CIRCUITOS INTEGRADOS PROGRAMABLES


Algunos ejemplos del software estn disponibles en la Internet en: http//www.micr ochip.com Los socios del Club Saber Electrnica pueden adquirir sin cargo programas y aplicaciones en nuestras oficinas. Ud., como comprador de este texto, goza del mismo beneficio. Si reside lejos de Bs. As. puede solicitarlos por Internet y se los enviaremos por correo electrnico.

Figura 2

memoria de programa EEPROM de 1K x 14, un stack de hardware de 8 niveles, 13 lneas bidireccionales I/O, 3 fuentes de interrupt, temporizador de 8 bits de tiempo Algunos tipos de PIC real con un prescalador programable de 8 Un representante tpico de los PICs es el bits y una frecuencia operativa de DC a 20MHz. El integrado viene tambin en una tipo PIC 16C84, cuya base se observa en la figura 2. Se trata de un procesador con versin de montaje en superficie (surface mount). una memoria de programas EEPROM de El esquema bsico de este procesador 1k x 14. Tiene 64 bytes de memoria de datos EEPROM y 36 bytes de RAM de uso ge- surge de la figura 3 y es similar al del PIC 16C84. neral. La memoria de programa del EEUn procesador de mayor envergadura y PROM puede ser programada en serie en el circuito de aplicacin. Se dispone de 13 mayor tamao es el tipo PIC 16C74, cuyo pines de I/O con control de direccin indiFigura 3 vidual. Se dispone de 4 fuentes de interrupt interno/externo. El temporizador/contador es de 8 bits con un prescalador programable. La frecuencia de operaciones es de DC a 10MHz. El integrado viene con una base PDIP de 18 pines o SOIC. Una variante del anterior es el integrado PIC 16C61 con base similar y con una

Todo sobre PICs

LOS CIRCUITOS INTEGRADOS PROGRAMABLES


esquema interno bsico vemos en la figura 4. Este procesador posee una memoria de programa del EPROM de 4 K x 14, una RAM de uso general de192 bytes y 33 pines de I/O con direccin individual. Esta memoria es del tipo EPROM con una ventanita que deja pasar los rayos ultravioletas y por lo tanto puede borrarse con el borrador tpico de la serie 68HC 11. En este aspecto es similar a los procesadores anteriores. Se recomienda especialmente para aplicaciones en robtica. El PIC 16C74 tiene una base de 40 pines tipo PDIP o CERDIP (con ventanita) o de 44 pines tipo PLCC o QFP. Otros tipos de PIC salen al mercado con mucha frecuencia y ya se dispone de la serie PIC 12CXX con base de 8 pines y la serie PIC 17CXX de instrucciones de 16 bit que es ms potente aun. Qu utilidad tiene un Kernel de Tiempo-Real? Las tcnicas de diseo de tiempo-real permiten al "tcnico" superar problemas complicados para afrontar tareas ms simples. Estas unidades de cdigo ms simples permiten una respuesta ms rpida a eventos importantes y, a la vez, priorizan los trabajos a realizar en un formato probado y estructurado. El kernel hace el trabajo de conservar el tiempo, la armona y una comunicacin fluida entre todas las tareas. Se pueden hacer ms actividades en el mismo tiempo, ya que es posible realizar determinadas tareas mientras que otras aguardan que ocurra un evento especfico. Las tcnicas de "estado-conducido" tambin permiten cdigos ms pequeos, ya que se Figura 4 condensa ms informacin en las variables de estado y la estructura del cdigo. Un ejemplo es el cdigo de la "Alar ma Remota" del PIC16C54.

Qu significa que el Kernel es Multitarea? Significa que es posible "atender" varias tareas al mismo tiempo (en apariencia). Cada tarea cree que es la propietaria de la CPU, pero esta

Todo sobre PICs

LOS CIRCUITOS INTEGRADOS PROGRAMABLES


apariencia es controlada por el kernel. Slo se puede ejecutar una tarea a la vez, pero otras tareas no bloqueadas pueden estar operando mientras se est ejecutando una determinada. Para que sea "Multi tar eas" se ensamblan interrupciones, eventos, comunicaciones, datos compartidos y debe existir sincronismo para realizar un trabajo. La Pr ogramacin de T iempoReal es un conjunto de ideas, conceptos y tcnicas que permiten dividir problemas en unidades de cdigo basadas en unidades de tiempo, o eventos que conducen una tarea de un estado a otro. plo del PIC16C54 (vea el captulo 5). Esta variable cambia cada vez que el ESTADO cambia para la Tarea que est fuera de la Serie. Para coordinar diferentes tareas que intentan controlar una seccin crtica se usan dos tcnicas: "Semfor os (banderi tas) e Interrupciones Inhabilitadas". En el ejemplo del PIC16C54 (que veremos en el captulo 5) la Tarea #4 est dedicada a una alimentacin apropiada del Recurso fuera de Serie compartido. Advierta el uso del semforo binario "OEstado_B" para controlar la Tarea #4, la Tarea #1 y la variable xmt_byte. En el ejemplo del PIC16C64 hay muchas ms secciones crticas debido al uso de interrupciones. Hemos inhabilitado estas interrupciones por perodos de tiempo muy breves para proteger estas reas. Tambin en este ejemplo todas las secciones crticas estn finalizadas antes de la revisin que se hace para constatar si el kernel o entorno desea que se comience a ejecutar otra tarea en lugar de la tarea actual. Ms adelante ofreceremos ms detalles sobre cmo proteger las secciones crticas. En la figura 5 se da un diagrama de transicin de "tar ea / pr oceso de esta do". do"

Seccin Crtica

Una seccin crtica es una estructura de datos compartidos, un recurso compartido, una seccin de tiempo crtico de cdigo, o una seccin no-reentrante de cdigo que slo puede tener un "dueo" que pueda ver, cambiar o usar esta seccin en cualquier tiempo especfico. Estas secciones no deben ser interrumpidas durante el proceso de actualizacin. Deben ser protegidas para que no puedan acceder a ellas otras tareas que cambien los indicadores o los datos o modifiquen el hardware al mismo tiempo. Si dos tareas acceden a una seccin crtica al mismo tiempo, los datos cambiarn a tal Recursos Compartidos punto que se originar un "soberano de sastr e". Las estructuras de datos, las pantallas, el Cuando realice una aplicacin debe hardware I/O, y las rutinas no-reentrantes asegurarse que las secciones crticas sean pequeas, y que tengan tiempo para que sean "atendidas" las interrupciones pendientes. Los programadores RT tendrn muchos problemas si no comprenden las secciones crticas. Aun sin interrupciones, debe proteger las variables que cambian fuera de tiempo, como la variable de byte Figura 5 conformado xmt_byte, usada en el ejem-

10

Todo sobre PICs

LOS CIRCUITOS INTEGRADOS PROGRAMABLES


son ejemplos de recursos. Si dos o ms tareas usan estos recursos, entonces se llamarn Recursos Compartidos y deber protegerlos de posibles corrupciones. Slo pueden tener un dueo, una manera de indicarle a las otras tareas que deben esperar, y posiblemente una lista de espera para futuros usuarios del recurso. Un ejemplo raro de recurso compartido sucede en una secuencia de sincronizacin crtica de operaciones de entrada y salida para controlar un hardware determinado. Debe inhabilitar las interrupciones antes de comenzar esta secuencia, y rehabilitarlas luego de su finalizacin. Advierta en el ejemplo del PIC16C64 cmo la Tarea #1 funciona como una rutina "no-r eentrante" que debe ser finalizada por su poseedor actual antes de que otra tarea pueda usarla. cepto similar, y conserva la cantidad de registros guardados por cada tarea que se va cumpliendo. Usamos un viejo concepto llamado "de donde pr ovengo". La variaovengo" ble "FROM" se usa para indicarle al director que debe iniciar la tarea donde se interrumpi. Esto se debe a que no se puede manejar la acumulacin en la familia PIC16CXXX. Por esta razn tambin tenemos un kernel "Semi-Prioritario" en el PIC16C64. Cuanto ms rpida sea la interrupcin de contexto, mejor ser su operacin.

CMO PENSAR UN PROGRAMA: Planificador

El planificador (usamos este trmino para familizarizar al principiante con las diferentes tareas que se realizan) es la parte de un kernel que decide cul es la siguienInterrupcin de te tarea a ejecutarse. En esta seccin nos Contexto/Interrupcin de Tarea referiremos a distintos tipos comunes de planificadores. Es aqu donde se realiza la Cuando una tarea se hace cargo de otra tarea, los valores actuales de los regis- planificacin antes de iniciar la constructros de la CPU para la tarea en ejecucin cin de un nuevo dispositivo. Al comprender los diferentes tipos de sern guardados y los viejos registros guarplanificadores, y sus caractersticas y prodados para la nueva tarea sern realmacenados. La nueva tarea contina donde blemas especficos, podr saber cul es el fue recogida. Todo esto lo realiza la parte que ms se ajusta a sus necesidades. En el ejemplo del PIC16C54 se muestra la anula"Interrupcin de Contexto del Kernel de Tiempo-Real". Usualmente cada tarea tie- cin de las Tareas #1-3 justo antes de la ejecucin de una larga secuencia del cne una "rea de almacenaje para intedigo. rrupcin de contexto". Se pueden implementar otras tcnicas Cada SP de una tarea (Indicador de Acumulacin que indica su propia acumu- ms creativas, pero asegrese de permitir que todas las tareas se ejecuten a su debilacin) se guarda all junto con todos los do tiempo. otros registros importantes guardados. El Vea en la Figura 5 cmo cada tarea ejemplo de la "Alar ma Remota" no necesita usar una interrupcin de contexto por- debe estar en "Estado Pr eparado" o "Es tado en Ejecucin" para que pueda ser que todos sus registros importantes son Ejecucin considerada por el planificador a fin de adecuadamente liberados antes de la fique tenga el control temporario de la sinalizacin de cada tarea. guiente CPU. El ejemplo del PIC16C64 usa un con-

Todo sobre PICs

11

LOS CIRCUITOS INTEGRADOS PROGRAMABLES


del TIMER0 es la pulsacin central en el ejemplo del PIC16C64. Debe tener una inEl Kernel No-Prioritario tambin es llama- terrupcin de reloj para activar un verdado "Ker nel Cooperativo", ya que con su dero Kernel Prioritario. Cooperativo" uso las tareas slo abandonan el control cuando necesitan estar en coordinacin con otras tareas y eventos. Planificador en Rueda La "Alarma Remota" usa un Kernel NoPrioritario, as demuestra que a pesar de Cuando el planificador encuentra taser un tipo de kernel simple, se pueden ha- reas que tienen las mismas prioridades en cer muchas cosas con l. El tipo de Kernel la fila de "preparadas", usa una tcnica llaNo-Prioritario es adecuado para los mada Planificacin en Rueda para aseguPIC16C5Xs de tipo "no-interrupcin". rarse que se cumplan todas las tareas. Esta La pulsacin central del ejemplo del tcnica requiere mucho cuidado, y es una PIC16C54 es el contador TMR0 interno que de las ms creativas que puede usar su atraviesa de un valor alto a uno bajo del planificador para ajustarse a sus necesidacontador. des. Use el preescalmetro para ajustar las En el ejemplo del PIC16C54, todas las unidades de tiempo. Las tareas muy rpitareas estn programadas para ejecutarse das leen de continuo y directamente el apenas despus de su tiempo asignado. TMR0 en comparacin con el delta de Esto implica que ninguna tarea dominatiempo necesario para ver si se enciende. r a las otras bajo este abordaje simple. En los viejos tiempos de los sistemas Operativos de Tiempo-Real, este trmino se usaba Entorno Prioritario para designar "particin de tiempo". Los tiempo" actuales Kernels Prioritarios, con sus esqueEn un Kernel Prioritario, una tarea en mas de prioridad y sus capacidades de ejecucin puede ser permutada para que comunicacin entre tareas, implican un otra tarea prioritaria ms importante se desarrollo en este sentido. ejecute en su lugar. El Kernel Prioritario se basa ms en las interrupciones que en su fuerza de conduccin. La interrupcin de Prioritario vs. No-Prioritario contexto se enecuentra en el centro de este tipo de Kernel. El Kernel Prioritario es ms difcil de dePara implementar un verdadero Kernel sarrollar, pero ms fcil de usar, a pesar de Prioritario, debe ser capaz de manejar su que suele utilizarse de manera incorrecta. acumulacin. Esta es la causa por la cual Le llevar ms tiempo configurar el Kernel implementamos un kernel "Semi-Prioritario" No-Prioritario pero es mejor para los microen el PIC16C64, con las mejores caracters- controladores ms contrados. Con el Noticas de ambos tipos de kernels. Prioritario obtendr un mejor tiempo de En el ejemplo del PIC16C54 se trasladan respuesta entre una causa y la respuesta algunas tareas a las ISRs para manejar las para este evento. I/Os. Esta tcnica opera muy bien, ya que El Kernel Prioritario es ms predecible en las ISRs suelen ser muy breves, y realizan la sus tiempos de respuesta, y puede ser calmayor parte del trabajo. La interrupcin culado al tiempo mximo para completar Entorno No-Prioritario

12

Todo sobre PICs

LOS CIRCUITOS INTEGRADOS PROGRAMABLES


un trabajo determinado. El Kernel Prioritario es ms caro. nes y otras situaciones complejas que pueden surgir de una mala comprensin de los problemas y las tcnicas de TiempoReal. Si llega a necesitar prioridades dinmicas, deber revisar cmo dividi el problema, y hacer subdivisiones hasta incluir los recursos en cuestin bajo un "semfo r o o banderita". Tambin podra dividirlo banderita" ms para tener ms tareas que no necesiten dos o ms recursos para completar su trabajo, y mejorar la comunicacin entre las tareas nuevas. Con respecto a las tareas dinmicas, debera definir el problema de tal forma que sepa, al comienzo de la codificacin, el uso continuo de todas las tareas. Necesitar ms tiempo en la etapa de planificacin para establecer una buena comunicacin entre las tareas, pero es un buen mtodo para mantener las tareas y prioridades dinmicas fuera del diseo del kernel. La Inversin de Prioridad es un truco usado para manejar un sistema mal diseado, que invierte las prioridades de modo que permite la ejecucin de las tareas ms bajas que pudieran estar bloqueadas. Este es un truco muy barato, y no debiera considerarse en el diseo de un Kernel de Tiempo-Real. Use las otras tcnicas descriptas en esta seccin para solucionar este tipo de problema.

Reentradas En un Kernel Prioritario, dos o ms tareas pueden pretender la utilizacin de una misma subrutina. El problema es que no se puede controlar cundo se remueve una tarea para que otra tome su lugar. Cuando una subrutina usa slo variables locales o almacenadas en las acumulaciones de cada tarea, este proceso se denomina reentrada o "rutina pura". En una rutina pura no se pueden usar variables o hardware globales. Este requerimiento de la reentrada conduce a considerar toda la subrutina como una seccin crtica.

Prioridad de Tarea Todas las tareas no se crean de la misma manera. Ciertos trabajos deben realizarse a tiempo para que no se pierdan determinados datos. Por lo tanto, debe seleccionar segn este criterio cules son las tareas de mayor prioridad para hacer una escala de mayor a menor. Algunos kernels hacen que la prioridad de cada tarea sea diferente. La determinacin de la prioridad requiere una cuidadosa planificacin antes de la codificacin del trabajo de diseo.

Semforos (banderitas) Hay bsicamente dos tipos de semforos: binario y contador. El semforo binacontador rio permite nicamente un usuario, y todas las tareas que desean acceder a l debern esperar. El semforo contador tiene una lista de usuarios que necesitan acceso. Los semforos se pueden usar de muchas maneras. Puede implementar semforos contadores con semforos binarios.

Inversiones de Prioridad y Prioridades Estticas vs. Dinmicas Para los kernels de Tiempo-Real ms complicados, se usan tareas y prioridades estticas. Algunas veces se usan prioridades dinmicas para solucionar detencio-

Todo sobre PICs

13

LOS CIRCUITOS INTEGRADOS PROGRAMABLES


fundamentales de la programacin de Tiempo-Real. La Exclusin mutua es un mtodo para Una vez que construya un semforo biexcluir tareas a partir de la ganancia del nario para su kernel, podr construir semacceso a secciones crticas. La Exclusin foros ms complejos para sincronizar lo mutua es el proceso de excluir otras tareas que desee. del acceso a recursos compartidos. La En el ejemplo del PIC16C54 se excluyecreacin de un semforo es un proceso ron datos de distintas fuentes del Recurso muy complicado. de Puerto Serie. La Tarea #4 sincroniza las Su construccin debe ser atmica. Esto otras tareas para enviar afuera los datos y implica que luego de iniciarse el proceso, se sincroniza con la Tarea #1 para cumplirno puede ser interrumpido hasta que haya la. Cuando la Tarea #1 est en ejecucin, guardado el nombre del nuevo usuario. la Tarea #4 no podr ejecutarse hasta que Desde este punto en adelante, sabe que la Tarea #1 est preparada para enviar nadie podr desalojar y cambiar a los po- ms datos afuera. seedores (usuarios). En el ejemplo del PIC16C54 se implementa un semforo binario usando bits y funciones del kernel Comunicacin entre Tareas para excluir mutuamente el acceso. En los kernels ms grandes se pueden incluir mtodos de comunicacin ms Detencin complejos para intercambiar datos entre tareas. La mayor parte de la comunicaLa detencin es una condicin en la cin se realiza dentro del kernel. Se requiecual dos o ms tareas tienen recursos que re mucho ms espacio y velocidad de ejeotras tareas necesitan para completar su cucin para implementar estos mtodos asignacin, y stas no liberan sus propios en un sistema operativo. recursos a menos que las primeras tareas no los liberen primero. Esto se llama falta de cooperacin. Vea el tratamiento de Seales de Evento cooperacin estos problemas y las distintas maneras de solucionarlos en la seccin "Inversiones Normalmente se implementan bits simde Prioridad y Prioridades Estticas vs. ples en dos estados (on y off) como SeaDinmicas". les de Evento. Se puede almacenar ms Dinmicas" Estos problemas surgen por la falta de informacin por cada Seal de Evento de comprensin del problema original. acuerdo al tiempo en que fue grabada, quin la grab, a quin pertenece el evento y cuales fueron los datos perdidos. Sincronizacin Los semforos pueden usarse para sincronizar tareas con el propsito de que se intercambien mensajes. Los semforos tambin pueden iniciar tareas, detenerlas o comenzarlas juntas. Son los elementos Casillas de Correo para Mensajes Esta es una caracterstica til si tiene espacio RAM. Las casillas de correo le permiten al diseador intercambiar mensajes Exclusin Mutua

14

Todo sobre PICs

LOS CIRCUITOS INTEGRADOS PROGRAMABLES


entre tareas, revisar los mensajes cuando la tarea est preparada y responderle al remitente que el mensaje ha sido recibido. Se puede enviar un mensaje a varias tareas al mismo tiempo. Recuperacin, Respuesta y Estado latente de Interrupcin

Colas de Mensaje Esta caracterstica tambin es muy buena si tiene tiempo de ejecucin y RAM para implementarla. Las colas estn relacionadas con las Casillas de Correo. Pueden guardar distintos mensajes, aun despus de su lectura, para procesarlos ms tarde. Tambin puede operar en los mensajes de mayor prioridad antes de manejar el resto. Puede crear varias opciones con las Casillas de Correo y las Colas.

Interrupciones

Las interrupciones son uno de los mejores "inventos" para solucionar problemas de Tiempo-Real. Con ellas puede obtener una respuesta muy rpida a sus necesidades y retornar a lo que estaba haciendo. El nico problema es que pueden ocurrir en los peores momentos. Esto implica que deber aprender a activarlas y desactivarlas para proteger sus secciones crticas. Advierta que antes de manejar una interrupcin, deber guardar todos los registros importantes para que pueda restaurarlos a fin de que el kernel pueda reiniciar la tarea donde fue interrumpida. Este proceso se asemeja a la interrupcin de contexto, pero en estas interrupciones (interrupts), siempre deber guardar y restauTiempo de Procesamiento ISR rar. En el ejemplo del PIC16C64, los registros Status, W y FSR se guardaron en RAM El Tiempo de Procesamiento ISR (Rutina debido a la interrupcin. El registro PC fue de Servicio de Interrupcin) se define coguardado en la acumulacin por el hard- mo el tiempo en el cual una ISR controla la ware. CPU. El tiempo debiera ser breve, y si ne-

El Estado latente de Interrupcin se define como el perodo de tiempo ms largo en el que las interrupciones son desactivadas, ms el tiempo que le lleva a la ISR iniciar su ejecucin. Para un sistema No-Prioritario, el Tiempo de Respuesta de Interrupcin se define como Estado latente de Interrupcin ms el "tiempo de guar dado del contexto". contexto" Para un sistema Prioritario, debe agregar el tiempo de ejecucin en el cual el kernel graba la interrupcin. Para un sistema NoPrioritario, el Tiempo de Recuperacin de Interrupcin se define como el tiempo que lleva restaurar el contexto guardado ms el reinicio de la tarea interrumpida. Para un sistema Prioritario, la Recuperacin es similar a la del sistema No-Prioritario ms el tiempo que le lleva al kernel en el planificador la decisin de cual ser la siguiente tarea a ejecutarse. Estas mediciones sirven para comparar la mayora de los kernels. El ejemplo del PIC16C64 cumple bien con estas medidas. Esto se debe a que los procesadores PIC16CXXX en general tienen sistemas No-Prioritarios. La desactivacin de las interrupciones debe hacerse en el menor tiempo posible en cualquier kernel o tarea que escriba. Deber quebrar largas secuencias de instrucciones para permitir que se ejecuten las interrupciones en espera.

Todo sobre PICs

15

LOS CIRCUITOS INTEGRADOS PROGRAMABLES


cesitara realizar un procesamiento extenso en una ISR, debera quebrar la ISR. La nueva ISR almacenar los datos nuevos y el retorno. Luego debera crear una nueva tarea y trasladar el cdigo extra de la vieja ISR a la nueva tarea. Recuerde que cuanto ms tiempo le demande una interrupcin, ms tiempo tardar en responder a otra interrupcin apremiante. El "alojamiento de interrupciones" es el espacio donde una interrupcin de alta prioridad puede interrumpir a otra de prioridad ms baja. Debe ser cuidadoso al hacer esta operacin, ya que distintas interrupciones tambin pueden tener secciones crticas, y debiera desactivar interrupciones para proteger estas secciones. Muchos microcontroladores no tienen este alojamiento de interrupciones, entre ellos la familia PIC16CXXX. central del sistema. Es la forma en la que el Kernel controla el tiempo (relativo y absoluto). Tambin determina cmo el Kernel se reinicia para ver si ha finalizado una demora, a fin de que la tarea pueda ser trasladada al estado preparado. En nuestros ejemplos se us el reloj Timer 0. Debe tener una interrupcin de reloj para crear un verdadero Kernel Prioritario. Esta es otra razn por la cual implementamos un Kernel No-Prioritario en el PIC16C54, ya que no tiene interrupcin de reloj.

Ejemplo de Uso del Entorno (Kernel)

Esta es la seccin principal de este captulo. Aqu explicaremos detalladamente cmo la gente de Microchip ha llevado a la prctica los conceptos descriptos hasta ahora para construir una Alarma Remota. Interrupciones No-Ocultables Cabe aclarar que en el captul 5 se desarrolla completamente cada una de las En algunos microprocesadores, como tar eas programadas en el PIC, se da, en los de la familia PICmicro, puede actiadems, el cdigo de programacin covar y desactivar interrupciones selecciona- rrespondiente. das. Esta es una herramienta muy til para Daremos algunas ideas sobre cmo excontrolar la corriente de datos dentro y pandir los ejemplos y cul es su verdadero fuera del sistema. Algunos sistemas tienen alcance y velocidad. Interrupciones No-Ocultables (enmascaraLa aplicacin "Alar ma Remota" tiene bles). En este caso no las puede desactivarias caractersticas interesantes. Su funvar mediante un ocultamiento de softwa- cionamiento se basa en tener tantas filas re. Estas NMIs (abreviatura de Interrupcio- de unidades como un rbol que, alimennes No-Enmascarables) se usan como con- tado desde el nivel ms bajo, une los nivetraseas de reloj, para evitar problemas les de cada una de sus ramas ms grancon las secciones crticas de una interrup- des en un punto central. cin que no pueda desactivar. La familia Cada unidad puede detectar los camPIC16CXXX no tiene NMIs. Estas interrupcio- bios de estado realizados antes de que un nes no son tan tiles como las ocultables. intruso apague o corrompa la unidad. Si se corta cualquiera de los cables de potencia conectados al rbol, la falta de estaContrasea de Reloj dos y contraseas ser advertida en cinco segundos e informada a la lnea. La dos lLa Contrasea de Reloj es la pulsacin neas de Entrada Series por unidad reciben

16

Todo sobre PICs

LOS CIRCUITOS INTEGRADOS PROGRAMABLES


el estado y las contraseas de sus dos ramas ms grandes, revisan los datos y transmiten la informacin a la lnea por su propia lnea de Salida Serie. Las siete lneas de estado de entrada se relanzan en estos ejemplos que muestran esta tcnica. El LED de cada unidad informa el estado en el nodo de acuerdo a la importancia de sus propias siete lneas de estado de entrada y el estado que fluye en la lnea. La indicacin del nivel suministrada por el LED contina hacia el nivel ms alto hasta que se recibe un reset en la lnea "Estado Reset", o luego de que transcuReset" rran cinco minutos sin actividad nueva en las siete lneas de estado de entrada. Cuando ocurre alguno de estos dos eventos, se ajusta el nivel de salida del LED al nivel actual de la entrada. Otro uso de Sistema Incrustado de este tipo de aplicacin ("Alarma Remota") es colocar la unidad en la parte exterior de una caja fuerte. Se espera que el intruso sea detectado antes de arribar a la unidad. La corriente continua de estado y contraseas a la unidad ms grande del interior debera impedir cualquier hurto simple. que manejar entradas Series. Este ejemplo opera con una frecuencia de 4MHz. Aumentando simplemente la velocidad del cristal a 8MHz, los dos promedios Baud Seriales (series) de la entrada Asincrnica se incrementarn de 4.800 a 9.600 baud. El promedio baud de la Salida Serial aumentar de 9.600 a 19.200 baud. El aumento de la velocidad del cristal a 16MHz, llevar los promedios baud de las dos entradas independientes Asincrnicas a 19.200 baud, y el promedio baud de la salida Serial Asincrnica a 38.400 baud. Se pueden alcanzar otros promedios (Baud) a otras velocidades de cristal ajustando las constantes en el cdigo para las rutinas Seriales. Debe usar una configuracin de cristal estable. NO use una combinacin RC para ejecutar estos ejemplos. Ahora haremos una rpida descripcin del cdigo para el PIC16C54. En la figura 6 se brinda un diagrama esquemtico del PIC 16C54 empleado como alarma remota. Los renglones 1-85 del cdigo son los componentes para las ecuaciones de este programa. Los renglones 88-95 son simples tablas

"Alarma Remota" Este ejemplo intenta explicar una aplicacin verdadera y mostrar algunos conceptos y caractersticas nuevas. Se ha quitado una parte del cdigo especfico de aplicacin para mostrar ms claramente las posibilidades de un Sistema Operativo de Tiempo-Real usando la familia PICmicro. Decidimos que el promedio Baud para la salida Serie tenga el doble de velocidad de las dos entradas Series, ya que es ms difcil alcanzar una Salida Serie precisa

Figura 6

Todo sobre PICs

17

LOS CIRCUITOS INTEGRADOS PROGRAMABLES


de salto para guardar algunos de los valiosos "primeros 256 bytes" de cada pgina. En los renglones 97-159 se encuentran las Rutinas de Salida Seriales (Tarea #1). Las subrutinas de la Tarea #7 comienzan en el rengln 160 y continan hasta el 277. En esta seccin, la salida del LED est controlada. La subrutina QCheck_T123, que ocupa los renglones 278-301, se usa para revisar si las Tareas #1-3 estn preparadas para ejecutarse antes de la ejecucin de una extensa seccin del cdigo en una tarea ms lenta. Esta es una manera creativa mediante la cual el Planificador del Kernel se asegura que las tareas de mayor prioridad accedan al servicio antes de la ejecucin de otras tareas menos importantes. La Tarea #2 se inicia en el rengln 302. Esta tarea lee la Entrada Serial #1 para obtener datos Asincrnicos, y puede describirse como una Mquina de Estado para producir un byte serialmente. La Tarea #3 interrumpe el cdigo de la Tarea #2 en el rengln 333 y contina hasta el 362. Esta tarea tambin lee la Entrada Serial pero en la entrada #2. Las subrutinas de esta tarea (Tarea 2) comienzan en el rengln 363 y continan hasta el 423. Las subrutinas de la Tarea #3 comienzan en el rengln 424 y continan hasta el 484. El cdigo principal o de inicio comienza en el rengln 485. Desde este rengln hasta el 515, se inicializan todas las variables y las tareas. La Intercalacin Principal (Loop) se inicia en el rengln 516 y finaliza en el 665. En este punto se lleva a cabo la verdadera accin. Cada tarea revisa el tiempo para ver si las condiciones para la ejecucin son las correctas. Las tareas no Bloqueadas que tengan un trabajo para hacer estarn en un Estado Preparado. En la Intercalacin Principal, revisamos el estado actual de cada tarea para asignarle prioridad (de 1 a 9). Si estamos preparados, hacemos una simple Interrupcin de Tarea y colocamos la tarea en Estado de Ejecucin. Aqu se producen algunos cambios en la unidad de tiempo. Las Tareas #1-4 usan 2ms como una base de tiempo para leer directamente TMR0. En los renglones 562-575 se produce un cambio de unidad de tiempo de 512ms por unidad para las Tareas #5-6. Luego se produce otro cambio para las Tareas #7-9 de 131072ms por unidad. Entre las Tareas #5-9, cada tarea cuenta las unidades de tiempo y las comparan con sus estndares para la activacin o actividad. La Tarea #4 comienza en el rengln 538 y finaliza en el 561. Esta Tarea controla la alimentacin de la Tarea #1 desde otras tareas que intenten producir datos. Usa varios Semforos para asegurarse que la Tarea #1 no sea perturbada hasta que est preparada para otro byte. La Tarea #5 maneja la Lnea de Reset de Nivel, y siempre est en ejecucin. Simplemente resetea el estado del LED para que sea recalculado en la Tarea #6. La Tarea #5 se ejecuta entre los renglones 576-581, y es muy breve. La Tarea #6 ocupa los renglones 582611. Aqu relanzamos las siete lneas de entradas sensoras, dejando el estndard actual en la variable "Old_RB". La Tarea #6 pide Seales a la Tarea #4 para producir el estndar actual fuera del pin Serial. El cdigo principal de la Tarea #7 abarca los renglones 621-628. La Tarea #8 es una falta de cinco segundos del cronmetro de actividad, y ocurre entre los renglones 629-645. Si no se reciben datos de ninguna de las dos lneas seriales de entrada, entonces las Seales de la Tarea #8 le indican a la Tarea #4 que debe enviar un byte especial que luego ser producido por la Tarea #1. Estas Sea-

18

Todo sobre PICs

LOS CIRCUITOS INTEGRADOS PROGRAMABLES


Los renglones 21-24 son un experimento para asociar un nombre simple a un bit simple. Esto permite que las asignaciones se puedan modificar con mayor facilidad. Los renglones 30-54 son las asignaciones de variables. Las variables (renglones 35-39) se usan como contadores de tiempo. Cuentan la cantidad de unidades de tiempo, y las comparan a literales para revisar si se produjo un Evento. Los bits definidos en los renglones 57-64 se usan como Semforos Binarios. Resguardan las Secciones Crticas de datos protegidos. Nota: Ms adelante entrarn en accin en el En el captulo 5 se describen ms deta- cdigo. lladamente qu es lo que hace cada parLos bits definidos en los renglones 67-73 te del cdigo, por qu y cmo ejecutan son seales de error. Definen los estados sus acciones particulares. actuales o de ltimo error de las rutinas SeA modo de ejemplo explicamos a conti- riales, y cules datos se perdieron adentro nuacin qu hacen los datos expresa- o afuera. dos en los renglones 1-87 del segmento de La seccin de ecuaciones de los rencdigo. glones 76-85 se usa para definir la actividad diferente del LED. La Tarea #7 las usa El rengln 4 le indica al ensamblador para mantener el LED titilando. (assembler) MPASM cul es el PICmicro En los renglones 89-94 tratamos de que est usando. guardar todos los primeros 256 bytes imEl archivo incluido PICREG.H contina portantes de todas las pginas. con las ecuaciones y las asignaciones paEn el proyecto se detalla la funcin que ra que el cdigo sea ms legible y modifi- realiza cada tarea y se da el listado comcable. Debera usar ecuaciones que rela- pleto de los cdigos de programacin que cionen smbolos mutuamente. constituyen el kernel que nos ser de utiLas Constantes -renglones 10-12- son los lidad para la confeccin de futuros provalores que cambiarn a diferentes proyectos. medios Baud. Cabe aclarar que en la revista contiRepresentan los Tiempos de Bit para nuaremos publicando mensualmente difepromedios Baud divididos por 2 menos un rentes proyectos con PICs para que se fafactor de estado latente. miliarice con su uso y aprenda a dominar Deber ajustar el "Factor Fudge (embus- esta tcnica que, si bien tiene ms de 20 te)" y otros valores para sintonizar mejor el aos, se est popularizando recin ahora rendimiento. El valor usado para el "Factor dado el bajo costo de los componentes y Fudge" est relacionado con la va ms la facilidad de implementacin de circuilarga del cdigo. tos. les le indican a la "Alarma Remota" la falta de comunicacin entre sus unidades. La Tarea #9 es la ltima. Es una falta de cinco minutos de Errores Severos desde el Cronmetro de Reset Sensor, y comprende los renglones 646-663. La subrutina Do_D_H_E_L comienza en el rengln 667 y contina hasta el 692. Esta rutina determina el Nivel de Error ms Alto y traslada el estado actual de la Tarea #7 a la salida del LED. Entre los renglones 693-703 se despejan los registros #7-1 Fh. El cdigo "salto en Encendido" ocupa los ltimos renglones 705-706.

Todo sobre PICs

19

LOS CIRCUITOS INTEGRADOS PROGRAMABLES


Microprocesadores y Microcontroladores En la literatura tcnica es comn confundir estos trminos, sin embargo tienen diferentes significados. Un microprocesador es solamente la unidad central de procesos o CPU, la memoria, los puertos y todos los dems perifricos son exteriores. La programacin de un microprocesador es, por lo tanto, una tarea compleja porque deben controlarse todos estos dispositivos externos. Un microcontrolador integra la CPU y todos los perifricos en un mismo chip. El programador se desentiende de una gran cantidad de dispositivos y se concentra en el programa de trabajo. En esta obra estudiamos a los microcontroladores PIC cuya arquitectura interna puede observarse en la figura 7.

Figura 7

Una de las patas del puerto A puede ser utilizada como entrada de interrupciones (recuerde que esta pata especial hace que el microprocesador deje de realizar la tarea que estaba ejecutando y pase a realizar otra tarea alternativa; cuando la termina vuelve a su programa original). Analicemos el bloque ms grande, en ste observamos un grupo de bloques dedicados a mejorar el funcionamiento pero sin influir directamente en el flujo de seales. Vemos un temporizador de encendido, un temporizador de arranque del oscilador Estructura Interna del PIC16C84 de CLOCK, un circuito de reset y un circuiNo hace falta conocer al detalle el fun- to llamado de vigilancia o WATCHDOG. TCHDOG cionamiento interno del PIC, pero vamos a Los dos primeros bloques procuran un arranque ordenado para no producir una indicar en grandes rasgos para qu sirve carga al mismo tiempo sobre la fuente. cada bloque. Por ltimo, existe un circuito con un Observe primero los bloques externos. Existe un cristal que se conecta en OSC1 y nombre curioso, si el lector sabe algo de OSC2 para generar el CLOCK del sistema. ingls habr traducido el nombre literalmente como perr o guar din. Su funLuego una seal de entrada llamada din MCLR negada, que es un nombre de fan- cin es estar vigilante el mximo de tiemtasa para nuestro conocido RESET (debido po que tarda el microprocesador en coma que esa pata tiene un doble uso) y, por pletar su programa (o mejor sera decir, la ltimo, dos puertos paralelos de I/O (entra- derivacin ms larga de su programa) y da o salida) llamados puerto A y puerto B. en caso de superarse ese tiempo, provo-

20

Todo sobre PICs

LOS CIRCUITOS INTEGRADOS PROGRAMABLES


car un reset automtico porque el microprocesador se qued trabado en alguna parte de su programa. Tambin se dice que el microprocesador se qued colgado o congelado. Este bloque de circuitos no trabaja independientemente sino que requiere conexiones al exterior y al interior del dispositivo. Por ejemplo, no siempre son utilizados y es el programa quien determina su utilizacin y adems ajusta sus parmetros. Esto se realiza a travs del bloque de control o decodificador de instrucFigura 8 ciones. Analicemos ahora la seccin de arriba a la izquierda en donde observamos nmero de instruccin qued guardado la memoria de programa, el contador de en uno de los registros de la pila. Es comn programa, el registro de instrucciones y la que un loop tenga, a su vez, un loop secundario y cuando se ejecuta ese loop sepila o STACK de 8 niveles. Cuando hablamos de registros nos refe- cundario se debe volver al mismo punto del loop primario, eso se consigue con rimos a pequeas unidades de memoria guardar ese nmero de instruccin del transistoria, construida por lo general con un registro de desplazamiento. Son memo- loop secundario en otro registro de la pila (figura 8). rias voltiles que se utilizan para guardar Analicemos ahora la seccin inferior deinformacin por un tiempo mnimo, con el fin de realizar una operacin compleja de recha. En ese sector se ubican los bloques responsables de efectuar operaciones mavarios pasos. temticas y lgicas binarias; recordemos El contador de programa es el responque el nombre ALU proviene de Aritmetic sable de que el microprocesador vaya Logic Unite (unidad arimtica y lgi analizando las instrucciones en orden asca). cendente. Este guarda el nmero de insca) En este sector es imprescindible utilizar truccin en el STACK y la instruccin misma un registro ya que una operacin aritmtila pasa registro de instrucciones desde donde se enva al resto del microprocesa- ca o lgica siempre se efecta entre dos nmeros. Los nmeros binarios que deben dor. El STACK es, en realidad, una pila de re- procesarse se toman de la memoria de gistros (en nuestro ejemplo hay 8), debido datos, el primero se acumula en el registro a que el programa puede tener derivacio- de trabajo o registro W (de Work = trabajo) nes (en la jerga LOOPS, rulos o subprogra- el segundo es el presente en el instante en que se invoca la memoria de datos. mas). Cuando se termina de ejecutar un Como las operaciones pueden ser enloop se debe volver al mismo punto del cadenadas (cuando el resultado sirve coprograma en donde se haba producido la bifurcacin y eso es posible porque ese mo operando de la siguiente operacin,

Todo sobre PICs

21

LOS CIRCUITOS INTEGRADOS PROGRAMABLES


tal como el caso de un producto) el registro W tiene un retorno a la ALU. La ALU est comandada por el bloque MUX (MUltipleXador). En efecto, la ALU requiere que se le enven nmeros para procesar que le lleguen desde la memoria de datos, pero antes se la debe predisponer para que efecte la operacin requerida (comparacin, rotacin de dgitos, etc.). El registro de estado o estatus colabora durante las operaciones matemticas. Piense cmo opera Ud. para realizar una resta: primero ubica el primer nmero, luego el segundo y despus comienza a analizar los bits menos significativos (las unidades), pero si el nmero de arriba es menor que el nmero de abajo, entonces toma prestado de la columna de las decenas, luego debe recordar esto porque el nmero de arriba en la columna de las decenas se redujo en una unidad. En realidad, aunque se trate de una operacin entre dos nmeros su ejecucin requiere guardar lo que se llama acarreo en otro registro y ste no es otra cosa ms que el registro STATUS. El PIC16C84 contiene adems de todo lo visto una memoria RAM de registros que puede ser llamada desde el registro de instruccin a travs de un multiplexador de direcciones. Esta seccin del microprocesador ser analizada ms adelante porque slo se utiliza en desarrollos avanzados.*****

22

Todo sobre PICs

Cmo Programar un PIC


Introduccin En la actualidad es muy fcil construir productos electrnicos con bajo costo, espacio reducido y con caractersticas multifuncionales; de hecho, son muchos los circuitos decodificadores de seales de TV construidos con pequeos controladores programables integrados que contienen programas sencillos. En este captulo, explicaremos cmo se programa un PIC con la ayuda de una computadora, sin que para ello se necesiten complicados circuitos adicionales. Tambin daremos las direcciones de Internet para recabar informacin sobre la forma de "leer" el programa contenido en un PIC y la forma de obtener prestaciones especiales. En la creacin y diseo de un nuevo producto electrnico, la tendencia actual es tratar de respetar los trminos descriptivos "bajos costos", "ultra-compacto" y "multifuncional". Lograr un producto con todas estas caractersticas era sumamente difcil. Afortunadamente, en los ltimos aos, disear un producto con esos atributos se ha tornado ms fcil gracias al desarrollo de dispositivos programables como la familia de microcontroladores PIC de Tecnologas Microchip.

funcionales; de hecho, son muchos los circuitos decodificadores de seales de TV construidos con pequeos controladores programables integrados que contienen programas sencillos. Nuestro objetivo es que pueda programar un PIC con la ayuda de una computadora, sin que para ello se necesiten complicados circuitos adicionales. Se necesita un dispositivo de programacin para incorporar el software de los chips que venimos describiendo desde hace varios nmeros (nos referimos a los PICs). El costo de un dispositivo de estas caractersticas suele ser muy alto, razn por la cual el lector le "huye" al diseo de sistemas electrnicos con estos componentes. Obviamente, el programador PIC presentado en este libro necesita algunos componentes accesorios para ser construido pero resulta una solucin ideal para quienes poseen computadora o puedan emplear la de un amigo o tcnico conocido. El rasgo ms importante de esta unidad es que no necesita partes especializadas y es un circuito muy simple. Luego de armado se lo conecta al port (puerto) de la impresora de cualquier PC (el puerto no necesita ser bi-direccional), y ejecutar un software (programa) para iniciar la programacin de los microcontroladores. Har emos r efer encia a la serie PIC 16F84, 16F83 y 16C84, por ser compo nentes de bajo costo que se consi guen con facilidad . La informacin que aqu damos fue re-

Estructura de un Programador de PICs En la actualidad es muy fcil construir productos electrnicos con bajo costo, espacio reducido y con caractersticas multi-

Todo sobre PICs

23

CMO PROGRAMAR

UN

PIC
nido al navegar por Internet. De los tipos de PICs disponibles, los ms fciles para trabajar, segn el resultado de mi bsqueda (vea la figura 2) son el 16F83, el 16F84 y el 16C84. Estos modelos particulares son los que soporta nuestro programador. Cuestan menos de $10 cada uno, y su ROM es elctricamente borrable, de modo que no necesita una luz ultravioleta para borrar y reprogramar los dispositivos. El 16F84 es el ms empleado, tiene 68 bytes de RAM y 1.024 palabras de memoria de programa. La memoria de programa es un EEPROM tipo flash, que puede ser reescrito ms de un milln de veces. Cualquier informacin almacenada ser preservada por ms de cuarenta aos, sin alimentacin alguna o seal de refresco. El 16C84 es muy similar, pero utiliza un tipo de EEPROM ms viejo. El 16F83 puede ser considerado "el her mano menor", ya que tiene slo la mitad menor" de memoria; aunque tiene a su favor que es el de costo ms bajo costo. Estos PICs no requieren cristales de cuarzo o resonadores para los circuitos de reloj. Emplea un resistor o un capacitador para fijar la frecuencia de oscilacin.

dactada a partir del "websitie" de Microchip Inc., empresa fabricante de estos componentes. Cabe aclarar que en las pginas de Internet de Microchip Inc. puede encontrar toda la informacin necesaria para el diseo y construccin de circuitos a partir de microcontroladores PIC de la serie 16XXX. Tal como diimos en el captulo 1, un PIC, como la mayora de los microcontroladores, es una computadora pequea con CPU, ROM, RAM y circuitos I/O (de entrada y salida) en un solo chip. Los Microcontroladores constituyen el segmento de mayor crecimiento en la industria electrnica (existen PICs en decodificadores de seales de TV por cable, relojes, microondas, equipos de msica, lavarropas, etc.). Se puede considerar el microcontrolador como un circuito integrado que puede ser "personalizado" si se escribe un programa en lenguaje de mquina (assembly). Dicho de otra manera, cargando el programa en el rea ROM del microcontrolador, obtendremos un circuito integrado especfico para nuestras necesidades. Algunas veces el programa est diseado para ser algo ms que un oscilador o una llave lgica, pero lo importante es que el PIC realizar exactamente lo que usted le indique. La familia PIC de la empresa Microchip Inc. es muy simple de operar, es de bajo costo y gran parte del software utilizado para crear el cdigo de programa necesario para la programacin del PIC est disponible en el website de Microchip, cuya direccin es la siguiente: www.microchip.com En la figura 1 damos una muestra de la pantalla que hemos obte-

Figura 1

24

Todo sobre PICs

CMO PROGRAMAR Figura 2

UN

PIC

tor 13 y en el momento de ser grabado, se eleva la tensin de la pata 12 a 5V durante al menos 0,1s antes de ser bajado de nuevo a nivel tierra.

Los datos que se dirigen al chip contienen comandos que especifican los numerosos pasos del proceso de programacin y los datos que sern guardados en la ROM del chip. Para verificar que el PIC ha sido programado correctamente, compruebe que el PIC tambin pueda enviar los datos contenidos hacia La tensin de alimentacin para el el exterior a travs de la pata 13. 16F84 puede ser de 4 a 6V pero existe una Para aquellos que estn interesados en versin de este integrado que puede ope- conocer los detalles tcnicos completos rar inclusive, con 2V. de la programacin de los chips PIC, las Tiene 13 pines de entrada/salida, cada especificaciones para la programacin y uno de los cuales puede ser configurado su verificacin las veremos ms adelante. individualmente para que sea una salida o El diagrama esquemtico del Prograuna entrada mador para PIC que menciona la empresa fabricante, se muestra en la figura 3. El circuito est diseado para adaptarse al Cmo Programar un port de la impresora de cualquier PC. PIC de Microchip Inc. En la figura 4 mostramos el circuito con el cual hemos realizado varios diseos; emProgramar los chips PIC mencionados es muy sencillo: 1) Se debe aplicar 5V a la pata 14 (con la pata 5 conectada a tierra). 2) Eleve la tensin de la pata 4 a 12V). 3) Coloque los datos en la pata 13; dichos datos sern enviados a la ROM de a un bit por vez en concordancia con la seal de reloj. Los datos sern enviados al conec-

Figura 3

Todo sobre PICs

25

CMO PROGRAMAR

UN

PIC

pleamos como computadora una Figura 4 AT 486 con 4MB de RAM y disco rgido de 120MB (tambin realizamos las pruebas en otra compatible con Pentium 2 de 350MHz y 64MB de RAM). Los datos de programacin y las seales de sincronismo se aplican al PIC a travs de R2 y R3. Los diodos D1, D2 y el resistor R1 dejan que el pin 13 del PIC pueda ser utilizado como una entrada para la programacin y una salida para la verificacin (recuerde que una misma pata de I/O puede ser empleado tanto como entrada o salida). Cuando la pata 17 del conector en el port de la impresora est en estado alto, la PC puede leer los de la impresora. Se requieren dos suminisdatos desde la pata 13 del PIC a travs de tros de tensin para poner en marcha el la pata 11 del conector de la impresora. Programador PIC; 5V para la pata 14 y De este modo, R1 y D2 se encargan de 12V para la pata 4. detener la seal de datos. Estas tensiones pueden ser tomadas Cuando la pata 11 del conector de la desde la misma PC o desde una fuente impresora est bajo, D1 conduce. El noexterna. La tensin a aplicar en la pata 4 do de D2 es bajado a tierra para bloquear debe estar comprendida entre 12V y 14V. la seal de datos. El chip PIC estar libre Asegrese de que la lnea de 12V tenga para recibir datos desde la pata 14 del realmente 12V como mnimo. Si desea port de la impresora. La conexin que emplear fuentes externas puede utilizar el crea D1 entre las patas 11 y 17 del conec- esquema de suministro de tensin mostrator de la impresora permite que el softwa- do en la figura 5. re de programacin detecte si el prograEl circuito del programador es tan simmador est conectado al port de la imple que puede ser construido fcilmente presora. en una pequea placa de circuito impreLos capacitores so con uso de tcnicas C1 y C2 eliminan el de construccin estanruido que pueden darizadas. El montaje producir los cables por separado del conecque llevan la corrientor del cable hace que te DC. La tensin neel Programador PIC sea cesaria para que se ms fcil de utilizar, simproduzca la prograplemente se lo conecta macin es comanal port de la impresora dada por Q1 a trade la PC con un multicaFigura 5 vs del pin 2 del port ble de 30 cm de largo.

26

Todo sobre PICs

CMO PROGRAMAR
Programacin del PIC

UN

PIC

den generar diferentes modelos o seleccionar mltiples modelos con la adicin de La manera ms fcil de aprender a utili- un simple mecanismo interruptor. Con zar el Programador PIC es escribir un pro- componentes discretos, el circuito debiera grama simple e incorporarlo a un chip. Es- ser descartado y rediseado para adapte modo de aprender las caractersticas tarse a este tipo de cambios. Con un PIC, del programador, tambin le brindar la slo es cuestin de modificar el programa, oportunidad de verificar su hardware y borrar el PIC y reprogramarlo. Para prograsoftware. mar un PIC desde una PC hace falta un Como ejemplo, veamos cmo prograprograma y conocer el set de instrucciomar un circuito que enciende un LED des- nes de microcontrolador, pero no se asuspus de otro, en secuencias sucesivas. Este te, esto no es difcil. circuito podra hacerlo con un oscilador y Para hacer que nuestro controlador un CD4017. prenda leds en secuencia, deber prograSi embargo, tambin podemos hacer el mar que todas las patas I/O sean de salicircuito con un PIC, tal como se muestra da y hacer que cada una de estas patas en la figura 6. tenga un estado alto en forma secuencial, Si bien este circuito puede costar ms con un perodo que podemos fijar nosocaro que un circuito digital tradicional, es tros. ms pequeo y no necesita tanto espacio De esta manera, el programa, escrito fsico para contener todos sus componen- en lenguaje Assembly PIC, se muestra en PIC tes. De todos modos, hay otro argumento la Tabla 1. La parte ms importante de para utilizar el PIC en una tarea de estas cualquier programa es la documentacin. caractersticas: su inteligencia. Se pueSi deja notas en el programa, recordar inteligencia qu es lo que estaba intentando hacer cuando revise el programa, la vez siguiente. En el programa, estas notas aparecen en cualquier rengln que se inicie con punto y coma. Estos renglones sern ignorados por el software, mediante un montador que convierte el texto del programa en nmeros binarios que el PIC reconoce como instrucciones. Las primeras tres instrucciones son: pr ocessor, 16f84 include <p16f84.inc>L _config,

Figura 6

Estas son instrucciones pa-

Todo sobre PICs

27

CMO PROGRAMAR

UN

PIC
copiado en el registrador de control TRIS para el Port B y establece que las patas 6 a13 (que son manejadas por el Port B) sean terminales de salida en vez de serlo
;Cdigo Assembly para microcontrolador PIC16F84 como ;circuito secuencial. ;Encendido de Leds en secuencia rotativa. ;Con una frecuencia de 75kHz, cada led permanecer ;encendido durante 0,5segundos. ; Configuracin de la CPU ; (se trata de un 16F84 con oscilador RC ; y grabado con tensin positiva durante ; el pulso en estado alto) procesor 16f84 include <p16f84.inc> _config _RC_osc & _WDT_OFF & _PWRTE_ON ; sern variables las dos direcciones de memoria J K equ equ H'1F' H"1E ; J = direccin hexa 1F ; K = direccin hexa 1E

ra el tcnico. La primera instruccin le indica al tcnico que utilice las instrucciones del 16F84. La segunda le indica que debe incluir un conjunto de constantes predeterminadas en un archivo llamado p16F84.INC. Finalmente, la tercera establece varios bits de configuracin en el PIC para activar o desactivar determinadas caractersticas del hardware. En este ejemplo, el chip utilizar su oscilador RC, su WDT (cronmetro "vigilante") ser desactivado y el PWRTE (reloj automtico de reseteado) ser activado. De este modo, el PIC rebootear (se pondr en marcha) con cualquier tensin que se le aplique, pero no rebootear automticamente muchas veces por segundo. Es importante darle uso a la instruccin _config en todos los programas utilizados con el Programador PIC. El programa del tcnico no realizar la programacin real, slo crear un archivo con los nmeros que sern transferidos al chip PIC como un segundo paso. Las dos instrucciones que reservan espacio de memoria en el RAM de los PICs para dos variables, que se llamarn "J" y "K". El proceso es similar a estipular variables en BASIC, con la diferencia de que se deben determinar las ubicaciones fsicas de RAM que se utilizarn. En este caso, las ubicaciones (en una numeracin hexadecimal) son 1E y 1F. Estas ubicaciones sern utilizadas para almacenar calculadores que registren la cantidad de veces que una subrutina (loop) ha sido repetida. La instruccin org le indica al montador que el programa se inicia en la ubicacin 0 de la memoria de programa y que el programa real ser el prximo. La primera instruccin real del PIC es una instruccin movlw que borra el contenido del registro W. Ese nmero es luego

;Programa org 0 ; comienzo en la direccin 0

; Elijo al Port B como salida y la inicializo movlw tris movlw movwf B'00000000' PORTB B'00000001' PORTB ; w:= 00000000 binario ;portB ctrl register := w ; w:= 00000001 binario ; port B itself ;= w

; Rote el bit del port B hacia la izquierda mloop: rif PORTB,f

; Espere un tiempo para ejecutar nuevamente la subrutina o loop movlw movwf movwf decfsz goto decfsz goto d'50' J K kKf kloop J,f jloop ; w = 50 en decimal ; J := w ; K := w ;K = K-1, salte si K = 0 ;J = J-1, salte si J = 0

jloop: kloop

;lo hacemos nuevamente goto mloop end

Tabla 1

28

Todo sobre PICs

CMO PROGRAMAR
de entrada. Si hubiese querido que todas fuesen entradas debiera haber copiado en el port B la palabra "11111111" Volviendo a nuestro programa, seguidamente se introduce el nmero binario 00000001 en el registrador W y lo copia al Port B. Esta accin enciende el LED conectado a la pata 6, dado que ahora, el terminal Pata 0 pin 6, que es de salida, tiene un nivel "1", es decir, un nivel alto. Pero antes de que tenga tiempo de visualizar la llegada del pulso al LED, el programa ejecutar una instruccin rlf que rota los contenidos del Port B a la izquierda y cambia los datos a 000000-10. Esta accin encender el segundo LED conectado al conector 7. La repeticin de la instruccin producir 00000100, luego 00001000, y as sucesivamente, esto har que los diferentes leds se enciendan en secuencia. Entre rotaciones, el programa necesita esperar 1/2 segundo aproximadamente, de modo que la accin no es tan rpida como para que no se la pueda apreciar. Esa es la causa por la cual aparece en el programa una subrutina de demora. El programa almacena el nmero decimal 50 en las ubicaciones de memoria "J" y "K", utilizando la instruccin decfsz para la cuenta regresiva de 50 a 0. Las instrucciones condicionales del PIC son inusuales, y el descfsz no es una excepcin. Esta instruccin significa: "Decr e mentar y omitir la instruccin siguiente si la variable es igual a cer o". Normalmente, el resultado no es cero y la parte "ir a" de la instruccin no es omitida. De tal modo, la subrutina (loop) se ejecuta repetidamente hasta que K llega a cero. El programa real utiliza dos loops (subrutina), una incrustada dentro de la otra. Finalmente, ir a mloop enva la ejecucin al comienzo del programa. La instruccin end no es una instruccin para el mi-

UN

PIC

crocontrolador (CPU); slo le indica al montador que el programa ha finalizado. El 16F84 tiene 35 instrucciones CPU difer entes. Como puede ver a partir del pr ograma simple que hemos cr ea do, no debe dominarlas a todas para escribir pr ogramas tiles.

Cmo se Construye un decodificador con PIC Ahora mire que fcil sera construir una llave electrnica con PIC que se active luego de un cierto tiempo, o cuando se recibe alguna seal. Habra que programar una pata I/O como entrada y otra como salida, luego el programa debiera reconocer una seal presente en la pata fijada como entrada y luego de un tiempo activar la salida que se encargara de poner en marcha un circuito. Le suena conocido?, esto es lo que hacen normalmente los decodificadores de las seales de TV por cable. Por lo tanto, si sabe cmo es una seal codificada y obtiene el set de instrucciones del PIC de Internet, no tendr inconvenientes en construir un programa para su PIC, con el objeto de decodificar seales de TV. Seguramente Ud. se preguntar, Por qu no doy el programa en este libro?, muy sencillo, considero que debo darle las herramientas para que aprenda y no inducirlo a que "ar me decodificador es con fines comer ciales".

Cmo obtener un Programa para "programar" nuestro PIC En el Website de Microchip podr encontrar hojas de datos, notas de aplica-

Todo sobre PICs

29

CMO PROGRAMAR

UN

PIC

llamados cdigos de fuente), compilarlos en un cdigo de objeto y luego analizar el cdigo binario resultante para ver qu accin realizar el microcontrolador. De este modo, podr localizar los errores lgicos en su programacin antes de ejecutar cualquier cdigo en el hardware. El uso del software de Microchip est muy bien documentado en las pginas de Internet. Preprese para recibir mensajes de error cuando compile el prograFigura 7 ma. El MPASM se quejar moderadamente de que no utilizar la inscin y, lo mejor de todo, el MPLAB, un pro- truccin tris. Microchip le ha restado imgrama de desarrollo para simular y verifiportancia a esta instruccin y algunos procar programas PIC. El mismo est diseado cesadores PIC del futuro podran no regispara ser ejecutado bajo Windows. trarla. Desde la perspectiva del software, Particularmente, obtuve el programa uno de los mejores rasgos del PIC es su llade la direccin: mada compatibilidad de cdigo de fuente. Si su diseo supera los recursos de chips http//www.microchip.com/10/Tools/ con los cuales inici el programa, podr MPLAB/index.htm utilizar otro chip con mayores recursos sin necesidad de reescribir el programa desCuando acceda a esta direccin, ver de el principio. Para nuestros propsitos, la que el programa precisa de 6 disquetes y utilizacin de la instruccin tris en el Ud. debe bajar cada uno de ellos a su 16C84, 16F84 y 16F83 trabaja de modo computadora.; luego deber descompriaceptable. Adems, la va alternativa de mir los archivos y comenzar la instalacin configurar el Puerto B para la salida es mu(en total pesa unos 8MB). cho ms complicada. Una vez hecho esto el mismo programa Otro programa ms sencillo para "prole da toda la informacin necesaria para gramar" nuestro PIC se denomina NOPPP y conseguir su propsito (en el captulo 3 de- puede obtenerlo de la direccin: tallamos el uso de este programa). Una muestra de su pantalla, se ve en la figura (ftp://ftp.gernsback.com/pub/ 7. EN/noppp.zip). No debe asustarse si nunca manej una del Website de Gernsback. Este prograPC, el programa le indica todo lo que de- ma MS-DOS se ejecuta bajo Windows 3.x o be hacer; y lo mejor, es GRATIS. Windows 95. De cualquier modo, si ejecuta el programa bajo Windows 3.1, trabajar El software MPLAB le permitir editar mejor si lo ejecuta bajo la aplicacin de programas en lenguaje Assembly (tambin "pantalla completa" que si lo hace en

30

Todo sobre PICs

CMO PROGRAMAR

UN

PIC

vo) en la memoria, seleccionar el tipo de PIC que programar, programar el software y luego verificar que el cdigo fue correctamente programado en el chip. Tambin podr borrar un PIC que ya ha sido programado para reutilizar o actualizar la programacin. Una advertencia: Nunca inserte o remueva un PIC de un programador mientras la tensin enviada al programador se enFigura 8 cuentra activada. Cuando programe un PIC, el software le indicar qu acciones debe ejecutar y cundo realizarlas. Dado que el una ventana (veremos cmo programar software del programador requiere un ticon esta aplicacin en el captulo 6). ming engaoso, fue escrito para ejecutarEl timing es esencial para los pulsos de se como un programa DOS. programacin y las aplicaciones DOS de Recuerde que los pulsos de medicin pantalla completa toman el control total para la programacin del PIC tienen que de la computadora. Si por alguna razn tiene dificultades en durar por lo menos 0,1s. En la prctica, son lo suficientemente largos como para ejecutar el programa NOPPP bajo Winsuperar cualquier seal de "r ebotes" en los ebotes dows 3.1, intente salir a un entorno DOS y cables. ejectelo desde all. Tambin puede ejeDe todos modos, no deben ser demacutar el programa bajo OS/2; si lo hace, siado largos, para que no tornen extremaasegrese de configurar el HW_TIMER en damente lento el proceso de programa"on" en las configuraciones DOS para el cin. Tambin es importante que el tiempo programa. del pulso no dependa de la velocidad de Para hacer la programacin, el primer la CPU de la computadora. El software fue paso es conectar el Programador PIC al escrito especialmente para ser ejecutado port de la impresora de la PC e iniciar el en cualquier IBM compatible, desde una programa NOPPP sin ninguna tensin conectada al programador. Si la lnea de 5V XT a las ltimas Pentium. Cabe aclarar una vez ms que para est conectada a tierra, el software no programar o leer un PIC se debe tener la podr detectar el diodo D1, y asumir que el programador no est conectado al port correspondiente hoja de datos, para saber en qu pata se introducen los datos y cde la impresora. Si todo se encuentra en orden, debera mo se realiza el proceso de programacin, tambin es necesario conocer el set de ver una pantalla similar a la que se muesinstrucciones del microcontolador y saber tra en la figura 8. El men de opciones es auto-explicativo. En general, debera car- "pasar al papel" las ideas que uno tenga en la mente para realizar las diferentes gar un archivo de cdigo de objeto (con una extensin .HEX en el nombre de archi- programaciones.

Todo sobre PICs

31

CMO PROGRAMAR

UN

PIC
Quienes tengan dificultad para "bajar programas de escrituras de PICs", podrn retirar de esta editorial, contra entrega de un disquete virgen, un programa aplicativo (debe presentar el presente libro). Tambin podr bajar aplicaciones de nuestra pgina web (vea el captulo 1). Para terminar, en la figura 9 se da el impreso del programador de la figura 4; en la figura 10 el correspondiente al circuito secuencial y en la 11, el de la fuente de alimentacin. Aclaramos que en sucesivos captulos daremos ejemplos de proFigura 10 gramacin de PICs, hasta que Ud. se sienta lo suficientemente ducho como para realizar sus propios programas. No damos lista de materiales, dado que en cada figura se detallan los elementos utilizados. *****

Figura 9

Figura 11

32

Todo sobre PICs

Cmo Escribir Programas y Hacer la Verificacin en los PICs


Introduccin MPLAB es un entorno de desarrollo integrado que le permite escribir y codificar los microcontroladores PIC de Microchip para ejecutarlos. El MPLAB incluye un editor de texto, funciones para el manejo de proyectos, un simulador interno y una variedad de herramientas que lo ayudarn a mantener y ejecutar su aplicacin. Tambin provee una interfase de usuario para todos los productos con lenguaje Microchip, programadores de dispositivos, sistemas emuladores y herramientas de tercer orden. El MPLAB est diseado para ser ejecutado bajo Windows 3.11, y puede operar con Windows 95 y 98. Asume que el usuario ya conoce el entorno de Windows y sabe manejarlo. La gua que describimos en este captulo le permitir realizar las siguientes tareas: 1) Instalacin

Descargue los archivos del software de instalacin y ejecute el archivo MPxxxxx.EXE. Estos archivos puede obtenerlos por medio de Internet en la direccin: http//www.microchip.com/10/Tools Estos archivos pueden ser transferidos a disquetes si desea instalar el MPLAB en otra computadora. De acuerdo a la versin que haya descargado, los nombres de los archivos pueden variar levemente. Por ejemplo, la versin 4.00 del MPLAB tendra los siguientes archivos: MP40000.EXE MP40000.WO2 MP40000.WO3 MP40000.WO4 MP40000.WO5 MP40000.WO6 Si Ud. lo prefiere, puede venir a nuestras oficinas con este libro y 6 disquetes vrgenes y tendr la oportunidad de llevarse dicho programa sin cargo. Copie el contenido de los 6 disquetes en el disco rgido de su PC (en un lugar que pueda identificar). Cuando ejecute el archivo .EXE, comenzar la instalacin del MPLAB en su sistema. Seguidamente deber elegir los componentes del MPLAB que desea instalar en su sistema. A menos que haya comprado un programador o emulador del dispositivo, slo debiera instalar las siguientes

Manejar el escritorio MPLAB Crear un nuevo archivo de cdigo fuente para el ensamble e ingresarlo a un nuevo proyecto para el 16F84 Identificar y corregir los errores simples Ejecutar el simulador interno Marcar puntos de interrupcin Crear ventanas de observacin Manejar ventanas para el seguimiento de errores
Para que Ud. aprenda a programar sus microcontroladores, damos a continuacin, paso a paso, las instrucciones de instalacin y uso de la aplicacin:

Todo sobre PICs

33

CMO ESCRIBIR PROGRAMAS


herramientas del software:

HACER

LA

VERIFICACIN

EN LOS

PICS

Archivos MPLAB IDE Archivos MPASM/MPLINK/MPLIB Archivos de Proteccin del Simulador MPLAB-SIM Archivos de Ayuda (vea la figura 1 que aparecer cuando ejecute el programa). Luego aparecer el men de la figura 1 que le permitir seleccionar los componentes de lenguaje Microchip que desee instalar. Usualmente debiera seleccionarlos todos (por defecto). Al hacer doble click en MP40000.EXE, el instalador le va diciendo lo que debe hacer. Luego de instalarlos, ejecute MPLAB.EXE o clique el cono MPLAB para iniciar el sistema. Aparecer el escritorio del MPLAB (figura 2).

Figura 1

2) Configurar el Modo de Desarrollo El escritorio bsico del MPLAB se asemeja al de las aplicaciones de Windows (como pudo ver en la pantalla de la figura 2). Tiene una barra de men en el margen superior, una barra de herramientas y tambin una barra de estado en el margen inferior. Podr advertir que la barra de estado incluye informacin sobre cmo se ha configurado el sistema.

Figura 2

Nota: El "modo de desarr ollo" determina la herramienta, debe elegir Figura 3 alguna, que ejecutar el cdigo. Para esta gua, usaremos el simulador de soft- ms informacin para cambiar a una de ware MPLAB-SIM. Si sabe del tema y tiene sus operaciones. Al seleccionar el tem del MPLAB-SIM un emulador, en este captulo encontrar men "Opciones>Modo de Desarrollo",

34

Todo sobre PICs

CMO ESCRIBIR PROGRAMAS


aparecer una caja de dilogo semejante a la de la figura 3. El MPLAB es un producto en constante evolucin, de modo que pueden aparecer sutiles difeFigura 4 rencias entre la pantalla que usted vea y la que mostramos aqu. Seleccione el cono prximo al Simulador MPLAB-SIM (MPLAB-SIM Simulator) y elija 16F84 (que corresponde a un tipo de PIC) en la lista de procesadores disponibles que pueden ser resistidos por el simulador. Clique 16F84 y luego presione el botn "Reset". De este modo se iniciar el simulador, y debera aparecer en la barra de estado "16F84" y "Sim". Se encuentra as en el modo simulador para el 16F84.

HACER

LA

VERIFICACIN

EN LOS

PICS

en el men y aparecer la caja de dilogo de la figura 4. Clique en el botn S, seguidamente aparecer un dilogo de exploracin de Windows estndard. Decida dnde desea crear su proyecto (en qu carpeta o lugar de su disco rgido lo va a guardar) y recuerde dnde lo ubic. Ms tarde necesitar esta informacin. Esta gua usa un directorio en c: \temp\tutorial y crea el archivo de proyecto llamado tutor84.pjt (figura 5). "PJT" es

3) Cmo Crear un Proyecto Simple El simulador se ejecutar desde el mismo archivo, llamado "archivo hex", el cual puede ser programado en el micro PIC. Para que se ejecute el simulador, primero deber crear un archivo de cdigo fuente y realizar el montaje del cdigo fuente. A continuacin explicaremos cmo llevar a cabo este proceso: Nota: El lenguaje ensamblador produce, entre otros elementos, un archivo hex. Este archivo tiene la extensin (.hex). A este archivo lo llamaremos:

Figura 5

el sufijo estndar para los archivos de proyectos en el MPLAB. El prefijo del nombre de archivo del proyecto, en este caso "tutor84", ser el prefijo por defecto de muchos de los archivos que el MPLAB usar o crear para esta gua. Clique "Aceptar (OK)" para que aparezca el dilogo Proyecto MPLAB. Este dilogo puede parecer confuso, pero en realidad es muy simple. Nota: El simulador, los programadores y los sistemas emuladores que operan con el MPLAB usan un archivo hex creado por el ensamble, la compilacin y/o el linking tutor84.hex. del cdigo fuente. Algunas herramientas diferentes pueden crear archivos hex, al Ms adelante este archivo puede ser tener en cuenta que estas herramientas cargado directamente en el programador formarn parte de cada proyecto. del dispositivo sin usar el ensamblador o un Los proyectos le dan la flexibilidad para proyecto del MPLAB. Este archivo tambin describir cmo se construir la aplicacin puede ser cargado por otros programado- y qu herramientas se usarn para crear el res de tercer orden. archivo .hex. Seleccione "Archivo>Nuevo (File>New)" Obviamente, en la gua nos ocupare-

Todo sobre PICs

35

CMO ESCRIBIR PROGRAMAS

HACER

LA

VERIFICACIN

EN LOS

PICS

fuente de ensamble. Esta ser la configuracin por defecto cuando aparezca el dilogo "Propiedades del Nodo (Node Properties)", vea la figura 7. Nota: Como puede ver, hay una cantidad de filas y columnas en este dilogo. Cada fila usualmente corresponde a un "cambio", aquellos elementos que se establecen en la lnea de comando cuando se invoca una herramienta. De hecho, la configuracin de estos cambios se refleja en la ventana "Lnea de Comando (comand line)", prxima al margen inferior de la pantalla. Esta es la lnea de comando que se usar cuando se invoque el MPASM desde el MPLAB. Por el momento, puede usar las configuraciones por defecto, pero cuando ya sepa construir una aplicacin, probablemente desear cambiar algunas. Figura 6 Al clicar el botn "Aceptar (OK)", aplimos de todos estos detalles. car estas configuraciones, y retornar al El dilogo "Editar Proyecto" ser semedilogo "Editar Proyecto (Edit Project)", con jante al mostrado en la figura 6. el cono (botn) "Agrega Nodo (Add NoAdvierta que el nombre del archivo de de)" disponible. destino ya ha sido completado. Ya conoPresione el botn "Agregar Nodo". Apace el modo de desarrollo que configurarecer el dilogo de exploracin de Winmos previamente y asume que usaremos dows estndar, con el mismo directorio la serie de herramientas de lenguaje Miusado para el proyecto. Ingrese el nombre crochip. En la ventana "Archivos de Prode archivo: tutor84.asm y presione "Acepyecto (Files proyect)", encontrar tutor84. tar". Retornar al dilogo "Editar Proyecto", [hex]. Al destacar este nombre, se podr utilizar el cono "Propiedades del Nodo (Node Properties)". Seguidamente debe indicarle al MPLAB cmo crear el archivo hex. Hgalo clicando el botn "Propiedades del Nodo". Aparecer el dilogo "Propiedades del Nodo". Este dilogo contiene todas las configuraciones por defecto para una herramienta de lenguaje -en este caso MPASM, como podr ver en en el ngulo superior derecho del dilogo. En su forma ms simple, el proyecto contiene Figura 7 un archivo hex creado desde un archivo

36

Todo sobre PICs

CMO ESCRIBIR PROGRAMAS

HACER

LA

VERIFICACIN

EN LOS

PICS

Figura 8

co, pero el nombre de la ventana de archivo reflejar su nuevo nombre.

Nota: El nombre del archivo fuente y el nombre del proyecto ("tutor84" en esta gua) deben ser iguales en este tipo de proyectos. Hay otros proyectos de archivo mltiple que usan el linker y permiten que el nombre del archivo de salida sea diferente al del archivo de entrada (hay una gua aparte para los proyectos de archivos mltiples que usan el linker). El MPASM siempre crear un archidonde podr ver "tutor84.asm" aadido vo hex de salida con el mismo nombre debajo del archivo hex, que indica que es que el archivo fuente, y esta configuracin un nodo concurrente. Al presionar "Acep- no puede modificarse. Si cambia el nomtar", retornar al escritorio MPLAB con un bre del archivo fuente, tambin deber archivo de cdigo fuente abierto y an sin cambiar el nombre del proyecto. nombre. Ahora ya est listo para escribir el cdigo que almacenar en el PIC para que 4) Cmo Crear un nuevo cumpla una funcin determinada. Archivo Fuente Simple Clique dentro del espacio en blanco de la ventana de archivo creada. Seguramente se llamar "Sin ttulo (Untitled)". De este modo acceder al "foco" de la ventana. Use la opcin de men "Archivo>Guardar como...", y guarde el archivo vaco como tutor84.asm. Cuando abra el dilogo de exploracin estndar, encontrar su ubicacin en el directorio del proyecto. Ingrese el nombre de archivo y presione "Aceptar". Vea la figura 8. Ahora estarn disponibles el escritorio MPLAB y la ventana de archivo vaTabla 1 list p=16f84 include <p16F84.inc> c1 equ org reset goto org start mov1w movwf loop incfsz goto goto end h'0c' h'00' ; Establece el contador de variable temp c1 en la direccin 0x0c ; Establece la base de memoria del programa en el vector reset 0x00 ; Ir a inicio en el programa principal ; Establece la base de memoria del programa al comienzo del cdigo del usuario ; Inicializa el contador a un valor arbitrario mayor que cero ; Guarda el valor en la variable temp definida ; Incrementa el contador, ubica los resultados en el registro de archivos ; loop hasta que el contador se completa ; Cuando el contador se completa, va a start para reiniciar

start h'04'

h'09' c1 c1,F loop bug

Todo sobre PICs

37

CMO ESCRIBIR PROGRAMAS

HACER

LA

VERIFICACIN

EN LOS

PICS

"bug". Dado que este rtulo no ha sido definido previamente, el lenguaje ensamblaUse el mouse para ubicar el cursor al dor informar el error. Tambin podra relecomienzo de la ventana de archivo vaco var otros errores. tutor84.asm, e ingrese el texto de la tabla Haga un doble clic sobre el mensaje de 1(vea la pgina anterior), exactamente error. De este modo ubicar el cursor en la como est escrito en cada lnea. No debe lnea que contiene el error en el cdigo ingresar los comentarios (los textos que sifuente. Cambie "bug" por "start". Use la guen a cada punto y coma). ventana "Resultados de construccin Este cdigo es un programa muy simple (Build Results)" para hacer una bsqueda que incrementa un contador y lo "resetea" de errores, y reparar los que aparecieran a un valor predeterminado cuando el en el cdigo fuente. Reensamble el archicontador vuelve a cero. vo ejecutando la funcin de men "Proyecto>Construir todo". Este procedimiento Nota: Todos los rtulos comienzan en la puede demandar un par de repeticiones. primera columna, y la ltima lnea tiene una directiva "end". Las pginas de datos Nota: Cuando reconstruya un proyecto, del micro PIC contienen informacin com- todos sus archivos fuente sern guardados pleta sobre instrucciones con ejemplos pa- en el disco. ra su uso. Luego de reparar todos los problemas Guarde el archivo usando la funcin de en el cdigo fuente, la ventana "Resultados de construccin" mostrar el mensaje menu "Archivo>Guardar" (File>Save). "Construccin completada exitosamente (Build completed successfully)". Ya ha completado un proyecto que puede eje6) Ensamble del Archivo Fuente cutarse usando el simulador. El ensamble del archivo puede realizarse de varias maneras. Aqu describiremos Como ver, an no tiene ni idea un mtodo. Use el tem de men "Proyec- que pr ogram, per o ya pr ogram algo to>Construir todo (Proyect>Build All)". De que luego intr oducir en un PIC. Para este modo ejecutar el lenguaje ensamtener idea cabal de lo que est ha blador MPASM en el trasfondo usando las ciendo, contine leyendo esta gua y configuraciones guardadas con el proyec- con una PC al lado, haga Ud. mismo to anteriormente. Una vez completado el lo que se indica paso por paso. proceso de ensamble, aparecer la ventana "Resultados de Construccin (Build Results" (figura 9): Ha ingresado intencionalmente al menos un error si ingres el cdigo tal como lo hemos escrito en el paso anterior. El ltimo "goto" en el programa refiere a Figura 9 un rtulo inexistente llamado

5) Ingresar el Cdigo Fuente

38

Todo sobre PICs

CMO ESCRIBIR PROGRAMAS


7) Ejecucin de su Programa Use "Debug>Ejecutar>Reset (Debug>Run>Reset)" para iniciar el sistema. El contador del programa se resetear a cero, que es el vector de reset en el 16F84. La lnea del cdigo fuente en esta direccin ser destacada con una barra oscura. Tambin advertir que en la barra de estado, la PC se establecer en 0x00. Use el tem de men "Debug>Ejecutar>Paso (Debug>Run>step)" (figura 10). Al hacerlo, el contador del programa avanzar hasta la siguiente ubicacin de instruccin. La barra oscura seguir el cdigo fuente y el contador del programa desplegado en la barra de estado avanzar hasta "4". Cuando ejecute el tem de men "Debug>Ejecutar>Paso", advierta la aparicin de un texto en el lado derecho del tem de men que dir "F7". El mismo equivale a "tecla de funcin siete" en su teclado. Muchas funciones del MPLAB se asignan a "teclas-especiales". Estas teclas cumplen la misma funcin que los tems de men a los cuales corresponden. Presione F7 varias veces y ver cmo el contador del programa y la barra avanzan a travs del programa. Ejecute el tem de men "Debug>Ejecutar>Ejecutar (Debug>Run>Run)" o presione F9 para inciar la ejecucin del programa desde la la ubicacin actual del contador. Los colores de la barra de estado cambiarn, para indicar que el programa est ejecutando las instrucciones. Ninguno de los campos de la barra de estado se actualizar mientras el programa est en ejecucin. Detenga el programa ejecutando el tem de men "Debug>Run>Halt (detener)" o presionando F5. La barra de estado vol-

HACER

LA

VERIFICACIN

EN LOS

PICS

Figura 10
ver a su color original, y el contador del programa y otras informaciones de su estado sern actualizadas. Nota: Otra manera de ejecutar funciones es usar la barra de herramientas ubicada en el margen superior de la pantalla. Si ubica el cursor sobre los tems de la barra de herramientas, podr ver el nombre de su funcin en la barra de estado. El botn de la izquierda es un botn estndar "cambiar barra de herramientas (change tool bar)" que le permite desplegar las barras de herramientas disponibles. Estas pueden ser personalizadas, como podr advertirlo en la seccin "Algunas Sugerencias" al final de esta gua. En la barra de herramientas de Debug, la luz verde es equivalente a F9 (Ejecucin) y la luz roja equivale a F5 (Detencin). Hasta aqu, aprendi a instalar el programa y crear un archivo para apr ender a pr ogramar. Dimos un ejemplo de proogramar gramacin y ya sabemos cmo corr er el pr ograma en la PC para saber si todo est bien, antes de escribir dicho programa en nuestro PIC. Sin embargo, cuando los programas son ms largos, es posible cometer errores, para evitarlos, sigamos leyendo este captulo.

Todo sobre PICs

39

CMO ESCRIBIR PROGRAMAS

HACER

LA

VERIFICACIN

EN LOS

PICS

8) Abrir Otras Ventanas Para el Seguimiento de Errores Hay muchas maneras de visualizar el programa y su ejecucin usando el MPLAB. Por ejemplo, este programa est destinado a incrementar un contador temporario pero, cmo puede asegurarse que se est produciendo dicho incremento? Una manera es abrir e inspeccionar una ventana de registro de archivo. Puede hacerlo ejecutando el tem de men "Ventana>registros de archivo (Window>File Register)". Aparecer una pequea ventana con todos los registros de archivo o el RAM del 16F84. Presione F7 (ejecute instruccin por instruccin, si piensa anularlo) varias veces, y observe la actualizacin de valores en la ventana de registro de archivo. Hemos colocado la variable del contador en la ubicacin de direccin 0x0C. Mientras el contador temporario se incremente, este incremento se reflejar en la ventana de registro de archivo. Los registros de archivo cambian de color cuando su valor cambia, de modo que los cambios puedan advertirse fcilmente en la inspeccin. De todos modos, en muchos programas complejos, varios valores pueden cambiar, as resultar ms difcil focalizar las variables que le interesan. Usando una ventana de

observacin especial, este problema puede solucionarse. Ahora, ya sabemos mejor qu es lo que estamos haciendo: Pr ogramamos algo que incr ementa en 1 cada vez que viene una seal y podemos verificarlo virtualmente, an tes de pr ogramar el PIC. 9) Creacin de una Ventana de Observacin Ejecute el tem de men "Ventana>Nueva ventana de observacin (Window>New Watch Window)". Aparecer el dilogo "Agregar Smbolo de observacin (Add Watch Symbol)" (figura 11). Tipee "c1" en la caja de nombre de smbolo para que la lista se despliegue hasta el smbolo deseado. Seleccinelo, presione el botn "Agregar (Add)", y luego el botn "Cerrar (Close)". Aparecer en su escritorio MPLAB una ventana de observacin que mostrar el valor actual del valor "c1" del contador temporario. Presione F7 varias veces para advertir cmo se actualiza la ventana de observacin mientras el valor del contador se incrementa. Si dej la ventana de registro de archivo abierta, la misma tambin ser actualizada (mueva una de ellas para que pueda ver las dos en la pantalla). Puede guardar la ventana de observacin y sus configuraciones al ejecutar el tem "Guardar observacin (Save Watch)" debajo del botn del sistema, ubicado en el ngulo superior izquierdo de la ventana de observacin. Al clicar este botn, se desplegar un men en cascada. Seleccione "Guardar observacin" y aparecer el dilogo de exploracin estndar ubicado en el directorio del proyecto. Elija algn nombre arbitrario y presione "Aceptar (OK)".

Figura 11

40

Todo sobre PICs

CMO ESCRIBIR PROGRAMAS


Si no nombra la ventana de observacin, el MPLAB lo har por usted. La ubicacin y el estado en la pantalla de la ventana abierta o cerrada sern guardados con el proyecto, de modo que la prxima vez que abra su proyecto, sus ventanas de observacin aparecern restauradas.

HACER

LA

VERIFICACIN

EN LOS

PICS

Clique el tem de men "Punto(s) de interrupcin (Break Point)". El men desaparecer y la lnea donde se ubic el cursor cambiar de color, para indicar que ha sido establecido un punto de interrupcin en dicha ubicacin. Presione F6 o ejecute el tem de men "Debug>Ejecutar>Reset (Debug>Run>ReNota: Tambin puede editar ventanas set)" para resetear el sistema. Luego, prede observacin luego de crearlas. Use el sionando F9, ejecute el sistema. El prograbotn del sistema y seleccione "Agregar ma se ejecutar y se detendr en la insObservacin (Add Watch)" para que apa- truccin ubicada luego del punto de interezca un dilogo mediante el cual podr rrupcin. "c1", como aparece en la ventaagregar ms tems. Con la tecla "Ins" pona de observacin o en la de registro de dr hacer lo mismo. Si desea borrar un archivo, si la tiene an abierta, reflejar el tem, seleccinelo y presione la tecla Supri- estado reset de cero, el modo instruccin mir (Delete); la observacin referida desa- por instruccin ejecutar la carga y c1 lueparecer de la ventana. Puede selecciogo reflejar un valor de 0x09. Presione F9 nar "Editar observacin (Edit Watch)" en el varias veces y advierta que la barra de esmen del sistema para cambiar el modo tado cambia de color mientras el prograen el cual se muestra el tem (en hex, bina- ma se est ejecutando, y luego retorna a rio, como una variable de 16-bit en vez de su color original cuando el procesador se 8-bit, etc.). detiene. Resumen 10) Cmo se Marca un Punto de Interrupcin Presione F5 ("Debug>Ejecutar>Detener") para asegurarse que el procesador del simulador se ha detenido. Clique dentro de la ventana del cdigo fuente la lnea siguiente al rtulo "start", que dice "movlw 0'09'". Presione el botn derecho del mouse para que aparezca el men de la figura 12. Hasta aqu, en este captulo Ud. ha aprendido: * configurar un nuevo proyecto. * crear e ingresar un archivo fuente en un proyecto * ensamblar un cdigo * ejecutar su cdigo usando el simulador * marcar puntos de interrupcin y ejecutar su cdigo paso a paso (instruccin por instruccin) * observar variables en su cdigo

Figura 12
Algunas Sugerencias: PUNTOS DE INTERRUPCION - Puede marcar puntos de interrupcin en la ventana "Ventanas>Memoria de programa (Window>Program Memory)", en la ventana de ar-

Todo sobre PICs

41

CMO ESCRIBIR PROGRAMAS

HACER

LA

VERIFICACIN

EN LOS

PICS

para funciones MPLAB y caracteres ASCII especiales * Cambiar la fuente de la pantalla o el tamao de la fuente * Posicionar la barra de herramientas a ARCHIVOS FUENTE - Use "Ventana>Ventana de Proyecto (Window>Projet Window)" pa- un lado o al pie de la pantalla ra que aparezca una lista de sus archivos * Modificar la barra de herramientas fuente. Puede hacer un doble clic sobre el * Cambiar la cantidad de caracteres nombre de un archivo para trasladarlo al desplegados para los rtulos. editor. ARCHIVOS MAPA - Use el dilogo "Proyecto>Editar Proyecto" y cambie las PropiedaERRORES MPASM - Si el MPASM le da un error, haga un doble clic sobre el error en des del Nodo del MPASM para producir un la ventana de error para ir al error en el archivo MAP llamado tutor84.map. Luego cdigo fuente. Si tiene mltiples errores, de construir el proyecto, busque el tutorsiempre elija el primer error generalmen- 84.map para ver informacin de la conste un error causa errores subsiguientes y al truccin. reparar el primero corregir los restantes. MENUS DESACTIVADOS - Si encuentra mens CONFIGURACIN DE BITS Y EL MODO DEL PROCE- desactivados (opacados), verifique que SADOR - La configuracin de bits en el archi- no haya ingresado el modo "slo Editor vo fuente no determinar el modo del pro- (Editor Only)". Si est seguro de que ha cesador para el simulador (o los emulado- realizado correctamente la configuracin, intente salir del MPLAB y reinicie el prograres). Use "Opciones>Configurar Procesama. dor>Hardware (Options>Procesor Setup>Hardware)" para estas configuraciones. An cuando puede establecer estos bits Caractersticas del MPLAB no en el archivo fuente del MPASM o del Abarcados en este captulo MPLAB-C17, el MPLAB no cambia automticamente los modos. Por ejemplo, la conHay muchas caractersticas del MPLAB figuracin de bit Activar Observacin de que no se tratan en esta gua. En lugar de Dog Timer puede hacerse de tal modo describir cada caracterstica, generando que, cuando programe un dispositivo, el Dog Timer sea activado. En el MPLAB tam- una gua extensa y complicada, primero hemos decidido darle el conocimiento bbin necesitar acceder al dilogo "Opciones>Configurar Procesador>Hardware" sico para operar el MPLAB. Le ofrecemos a para activar el WDT para el simulador o el continuacin un punto de inicio para ayuemulador. Esto le permitir hacer un segui- darlo a explorar otras herramientas del MPLAB. miento de errores con el WDT activado o desactivado sin cambiar su cdigo fuente. chivo fuente (en este caso tutor84.asm), o en la ventana "Ventanas>Listado Absoluto (Windows>Absolute)". Otras Ventanas de Datos y Dilogos OPCIONES - Use "Opciones>Configurar Entorno (Options>Enviroment Setup)" para hacer lo siguiente: Hasta aqu, los diferentes comandos u * Establecer teclas de Mapa Europeo rdenes del MPLAB, las hemos dado en

42

Todo sobre PICs

CMO ESCRIBIR PROGRAMAS

HACER

LA

VERIFICACIN

EN LOS

PICS

castellano y en ingls, dado que el programa est en ingls, pero para que sepa lo que est haciendo, decidimos colocar su traduccin. De aqu en ms, slo colocaremos la traduccin, dado que el lector sabr a qu orden nos referimos. Esta gua ya le ha presentado la Ventana de Memoria de Programa y las VentaFigura 13 nas de Observacin. An no ha explorado las otras ventanas. Debiera buscar en "Ventana>Conjunto" y "Ventana>Registros de Funcin Especial" para ver cmo el MPLAB puede mostrar otras reas de memoria. Hay otros dilogos, como el dilogo "Debug>Configuracin de Figura 14 puntos de interrupcin" para marcar puntos de interrupcin. trar una informacin algo diferente de la La ayuda online y la Gua del Usuario registrada por el rastreo del emulador. de MPLAB le explicarn el uso de estas caPara usar el amortiguador de rastreo del ractersticas. simulador, primero debe seleccionar un cdigo a rastrear. Si clica y arrastra toda la Rastreo ventana de memoria del programa, puede seleccionar instrucciones para rastrear. La ventana de rastreo le brinda una Presione luego el botn derecho del mouimagen "instantnea" de la ejecucin de se para que aparezca un dilogo en el su programa. Los emuladores que tienen cual podr seleccionar "Rastrear Punto(s)". un amortiguador de rastreo, pueden mosAhora resetee y ejecute el cdigo, luetrar cmo se ejecuta su programa a altas go detngalo despus de haberse ejecuvelocidades. tado durante algunos segundos. Seleccione "Ventana>Rastreo" para ver los resultaNota: Algunas aplicaciones, como los dos del rastreo (figura 13). sistemas de control de motor, no pueden El simulador coloca una marca de tiemser detenidos. Algunos errores slo aparepo en cada lnea y tambin muestra todos cen cuando la aplicacin est en ejeculos registros que cambiaron junto a sus vacin, no ocurren cuando se ejecuta el c- lores (figura 14). digo instruccin por instruccin. El amortiEl estmulo genera seales para el simuguador de rastreo le brinda otra herralador. Puede establecer pines (pasadores) mienta para probar este tipo de aplicacio- altos o bajos, e introducir valores directanes. mente en los registros. Hay cuatro modos En el simulador, el amortiguador de ras- de estmulo: treo es til para recoger un extenso regis* Estmulo asincrnico - Un dilogo intetro de la ejecucin del programa, de mo- ractivo para controlar seales en los pines do que pueda retornar al mismo y analide entrada zarlo cuidadosamente. El simulador mos* Estmulo de Archivo Pin - Los conteni-

Todo sobre PICs

43

CMO ESCRIBIR PROGRAMAS

HACER

LA

VERIFICACIN

EN LOS

PICS

los pines. Por ejemplo, hemos configurado una seal que cambiar de nivel en un pin I/O sobre el puerto b del 16F84. Seleccione "Debug>Estmulo de Simulador>Estmulo Asincrnico..." Vea la figura 15. Se desplegar el dilogo de la figura 16. Ahora coloque el cursor sobre el botn rotulado "Stim1 (P)" y clique el botn derecho del mouse para que aparezca un dilogo en el cual debe seleccionar "Toggle" Figura 15 (figura 17). Coloque otra vez el cursor sobre el botn rotulado ahora "Stim1 (T)" (la "P" fue reemplazada por una "T", que significa "Toggle"), presione el botn derecho del mouse, y seleccione "Asignar Pin..." (figura Figura 16 18). Aparecer otro dilogo con una lista de dos de un archivo de texto los pines conectados al 16F84 (figura 19). que describe seales a los Coloque el cursor sobre el "RB0" y haga pines de entrada * Estmulo de Archivo de un doble clic. Debera aparecer el dilogo de la figuRegistro - Los contenidos de un archivo de texto usado ra 20, de Estmulo Asincrnico. Advierta que el botn ahora aparece para configurar valores de Fig.17 como "RB0 (T)". 8-bit directamente en un Elija "Debug>Ejecutar>Animado" para registro que el procesador se ejecute en el modo * Estmulo de reloj - Una fuente de pulsos de estmu- "paso a paso rpido". La barra de estado lo peridica, regular y pro- alternar la ejecucin con una detencin muy rpida. gramable. Presione el botn "RB0 (T)" en el dilogo Estmulo Asincrnico. Debera ver el camFig.18 bio de valor del puerto b en la ventana Dilogo de Estmulo Registro de Funcin Especial mientras reAsincrnico petidamente clique el botn para simular Esta caracterstica de es- una seal alta y luego una baja aplicadas tmulo provee un botn de al pin 0 del puerto b. dilogo para simular volts +5 y 0 aplicados a pines de entrada. Mientras su proFig.19 grama se ejecuta con el simulador, puede presionar los botones de Fig.20 este dilogo para cambiar los niveles de

44

Todo sobre PICs

CMO ESCRIBIR PROGRAMAS


Archivos de Estmulo Pin Un archivo de estmulo pin consiste en columnas de unos y ceros de ingreso que sern aplicadas a los pines cuando el valor "Ciclo" en el Reloj de detencin alcance al de la columna CICLO. Use "Archivo>Nuevo archivo" y tipee el texto de la tabla 2. No debe tipear el texto que sigue a los ";" y "!", que se limita a comentarios. Use "Archivo>Guardar como..." para guardar como tutor84.sti. Nota: Para mantener una compatibilidad retroactiva con versiones anteriores del MPSIM, la primera lnea siempre debe comenzar con las palabras "CICLO" o "STEP". Esta columna especifica el CICLO (como lo determina la Ventana del Reloj de Detencin del MPLAB) donde los valores de las otras columnas sern aplicados. Luego de la palabra "CICLO" en la primera lnea del archivo se colocan los nombres de los pines del microPIC que recibirn los valores de estmulo altos y bajos. En este ejemplo los pines RB1 y RB0, por dos entradas del port (puerto) B, recibirn Tabla 2 entradas de estmulo. En este archivo, la segunda CICLO columna contiene valo20 res que sern aplicados a 41 52 RB1 (puerto b bit 1) y la 55 tercera columna presen60 ta los valores para RB0 65 76 (puerto b bit 0). Estos

HACER

LA

VERIFICACIN

EN LOS

PICS

Figura 21

Figura 22

RB1 0 1 0 1 0 1 0

RB0 0 0 1 1 0 0 1

; aplicar alta a puerto b bit 1 ; aplicar alta a puerto b bit 0, establecer bit 1 bajo ; toggle bit 1, luego... ! ...toggle bit 0.

Todo sobre PICs

45

CMO ESCRIBIR PROGRAMAS

HACER

LA

VERIFICACIN

EN LOS

PICS

nombres deben ser compatibles con los nombres de pin del microPIC de Microchip para el procesador que est siendo simulado. Nota: Puede ver todos los pines de soporte en la lista de asignacin de pines para el Estmulo Asincrnico (clique el botn derecho del mouse sobre un botn de estmulo y se desplegar la pantalla de la figura 21). Se pueden hacer comentarios en una lnea usando los caracteres ";" o "!", precedidos y seguidos, como mnimo, por un espacio. La ventana del Reloj de Detencin tambin mostrar el tiempo transcurrido a cada instruccin, determinado desde el valor CICLO y la frecuencia del reloj. Si el Reloj de Detencin se resetea a 0, el archivo de estmulo pin tambin ser efectivamente reseteado. Abra la ventana del Reloj de Detencin y seleccione "Ventana>Reloj de Detencin". Tambin seleccione "Ventana>Registros de Funcin Especial". Estaremos interesados en observar el "puerto b". Tambin se puede agregar el puerto b a una ventana de observacin (figura 22). Resetee y ejecute instruccin por instruccin hasta ejecutar 41 ciclos. Luego ver que el "puerto b" cambi su valor al asignado en la segunda lnea del archivo de estmulo.

Fig. 23 blecida en el Dilogo Estmulo de Registro. Esto es til para simular una operacin A/D. Abra un nuevo archivo usando "Archivo>Nuevo Archivo" y tipee la siguiente lista de nmeros:
10 2E 38 41 50 7A 99 A0 FD Gurdela usando "Archivo>Guardar como..." y nmbrela tutor84.reg.

Archivos de Estmulo de Registro Un archivo de estmulo de registro consiste en una columna de los valores que sern enviados a un registro cuando la direccin de memoria del programa alcance la ubicacin esta-

Fig. 24

46

Todo sobre PICs

CMO ESCRIBIR PROGRAMAS

HACER

LA

VERIFICACIN

EN LOS

PICS

chivo seleccionado (0x0D, con un valor de 0x50 como se muestra en la figura 25). Los valores 0x10, 0x2E, etc. sern introducidos en el registro seleccionado en el dilogo "Debug>Estmulo de Simulador>Registro de Estmulo", cada vez que se ejecute "loop". Luego de introducido el ltimo valor Fig. 25 (0xFD en tutor84.reg), el primer valor ser usado nuevamente (0x10). La lista ser cclica mientras se ejecute el MPLAB-SIM.

Estmulo de Reloj El estmulo de reloj genera una onda regular sobre un pin con un ciclo obligatorio especificado en trminos de los ciclos de reloj del procesador (figura 26). Si abre el dilogo "Debug>Estmulo del Simulador>Estmulo de Reloj...", podr ingresar varios estmulos de reloj como se Fig. 26 muestra en la figura 26. Cuando ejecute el Este archivo ser usado para introducir programa usando las configuraciones essecuencialmente estos valores en un regis- tablecidas en la figura, RB3 ser Alta para tro. Seleccione "Estmulo de Simulador>Est- 4 ciclos de reloj, y luego Baja para 6 ciclos mulo de Registro>Activar..." (figura 23) de reloj. RB4 ser Alta para 8 ciclos de reloj Luego configure "loop" para que se ubi- y luego Baja para 8 ciclos de reloj. Ambos que en el programa cuando se introduzvalores se repetirn hasta que salga del can los valores, y para propsitos de deMPLAB o los elimine usando este dilogo. mostracin, introdzcalos en el registro de archivo en la direccin 0x0d. Luego de configurar "loop" y "0d" en sus cajas corresInterrupcin Condicional pondientes, presione "Explorar" para que aparezca el dilogo de archivo, en el cual El dilogo punto de interrupcin compodr seleccionar tutor84.reg como el ar- plejo es til para configurar un punto de inchivo de estmulo de registro (figura 24). terrupcin en una condicin compleja y Abra la ventana "Ventana>Registros de especial. archivo" para ver el efecto de este estmulo, aparecer el listado de la figura 25. Resetee y luego ejecute instruccin por Cmo Cargar el PIC instruccin el procesador. Cada vez que llegue a 'loop', el valor en el registro de arUna vez que estamos seguros que nueschivo en la direccin 0x0D cambiar. La tro programa funciona de acuerdo con el lista de valores en tutor84.reg ser secuen- test realizado mediante el empleo de cialmente introducida en el registro de ar- nuestro programa, estamos en condicio-

Todo sobre PICs

47

CMO ESCRIBIR PROGRAMAS

HACER

LA

VERIFICACIN

EN LOS

PICS

nes de grabar nuestr o PIC, para lo PIC cual debemos seguir las instrucciones dadas en el captulo 2. Cabe aclarar que el programa MPLAB tiene, en su barra de herramientas, un cono de ayuda (HELP) que explica paso por paso todo lo que se puede hacer con el programa. Para muchos, el problema reside en que los textos de ayuda estn en ingls. Para que tenga una idea de la informacin que contienen dichos archivos de ayuda, nosotros hemos traducido unas 450 pginas que paulatinamente iremos publicando a modo de guas para diferentes funciones. Veamos entonces, algunos de los productos que podremos consultar: Caractersticas del Editor

del lenguaje ensamblador, el linker y el bibliotecario, que pueden ser descargados de la pgina web de Microchip. Tambin est disponible una gua del linker en las direcciones de Internet que fuimos especificando. PICMASTER, ICEPIC, MPLAB-ICE Estas son Guas de Usuario separadas para la operacin de emuladores que pueden descargarse de la pgina web de Microchip. PICSTART Plus y PRO MATE Estos son programadores de dispositivo de Microchip. Vea la Gua del Usuario MPLAB PRO MATE y la del PICSTART Plus. Ambos manuales pueden descargarse de la pgina web de Microchip.

El editor de archivo del programador MPLAB-C17 con el MPLAB tiene un conjunto de caracEl compilador 17cxxx opera con el tersticas para la escritura y edicin del c- MPLINK y el Administrador de Proyecto del digo fuente. MPLAB. Vea la Gua del Usuario de MPLABC17 y la Gua del Proyecto v3.40 del Reloj de Detencin MPLAB. El Reloj de Detencin le permite medir el tiempo de ejecucin del cdigo. No siempre es preciso en la ejecucin instruccin por instruccin. El reloj de detencin calcula el tiempo en base a la frecuencia del reloj del microPIC. Configure la frecuencia del reloj en el dilogo "Opciones>Configurar Procesador>Frecuencia de Reloj...". Proyectos de Archivo Mltiple Usando el linker, puede tener dos o ms archivos en un proyecto. Vea la Gua del Proyecto v3.40 de MPLAB para ms informacin. MPASM El MPASM, junto con la gua del Usuario de MPLINK & MPLIB describe la operacin Herramientas de Tercer Orden El PIC C de alta tecnologa, el compilador CCS y el PIC BASIC de MicroIngeniera pueden ser usados con el MPLAB. Vea sus documentaciones respectivas para obtener ms informacin sobre su uso con el MPLAB.

Problemas Vaya a las conferencias sobre el microPIC y Sistemas de Desarrollo en www.microchip.com para hacer preguntas que pueden ser tiles para principiantes o expertos. Los ingenieros de Microchip Application, experimentados usuarios del microPIC, y los ingenieros de Sistemas de Desa-

48

Todo sobre PICs

CMO ESCRIBIR PROGRAMAS

HACER

LA

VERIFICACIN

EN LOS

PICS

Figura 27 Figura 28

Todo sobre PICs

49

CMO ESCRIBIR PROGRAMAS

HACER

LA

VERIFICACIN

EN LOS

PICS Figura 28 (continuacin)

rrollo participan en estas conferencias. Este es el modo ms rpido para vencer los obstculos que puedan surgir, informar sobre problemas o simplemente revisar las preguntas ya registradas de otros usuarios a fin de obtener ayuda.

loj con microcontrolador que emplea un display de cristal lquido de muy bajo consumo. El diagrama posee el valor de cada componente. El programa en Assembler se grafica en la figura 28.

EJEMPLOS DE APLICACIN CON PICS Reloj con Display de Cristal LCD

Lector de Tarjeta Magntica Codificada.

Este circuito es muy fcil de construir y emplea un PIC preprogramado, lo cual no En la figura 27 se da el circuito de un re- impide que un lector experto pueda pro-

50

Todo sobre PICs

CMO ESCRIBIR PROGRAMAS


gramar su propio componente, dado que brindamos el listado del programa compilado. El prototipo emplea un lector de tarjeta magntica Canon CCM02 2NO 21 93 20 u otro similar. Precisamente, la dificultad de conseguir este componente en el mercado local es causa de que an no hayamos

HACER

LA

VERIFICACIN

EN LOS

PICS

Figura 29

Figura 30

Todo sobre PICs

51

CMO ESCRIBIR PROGRAMAS

HACER

LA

VERIFICACIN

EN LOS

PICS

Figura 31
publicado un artculo completo sobre el tema, que tenemos a disposicin desde hace varios meses. Sin embargo, confiamos en que los proveedores locales importen a la brevedad estos elementos con el obejeto de que podamos publicar la mencionada nota. En la figura 29 se da el circuito completo del lector de tarjeta (smnartcard o tarjeta inteligente) con el valor de sus componentes. En la figura 30 se da el diseo de la placa de circuito impreso para realizar el montaje y en la figura 31 se da el listado del programa compilado, que deber ser cargado en el PIC. Cuando se desea grabar una tarjeta con un cdigo almacenado en el PIC, se debe colocar el jumper (puente) JP2, cuando se desea leer el cdigo grabado en la tarjeta, se debe hacer un puente en JP1 y quitar el de JP2.

52

Todo sobre PICs

Transmisin de Datos a Travs de un PIC


Introduccin Tal como lo dice MICROCHIP en sus pginas Web, y segn lo que hemos podido experimentar, los microcontroladores PIC16CXXX son de alto rendimiento y estn basados en EPROM de 8-bit. Algunos de los miembros de esta serie (como PIC16C71 y PIC16C84) no tienen un port (puerto) serie asincrnico. Este captulo describe la implementacin del software que permite la comunicacin con el exterior por medio de las interrupciones de la I/O Serie Asincrnicas (Half Duplex RS-232 Communications). Los PICs pueden operar a altas velocidades con un mnimo de 250ns de tiempo de ciclo (con una frecuencia de reloj de entrada de 16MHz).

Para probar las rutinas de comunicaciones RS-232, utilizamos la implementacin de un Voltmetro Digital simple (DVM) que es un sistema de Adquisicin de Datos Analgico usando un PIC16C71 que publica Microchips en una de sus Notas de Aplicacin. Cabe aclarar que el sistema montado ha respondido satisfactoriamente, siendo la intencin del autor, que el lector conozca las posibilidades de estos componentes "a modo infor mativo", quedando para mativo" ms adelante, la descripcin de la forma de operacin de estos componentes para que puedan armar sus propios sistemas, dado que ya hemos explicado la forma de programarlos e, incluso, dimos algunas aplicaciones para programar PICs desde una PC con muy pocas exigencias.

Figura 1

Todo sobre PICs

53

TRANSMISIN

DE

DATOS

A TRAVS DE UN

PIC
realiza en el archivo de encabezado rs232.h. Se pueden obtener transmisiones de muy alta velocidad si se realiza con "demoras de software" en lugar de ser conducida "a cada interrupcin"; de cualquier modo, el procesador se dedicar totalmente a cumplir con este trabajo. La transmisin de un byte se realiza apelando a la funcin PutChar y luego se transmite el byte de datos en el TxReg. Antes de apelar a esta funcin (PutChar), los datos deben cargarse en TxReg, y debe asegurarse que el puerto serie est libre. El puerto serie est libre cuando los bits _txmtProgress y _rcvOver se encuentran despejados. La funcin PutChar permite lo siguiente: 1. Asegurarse que los bits _txmtProgress & _rcvOver estn despejados. 2. Cargar TxReg con datos a ser transmitidos. 3. Llamar a la funcin PutChar.

Implementacin No es nuestra intencin describir en detalles la implementacin del softwar e half duplex (comunicacin en un solo sentido por cable conductor), simplemente queremos informarlo sobre cmo hacerlo. El pin de transmisin usado en el cdigo de ejemplo es RB7, y el pin de recepcin est conectado al pin RA4/T0CKI (figura 1). Estos pines estn debidamente conectados con la traslacin de tensin adecuada a/desde niveles CMOS en el patrn RS-232. NOTA: Este captulo est dirigido a quienes conocen el manejo de los PICs y difcilmente podr ser comprendido por principiantes.

Transmisin de Datos RS-232 desde el PIC El modo de transmisin se puede implementar en forma directa a travs del software. Una vez que se conocen la frecuencia de reloj de entrada y el promedio de informacin a transmitir (baud), se puede calcular la cantidad de ciclos de reloj por bit. El cronmetro del chip Timer0, con su preescalmetro, puede ser usado para generar una interrupcin en el desbordamiento de TMR0. Esta interrupcin del desbordamiento TMR0 puede ser usada como regulacin de tiempo para enviar cada bit. La frecuencia de reloj de entrada (_ClkIn) y el Promedio Baud (_BaudRate) pueden ser programados por el usuario y el valor de tiempo lmite de TMR0 (el perodo para cada bit) es calculado en el tiempo de ensamble. En el tiempo de ensamble tambin se determina si debe asignarse o no el pre-escalmetro a Timer0. Este clculo se

Recepcion de Datos RS-232 por el PIC La implementacin del modo de recepcin difiere poco del modo de transmisin. A diferencia del pin de transmisin (TX en el cdigo del ejemplo es RB7, pero podra ser cualquier pin I/O), el pin de recepcin (RX) debe conectarse al pin RA4/T0CKI. Esto se debe a que en la recepcin, el Bit de Inicio, que es asincrnico por naturaleza, debe ser detectado. Para detectar el bit de Inicio, cuando se coloca en el modo Recepcin, el mdulo Timer0 es configurado en el modo Contador. El registro OPTION es configurado de modo que el mdulo Timer0 sea colocado en el modo Contador (incremento en el reloj externo del Pin RA4/T0CKI) y ajustado

54

Todo sobre PICs

TRANSMISIN

DE

DATOS

A TRAVS DE UN

PIC

Figura 2

Generacin del bit de Paridad

Se puede activar la paridad en el tiempo de ensamble, si se configura la seal "_PARITYENABLE" a TRUE. Si se activa, la paridad puede confipara que aumente en el extremo de cagurarse en paridad PAR o IMPAR. En el moda del pin RA4/T0CKI sin asignarle el predo de transmisin, si se activa la paridad, escalmetro. Luego de realizar esta confiel bit de paridad es calculado y transmitiguracin, TMR0 (Archivo Reg 1) es cargado como el noveno bit. En recepcin, la do con 0xFF. Un cambio de nivel en T0CKI paridad es calculada y comparada con el hace que TMR0 gire desde 0xFF hasta 0x00, noveno bit recibido. Si no son iguales, se as genera una interrupcin que produce debe ajustar el bit de error de paridad en un Bit de Inicio. el Registro de Status/Control del RS-232 (el El pin RA4/T0CKI es probado nuevamen- bit _ParityErr del SerialStatus reg). El bit de te para asegurar que la transicin en TMR0 paridad se calcula usando el algoritmo sea la correcta. Luego de detectar el bit mostrado en la figura 2. Este algoritmo es de inicio, se reconfigura el mdulo Timer0 altamente eficiente usando las instrucciopara que se incremente en el reloj interno nes SWAPF y XORWF del PIC16CXXX (con y se le asigna un pre-escalmetro de capacidad de llevar al destino, como as acuerdo a la frecuencia de reloj y al pro- tambin al mismo registro de archivo o al medio del "baud" (configurados de la mis- registro W). La sub-rutina (llamada GenPama manera que en el modo transmisin). rity) se encuentra en el archivo txmtr.asm. El puerto serie de software es colocado en el modo recepcin cuando se hace un llamado a la funcin GetChar. Opciones de Antes de llamar a esta funcin, asegreTiempo de Ensamble se que el puerto serie est libre (por ejemplo, los bits de status _txmtProgress y _rcEl "firmware" est escrito como una rutivOver deben estar en "0"). Para concluir la na de propsito general, y el usuario debe recepcin de un byte, deben guardarse especificar los parmetros que se mueslos datos en RxREg y despejarse el bit_rctran en la Tabla 1 antes de ensamblar el vOver. programa. El registro Status/Control se desResumen de la funcin GetChar: cribe en la Tabla 2. 1. Asegurarse que los bits _txmtProgress & _rcvOver estn despejados. 2. Llamar a la funcin GetChar. 3. El Byte recibido debe estar en TxReg luego de despejarse el bit _rcvOver.

Hardware El hardware est primariamente relacionado con la transmisin de tensiones se-

Todo sobre PICs

55

TRANSMISIN

DE

DATOS

A TRAVS DE UN

PIC

TABLA 1: LISTA DE OPCIONES DE TIEMPO DE ENSAMBLE _ClkIn: Frecuencia de reloj de entrada del procesador _Baud Rate: Promedio de informacin a transmitir (baud) deseado. Puede usar cualquier valor vlido. El mximo promedio "baud" posible depender de la frecuencia de reloj de entrada. Se debe probar de 600 a 4800 Baud cuando se usa un Reloj de Entrada de 4MHz. Se puede emplear un valor entre 600 a 19.200 Baud cuando la frecuencia del reloj de entrada es de 10MHz. Se pueden emplear promedios ms altos usando frecuencias de reloj de entrada ms altas. Luego de especificar _BaudRate & _ClKin, el programa seleccionar automticamente todos los registros de tiempo apropiados. _DataBits: Puede especificar de 1 a 8 bits de datos. _StopBits: Limitado a 1 Bit de Detencin. Debe ser configurado. _PARITY_ENABLE: Seal de activacin de paridad. Configrela en VERDADERA o FALSA. Si usa PARIDAD, configrela a VERDADERA, de otro modo en FALSA. Vea la descripcin siguiente de la seal "_IMPAR_PARIDAD". _ODD_PARITY: Configrela en VERDADERA o FALSA. Si lo hace en VERDADERA, entonces usar la PARIDAD IMPAR, de otro modo usar el Esquema de Paridad PAR. Esta seal se omitir si _PARITY_ENABLE se configura en FALSA. _USE_RTSCTS: Seales de Hardware RTS & CTS. Si las configura en FALSO, no usar hardware. Si las configura en VERDADERO, RTS & CTS usarn hasta 2 Pins I/O del PORTB.

TABLA 2: ASIGNACION DE BITS DE STATUS SERIE / REGISTRO DE CONTROL Bit #: 0 Nombre: _txmtProgress Descripcin: 1 = Transmisin en progreso - 0 = Transmisin por lnea libre Bit #: 1 Nombre: _txmtEnable Descripcin: Configure este bit en inicializacin para permitir la transmisin. Este bit se usa para abortar la transmisin. Se debe abortar la transmisin si en medio de ella (por ejemplo, cuando el bit _txmtProgress es "1") el bit _txmtEnable se encuentra despejado. Este bit se ajusta automticamente cuando se llama a la funcin PutChar. Bit #: 2 Nombre: _rcvProgress Descripcin: 1 = Mitad de una recepcin de byte; 0 = Se ha completado la recepcin de un byte (en RxReg) y se ajusta cuando se detecta un bit de inicio vlido en el modo recepcin. Bit #: 3 Nombre: _rcvOver Descripcin: 0 = Culminacin de la recepcin de un byte. El cdigo del usuario puede registrar este bit luego de llamar a la funcin GetChar y verificar su configuracin. Luego de hacerlo, el byte recibido estar en RxReg. Otros bits de status tambin deberan revisarse por si aparecen errores en la recepcin. Bit #: 4 Nombre: _ParityErr Descripcin: 1 = Error de paridad en la recepcin (no relacionado con el tipo de paridad elegido). No es aplicable si no usa la Paridad.

56

Todo sobre PICs

TRANSMISIN
Bit #: 5 Nombre: _FrameErr Descripcin: 1 = Error de composicin en la recepcin. Bit #: 6 : No se usa. Bit #: 7 Nombre: _parityBit Descripcin: El noveno bit de transmisin o recepcin. En el modo transmisin, el bit de paridad del byte a ser transmitido se guarda en el mismo bit. En el modo recepcin, el noveno bit (o bit de paridad) recibido se guarda en el mismo bit. No es aplicable si no usa la Paridad.

DE

DATOS

A TRAVS DE UN

PIC

La Figura 4 muestra una interfase muy econmica RS-232 que permite la comunicacin con una PC-AT sin requerimientos de potencia externa. El circuito se alimenta desde una lnea RS-232 (DTR) y requiere una corriente menor que 5mA. De este modo, para comunicarse, el anfitrin deber mantener la lnea DTR alta y la RTS baja. La tensin se obtiene de la lnea DTR, y se requiere que la DTR se mantenga alta y sea de por lo menos 7V. La negativa -5 a -10V requerida por LM301 se obtiene desde la lnea RTS y, por consiguiente, el anfitrin debe mantener la RTS baja. Este circuito es posible por el bajo consumo de corriente del PIC16C71 (tpicamente 2mA).

gn el protocolo RS-232 con niveles CMOS y viceversa. Microchip sugiere tres circuitos entre los cuales el usuario puede elegir el que mejor se aplique a su equipamiento. La diferencia fundamental entre cada solucin es el costo en relacin a la cantidad de componentes. Los circuitos de las figuras 3 y 4 son ms econmicos pero tienen ms componentes que el circuito de la figura 1. Este circuito transmite y recibe datos por medio de una lnea RS-232, que usa un chip simple (MAX-232A) alimentado con una tensin simple de +5V. El circuito de la Figura 3 es una interfase RS-232 de bajo costo pero requiere dos chips y una fuente de tensin simple de +5V.

Programa de Prueba Obviamente reiteramos que cualquier entendido puede comprender cmo es posible "interpretar" los datos de un PIC y establecer una comunicacin a travs de una interfase RS232, pero los que no estn "duchos" en el tema podrn encontrarse un poco "perdidos" con esta explicacin. Para probar los mdulos de transmisin y recepcin, se ha escrito un programa principal en el cual el PIC16C71 espera la recepcin de un comando de un anfitrin a travs de RS-232. En la recepcin de un byte (los comandos vlidos son 0x00, 0x01, 0x02 & Figura 3 0x03), el byte recibido se considera como el nmero de canal A/D del PIC16C71, y se selecciona el canal requerido. Se inicia entonces una conversin

Todo sobre PICs

57

TRANSMISIN

DE

DATOS

A TRAVS DE UN

PIC
Ensamblador Universal de Microchip. El cdigo no puede ensamblarse usando viejos ensambladores sin modificaciones significativas. Al usuario que no tenga el nuevo ensamblador MPASM, se le sugiere cambiar a la nueva versin. El Programa de MS Windows (DVM.EXE) se ejecuta bajo MS Windows 3.1 o ms alto. El programa no tiene mens y aparece como una pequea ventana que muestra Datos A/D y se ejecuta como un trabajo de fondo. Hay algunas opciones de lnea de comando que describimos a continuacin.

Figura 4

A/D, y cuando se completa la conversin (en aproximadamente 20ms), los datos digitales (8-bits) son transmitidos de vuelta al anfitrin. Se escribi un programa que se ejecut en una IBM PC/AT para que acte como un anfitrin y recoja datos A/D desde el PIC16C71 a travs de un puerto RS-232. El programa de Windows (DVM.EXE) se ejecuta como un trabajo de fondo y muestra datos A/D en una pequea ventana (similar a la del programa RELOJ que viene con Windows MS). El programa de Windows y el PIC16C71 actan juntos como un sistema de adquisicin de datos del cual nos ocuparemos en futuros artculos. El cdigo de fuente PIC16CXXX, junto con el Programa DVM de Microsoft Windows (ejecutable en una PC/AT bajo Windows MS 3.1 o ms alto) estn disponibles en BBS de Microchip. El cdigo de ensamble para el PIC16CXXX debe introducirse usando un

-Px: x es el nmero de puerto comm (por ejemplo, - P2 selecciona COM2). El puerto por defecto es COM1. -Cy: y es el nmero de canales A/D a mostrar. La configuracin por defecto es un canal (canal #1). -Sz: z es el nmero de punto flotante que representa el factor de la escala (por ejemplo - S5.5 debera mostrar los datos como 5.5*<8bit A/D>/256). El valor por defecto es 5.0 volts. -S0: mostrar los datos en formato natural sin escalamientos. *****

58

Todo sobre PICs

Kit de Programacin de PICs


INTRODUCCION Cuando se ensea un tema que conjuga las caractersticas de hardware y software, se trata de generar un nuevo aficionado sabiendo que el primer paso no es ensear a programar sino ensear a realizar un dispositivo prctico; el inters por la programacin seguramente vendr luego. Yo me imagin que la mejor manera de explicar todo esto sobre un PIC es relatando cmo se concreta el dispositivo, desde la idea inicial hasta la realizacin prctica, suponiendo que el programa lo disea otra persona a requerimiento nuestro. ACLARACION DEL AUTOR Este captulo fue escrito para que Ud. arme el dispositivo y no para que lo lea alegremente y deje que otros realicen la experiencia prctica. Por favor, decida si va a tomar el tema en serio, y si la respuesta es s; no dude en armar el dispositivo propuesto. Si no lo hace es muy probable que en determinado momento deje de entender lo que est leyendo y crame que no es culpa ma. Como ya dijera, si Ud. pretende aprender a andar en bicicleta en forma terica es un firme candidato al yeso.

(captulo escrito por el Ing. A. H. Picerno)

QUE NOS PROPONEMOS ARMAR No tendremos grandes pretensiones sobre el dispositivo a armar, ya que slo lo

tomamos como ejemplo. En principio, un simple circuito que encienda un conjunto de leds en secuencia es suficiente. Es decir que nuestro dispositivo va a tener 4 leds rojos que numeraremos del uno al cuatro. Cuando lo encendamos, se encender primero el led 1 por un instante, luego se apagar y se encender el dos y as sucesivamente hasta que se enciendan los cuatro leds; posteriormente al apagado del nmero 4 se vuelve a comenzar una nueva secuencia por el nmero 1. En principio, el tiempo para completar una secuencia no se considera como algo que debe ser muy preciso y se lo ubica en el rango de medio segundo con posibilidad de variarlo slo por modificacin del programa. El dispositivo debe ser barato y utilizar un PIC 16C84 o 16F84, que cuesta menos de 8 dlares, comprado por unidad (posteriormente se pretende desarmar el dispositivo y armar otros; por esa razn se eligieron PICs fcilmente programables y reprogramables). Por otro lado, el circuito debe ser muy simple y con pocos componentes ya que pretendemos armarlo en un protoboard (panel de armado sin soldador). Vamos a suponer que no tenemos un dispositivo programador a nuestra disposicin; es decir que deberemos armar tambin un dispositivo programador de nuestros PICs que se conecte al puerto paralelo de una PC (el puerto de impresora). Nuestra intencin es que construya un dispositivo para programar PIC que sea muy

Todo sobre PICs

59

KIT

DE

PROGRAMACIN

DE

PICS Figura 1

sencillo de modo que se pueda armar en el mismo protoboard y que se conectar a la PC por intermedio de una manguera. Como todos sabemos, un dispositivo para una PC (hardware), siempre necesita un programa que lo controle (software). Nuestra intencin es que Ud. no compre nada ms que lo imprescindible; as que vamos a usar un software gratuito llamado NOPPP que puede bajarse por Internet y cuya distribucin hemos facilitado hace un tiempo a los compradores de Saber Electrnica (si an no lo tiene y desea recibirlo sin cargo, contctese telefnicamente con el departamento de Atencin al Cliente al 011-4301-8804 o por e-mail a ateclien@vianetworks.net.ar). Antes de continuar, quiero realizar algunas aclaraciones con respecto a los trminos utilizados en este artculo. Cuando decimos programar nos estamos refiriendo a disear un programa para un PIC y a la persona que realiz ese trabajo la llamamos programador; cuando decimos cargar nos estaremos refiriendo a llenar con datos la memoria de un PIC y el dispositivo que realiza esta funcin lo llamaremos cargador de PICs. Aunque parezca increble nuestro amplio idioma no tiene una palabra precisa que diferenciara a la accin del aparato y se suscitaban graves confusiones al leer, por algo tan simple. En realidad, s estaba acuado un trmino prctico para el dispositivo: quemador de PICs, pero el mismo slo se puede aplicar a aquellos PICs que slo se pueden grabar una sola vez. Por otro

lado, el trmino se puede confundir con un dispositivo que funcionando mal quema a los PIC en lugar de cargarlos, tal como el autor mencionar con respecto a un programador comercial. EL CIRCUITO DEL PROGRAMADOR Un circuito con PIC siempre se compone de dos secciones. El circuito del dispositivo deseado y los necesarios componentes perifricos imprescindibles para que el PIC funcione, a saber clock y reset (la primer seccin cambia con cada proyecto, en tanto que la segunda puede ser comn a muchos proyectos). Ambos circuitos perifricos tienen diferentes opciones: el clock puede ser a cristal cuando se requiera precisin, o a RC (como en nuestro caso) cuando slo se requiere que la secuencia de encendido tenga un tiempo aproximado. En cuanto al reset, ste puede ser externo con un pulsador o interno y automtico, cada vez que se conecta la alimentacin de 5V. Una vez

60

Todo sobre PICs

KIT
definidas estas cosas se puede dibujar el circuito completo, tal como lo mostramos en la figura 1. Observemos primero la seccin perifrica imprescindible. El clock est generado por un oscilador RC realizado con el PIC, R1 y C1 (elegidos para obtener una secuencia completa que dure un segundo aproximadamente), en tanto que el reset se realiza en forma automtica, cada vez que se enciende el equipo, por intermedio de R6. Nuestro circuito de aplicacin no puede ser ms sencillo, slo utilizamos cuatro LEDs sobre las patas RA0 a RA3 (puerto A tomado parcialmente) y sus correspondientes resistores de pull up (resistores a fuente). Nada ms simple y fcil de armar en un panel protoboard.

DE

PROGRAMACIN

DE

PICS

Figura 2

INSTRUYENDO AL REY MICRO

El maestro de nuestro PIC recin comprado es nuestra PC, ella le va a ensear a realizar su trabajo. Pero la PC no tiene un zcalo para PIC, entonces en qu parte de mi PC conecto el PIC?. La respuesta es: como mi PC no tiene una conexin prevista para el PIC yo la debo Qu ocurrira si compro los compoconstruir. El dispositivo con un zcalo para nentes, los armo y pruebo directamente conectar el PIC e instruirlo se llama genel circuito? No va a funcionar porque como el PIC ricamente Programador de PICs, pero nosotros en este artculo convenimos en no est instruido para realizar ninguna llamarlo cargador de PICs y es como funcin y los LEDs van a permanecer todos encendidos. El PIC tiene una memoria un apndice de nuestra PC, conectado interna que debe cargarse con nmeros con un cable al puerto paralelo de la misma. binarios de 8 dgitos; exactamente tiene 48 posiciones de memoria (numeradas Si la PC tiene dos puertos paralelos de desde el 0 hasta el 2F en nmeros hexasalida se usar uno para la impresora y el decimales), en donde se le indicar que tarea debe realizar o qu datos fijos debe otro para nuestro programador, si slo tiene uno, se desconectar provisoriamente cargar para ejecutar esas tareas. la impresora para conectar el programaEn nuestro caso activar transistores indor, o mejor aun, se conectarn ambos ternos en algunas patas del puerto A (predispuestas como salidas) de modo de dispositivos a travs de una caja selectora que se consigue en los negocios de generar cortocircuitos momentneos a computadoras y se usa para conectar masa en forma secuencial.

Todo sobre PICs

61

KIT

DE

PROGRAMACIN

DE

PICS
PIC16C84, PIC16C83 y PIC16F84 que son los ms utilizados y los nicos que utilizamos en nuestra serie Educando al rey Micro. Con respecto al hardware, Ud. puede usar el que propone el autor del software que es muy sencillo o usar otro que le propongo yo ms adelante y que tiene algunas ventajas con respecto a una mejor forma de los pulsos de programacin. El NOPPP es suficientemente sencillo como para implementarlo en un panel protoboard, pero como es un hardware que deberemos usar ms adelante para programar otros PICs conviene armarlo en forma ms definitiva utilizando una plaqueta de circuito impreso o una plaqueta ojalillada. Si Ud. slo desea armar el circuito de este artculo puede armar tanto el cargador como el circuito de aplicacin en dos lugares distintos del mismo protoboard. Si quiere algo ms definitivo utilice el circuito que le propongo yo, que es bastante ms profesional ya que cuenta con un integrado lgico con 6 amplificadores buffers que separa la PC del programador propiamente dicho.

dos impresoras a la misma PC. Ver figura 2. Si Ud. tiene un mnimo conocimiento sobre computadoras, sabr que un dispositivo conectado a la PC es totalmente intil si no est acompaado de un programa instalado en el disco rgido de la misma. En algunos casos se necesitan dos programas, a saber: el driver del dispositivo y un programa de aplicacin que utilice dicho dispositivo. En el caso de dispositivos que se conectan en el puerto paralelo, el programa driver no es necesario porque dicho puerto ya est debidamente habilitado para usar la impresora. Lo que s se requiere obligatoriamente, es un software de aplicacin del programador que suele proveerlo el fabricante del mismo. Programadores y software de aplicacin de los mismos hay muchos. Algunos son muy simples y econmicos (tan econmicos que muchos se entregan gratuitamente por Internet, es decir que el autor regala el software y da las explicaciones para armar el hardware) y otros son muy complejos y caros. La diferencia entre unos y otros suele ser la posibilidad de aceptar ms tipos de PICs (adems del 16C84 y 16F84 existen muchos otros) e inclusive microprocesadores o memorias de otras marcas. Tambin se diferencian en la velocidad a la cual cargan el PIC; los hay de alta productividad que trabajan con un elevado flujo de datos y otros ms lentos que slo sirven para tareas de aprendizaje. En nuestro caso vamos a trabajar, como lo hemos hecho desde el comienzo de nuestras notas en Saber Electrnica, con un software que se llama NOPPP, que es absolutamente gratuito y se puede bajar desde Internet. Este software est previsto para ser usado slo con los

LAS SEALES DE PROGRAMACION DE UN PIC Si Ud. est acostumbrado a trabajar con memorias serie, no va a tener inconvenientes para entender cmo se programa un PIC y puede saltar esta seccin. Si no lo est, lea atentamente esta seccin en donde develaremos el misterio de la carga de un programa en nuestro hasta ahora inculto rey. El PIC, como una memoria, tiene una pata que predispone el dispositivo para leer o para escribir. Si la pata 4 del PIC est a un potencial comprendido entre 13 y

62

Todo sobre PICs

KIT
14 V, el PIC est preparado para escribir los datos que provienen de la PC. Si la pata 4 est por debajo de 6V, el dispositivo est previsto para ser ledo. Los datos a leer o escribir se ponen/obtienen de la pata 13 del PIC con la pata 12 del mismo que opera como clock. Aquellos que conocen el proceso de carga de datos en una memoria serie, no tendrn mayores inconveniente en entender la frase anterior. Para aquellos que no conocen el proceso explicamos lo siguiente: Un PIC se lee/escribe accediendo a las diferentes posiciones de memoria por la misma pata por la que se obtienen/ingresan los datos (la pata 13). La seal primero elige la posicin de memoria a ser leda/escrita, y luego que esa posicin est

DE

PROGRAMACIN

DE

PICS

Figura 3

accesible se escriben/leen los datos. El clock que se coloca en la pata 12 sirve para indicar en qu momento se debe transferir la informacin. Los datos pueden estar sobre la pata 13 todo el tiempo que Ud. desee, ya que no sern ni ledos ni escritos por la PC hasta que se produzca un cambio de estado (de alto para bajo) en la pata 12. Al autor le gusta explicar estos hechos haciendo un paralelo con la ejecucin de un penal. El jugador 13 pone la pelota pero hasta que el 12 no la patea no sabemos si ser gol. El juzgamiento lo realiza el juez que anular el penal si no coincide con su silbato ya sea que est convertido o no. En la figura 3 mostramos las formas de seal indicadas por Microchip para leer/grabar un PIC. El lector observar que dentro del comando existe una primera seccin de 6 bits que indica la posicin de memoria a ser leda/escrita y luego la lnea de datos permanece en estado de alta impedancia por un intervalo de tiempo que depende de la operacin (durante ese tiempo el clock est apagado). Por ltimo ingresan/egresan los datos. Las conexiones de fuente y las seales deben ser aplicadas segn una secuencia predeterminada que

Todo sobre PICs

63

KIT

DE

PROGRAMACIN

DE

PICS Figura 4
mismo criterio a un ritmo tal que el dato est presente por lo menos durante 100nS. H) Cuando todos los datos fueron cargados se debe esperar 1 segundo. I) Desconectar la fuente de 13V. J) Desconectar la fuente de 5V. K) Retirar el micro grabado.

Por sobre todas las cosas debe respetarse el criterio de no sacar un PIC de su zcalo con las fuentes conectadas, porque puede desprodebe respetarse invariablemente. Los gramarse o, peor aun, daarse definitivanombres de las seales se aclaran en la fi- mente. gura 4. Tambin es muy importante respetar las tensiones de fuente y no demorar la A) El primer paso es colocar el PIC en llegada de datos, luego conectar VPP el zcalo del programador con seales y (porque podran cargarse datos falsos por fuentes a potencial de masa. interferencias electromagnticas). B) Levantar la tensin de fuente VDD a Como usted puede observar de la desun potencial de 5V 0,2V por la pata 14 cripcin anterior la entrada RB6 es utiliza(VDD). da como clock y la RB7 como entrada de C) Levantar la tensin de fuente VPP a datos en una clsica operacin de transun potencial de 13V 0,3V por la pata 4 ferencia de datos en serie. (MCLR NEGADO). Observe que hay un tiempo entre el D) Esperar en esas condiciones un momento en que MCLR NEGADO sale de tiempo superior a 1mS. la condicin de reset hasta que aparece E) Posicionar el primer dato en la pata el primer dato o el primer pulso de clock. 13 (RB7) con un potencial alto (mayor a 4 Tambin hay un tiempo mnimo para la V) o bajo (menor a 1V). permanencia de un dato en la entrada F) Cuando la pata 12 (RB6) pase a un (la representacin usada para un dato estado bajo, inferior a 1V, el dato se car- significa que el mismo puede ser alto o ga en la memoria. bajo, depende del bit que se est graG) Continuar cargando los datos con el bando). Lo que no hay es un tiempo m-

64

Todo sobre PICs

KIT
ximo pero evidentemente cuando mayor es este tiempo ms lenta ser la carga del programa. El tiempo ms adecuado depende de factores tales como el largo del cable utilizado para conectar el programador a la PC. Si el cable es largo, los pulsos tienden a deformarse y atenuarse, sobre todo cuando son de corta duracin (100nS equivalen a una frecuencia de 10MHz). Para evitar problemas, todos los programadores trabajan a velocidades inferiores a la mxima, sobre todo considerando que la capacidad de memoria no es muy grande y para el uso no comercial no son imprescindibles grandes velocidades de grabacin.

DE

PROGRAMACIN

DE

PICS

PREDISPOSICION DE UN PIC Un cargador de PIC debe permitir tambin una operacin de verificacin para cuando el usuario tiene dudas respecto de la condicin de un determinado PIC (vaco o lleno). Solo que el programa almacenado debe ser inviolable en caso de que la persona que lo carg as lo haya dispuesto. Esto se llama predisponer el PIC y no slo se lo predispone para hacerlo inviolable, sino que adems se determinan otros importantes parmetros de funcionamiento como por ejemplo que est predispuesto para un clock a RC o que contenga un temporizador de reset interno. Las predisposiciones no forman parte del programa del PIC aunque pueden incluirse junto con ste. Algunos cargadores de PICs preguntan sobre la predisposicin antes de grabar el PIC. La pregunta sobre la predisposicin deseada aparece en la pantalla de la PC y uno elige de un men de opciones. En otros casos, las predisposiciones se escriben antes del programa

en una secuencia perfectamente predeterminada que debe respetarse a ultranza. Las predisposiciones son tres y las vamos a analizar por orden: a) La prohibicin de lectura. El PIC se programa pero el programa no puede ser ledo. Cada tanto aparece informacin en Internet sobre alguna empresa dedicada a leer PICs protegidos. Lo cierto es que todas las investigaciones del autor terminaron en el pedido de dinero adelantado, sin ninguna garanta de entrega de la informacin con posterioridad; por lo que el autor considera que se trata de un moderno cuento del to. En una de esas supuestas empresas no me solicitaron ningn dinero por adelantado, as que presuroso envi un PIC cargado con un programa que yo mismo proteg. Un mes despus y cansado de enviar e-mails que solicitaban respuesta o la devolucin del PIC, me d cuenta de que la ganancia de esa empresa estaba en los PICs que reciban gratuitamente de tontos como yo. Aclaremos que el programa protegido no se puede leer, pero el PIC se puede volver a grabar. El autor escuch tambin una especie que dice que el PIC 16Fxx fue creado por una supuesta filtracin en el secreto del programa de los PIC 16Cxx, pero el autor no tiene pruebas de la certeza de esta noticia. b) Habilitacin del timer de reset. En el pinup del PIC se puede observar que la pata llamada MCLR negado (4) tiene un doble uso. En principio sirve para predisponer el PIC en grabacin o lectura, como ya fuera comentado; pero cuando su tensin cae por debajo de 1V, el PIC se resetea y comienza la lectura del programa por el principio. Este tipo de reset se llama reset a pulsador y se utiliza para provocar alguna accin como, por ejemplo, comenzar una secuencia de encendidos de LEDS o encender un LED por un

Todo sobre PICs

65

KIT

DE

PROGRAMACIN

DE

PICS
los programas ms simples y donde se producen loops infinitos a propsito (de los que slo se sale tocando un pulsador), se suele dejar el perro guardin desconectado para evitar un funcionamiento errtico. Cada cargador de programas tiene un software diferente y esto implica que las predisposiciones anteriores, tambin llamadas fusibles de predisposicin se accionen con sentencias diferentes que sern explicadas ms adelante.

tiempo predeterminado. Este modo de funcionamiento requiere una accin externa de reset (apretar un pulsador). La misma accin de reset se puede conseguir en forma automtica cada vez que se conecta la fuente de 5V. Este modo de trabajar slo requiere que la pata MCLR (pata 4) est permanentemente conectada a 5V (con un puente o un resistor de 1k) y que el PIC est predispuesto con el Power-up Timer en ON (temporizador de encendido conectado). Cuando el temporizador est habilitado, luego de conectar la fuente de 5V, comienza un conteo interno (que dura 72ms) durante el cual el PIC pone todas sus compuertas internas en cero (reset) y recin despus comienza a efectuar los pasos que le indica el programa. A propsito, el nombre MCLR proviene de MASTER CLEAR (literalmente, limpiador maestro). c) Circuito de vigilancia (perro guardin). En realidad el PIC tiene un reset extra que opera luego de un cierto tiempo si no se realiza la operacin final del programa. Es como una especie de rutina automtica de descongelamiento que opera en caso de falla del programa. Eventualmente puede ingresar algn pulso de energa al sistema que enve al programa a un loop (rizo) eterno (una derivacin o camino cerrado sobre s mismo). Una vez que el programa ingres en ese camino no puede salir de l salvo que se produzca un reset. Si pasa un tiempo considerable sin que se llegue a la ltima sentencia del programa, el PIC analiza su predisposicin y si el Watchdog timer (literalmente perro guardin) est habilitado provoca un reset programado. En

EL CARGADOR DE PICs MAS SENCILLO EL NOPPP El NOPPP es un software para un cargador muy simple y efectivo. Realmente no tiene defectos importantes y nos permite cargar los PIC 16C83, 16C84 y 16F84 en forma muy econmica ya que el hardware correspondiente slo requiere dos diodos rpidos de seal, un BC548 y 4 re-

Figura 5

66

Todo sobre PICs

KIT
sistores, adems de una fuente regulada doble de 13 y 5V y un conector para el puerto paralelo de la PC. Ms adelante veremos el circuito completo pero para entender el funcionamiento del cargador de programas nada mejor que el circuito simplificado de la figura 5. A propsito, el nombre del software proviene de las iniciales de NO Piece Programer Pic, es decir: programador para PIC sin piezas en alusin a los muy pocos componentes que requiere. Las patas de comunicacin con el puerto paralelo de la PC estn indicadas como 1J1, 2J1, etc., ya con J1 designamos al conector de entrada y el nmero inicial indica a qu pata se dirige el cable (tambin incluimos el color del mismo). Los datos (oscilando de 0 o 5V) ingresan en sucesin por el cable 14J1 y, atravesando el resistor R2, llegan a la pata 13 del PIC. La pata 13 perteneciente al puerto B se comporta como una pata de entrada de datos en tanto el cable 2J1 se encuentra en el estado bajo es decir que

DE

PROGRAMACIN

DE

PICS

la pata 4 Vpp est a un potencial de 13V aproximadamente. Al mismo tiempo, el cable 17J1 se manda a potencial de masa para que los datos entrantes no salgan a su vez por el cable 11J1; de este modo, el diodo D1 no permite que el potencial del cable supere la tensin de barrera del diodo (es decir que el diodo D1 opera como una llave). Como ya sabemos los datos deben ser validados por medio de un cambio de estado de la seal de clock que ingresa desde la PC por el cable 1J1. Frmese una imagen mental del flujo de datos. Piense en la PC como si bombeara datos al PIC por el cable 14J1; el PIC, para no inflarse, los devuelve por el cable 11J1. En realidad, los datos ingresan por la pata 13 del PIC y se instalan en la memoria; pero a continuacin, el programa de carga verifica que el dato est en la posicin de memoria correspondiente y si as ocurre, se habilita la carga del siguiente dato. La secuencia es tal que:

Figura 6

Todo sobre PICs

67

KIT

DE

PROGRAMACIN

DE

PICS
mediante este manual tcnico, pero no se va dedicar a trabajar permanentemente con ellos, puede armarlo en un mdulo de armado sin soldaduras (protoboard) junto con el circuito de un destellador rtmico. La intencin es armar el cargador de programas, cargarle el programa de un destellador rtmico, colocar el PIC en el circuito de prueba y observar el funcionamiento. Luego, modificar algo del programa, recargar el PIC y observar el resultado sobre el circuito de aplicacin.

A) se direcciona una posicin de la memoria, B) se graba, C) se verifica esta ltima grabacin y si es correcta, D) se habilita al programa para cargar el siguiente dato. De acuerdo al programa de carga, si falla la carga de un dato se puede seguir con los otros y al final se intenta la carga del dato que no se carg. En otros, una falla de verificacin significa que el programa debe volver a cargarse completo. Ahora que conocemos el funcionamiento del cargador de programas NOPPP vamos a completar el circuito con una fuente de alimentacin y el conector para PC. Ver figura 6. Observe que las fuentes estn conformadas por dos reguladores de 5 y de 12V pero, como necesitamos un regulador de 13V, realizamos una pequea modificacin en el regulador de 12V; agregando los diodos D1 y D2 la tensin de salida se incrementa a un valor de 13,2V. El otro cambio importante es el agregado de capacitores de filtro que, como Ud. observa, siempre se ubican de a dos: un electroltico para filtrar las bajas frecuencias y un cermico disco para las altas frecuencias. Por ltimo se agrega un conector del tipo DB21 macho para conectar el dispositivo directamente a la salida de la impresora de una PC. En el circuito dibujamos el conector visto por el lado de las patas de conexiones y el cdigo de colores de cable adecuado para usar un cable plano de 5 hilos (negro, marrn, rojo, naranja y amarillo) al cual se le retuerce por encima otro de color blanco que opera como masa y blindaje. Todo este circuito es sumamente sencillo y si Ud. slo quiere conocer los PICs

NOS PREPARAMOS PARA CARGAR UN PIC Debemos trabajar con la PC para prepararla a cargar un PIC; el autor pas muchos aos de su vida observando cmo otros colegas hacan un uso intensivo de las computadoras PC y l no se animaba ms que a utilizar su vieja computadora TEXAS TI99 creando sus propios programas en BASIC. Hasta que un da se sent frente a la PC de su hijo en la soledad de su oficina y se anim a encenderla y teclear algunas ordenes (eran los tiempos del DOS y el mouse era casi un adorno). Como en una relacin amorosa, el autor fue animndose poco a poco hasta que un tiempo despus se dio cuenta que dominaba un dispositivo nuevo que pronto copara el mundo de los ingenieros en electrnica. As las cosas, diez aos despus sin ser un super experto en computacin puedo decir que domino suficientemente a mi PC para que sea una invalorable aliada en la ejecucin de mis trabajos. Tan es as, que mi jornada de trabajo comienza siempre con una especie de ceremonia, el encendido de mis dos Pentium conectadas en red. Yo me siento a escribir en la computadora con el nombre de red

68

Todo sobre PICs

KIT
Alberto pero mantengo encendida la computadora Andrs en donde guardo mis archivos y realizo el back up de mi trabajo a la espera del dibujante que la utiliza un rato despus. En fin, que mi relacin amorosa con las PC lleg a tal extremo que ya no me basta una sola mquina y si pudiera tendra un verdadero harn. Desde hace unos aos mi PC me ayuda an ms, porque forma parte de mi grupo de produccin cargando los PICs de mis proyectos. En un futuro mi PC va a sufrir un cambio de personalidad porque se va a transformar en un simulador de PICs que me permitir desarrollar dispositivos con mucha mayor velocidad para que todos los lectores tengan proyectos frescos para armar. El ingeniero Vallejo quiere que nuestra revista tenga muchos y nuevos proyectos para armar y muchos de ellos con PICs para estar a tono con nuestra nueva poca y me siento honrado porque me eligi a m para concretar esos proyectos. El simulador de PICs, junto con un programa que transforma programas en VISUAL BASIC (una modernizacin del viejo BASIC de la TI99) en programas con el set de instrucciones del PIC; es el arma de diseo ms moderna que se pueda uno imaginar. Prcticamente todo el trabajo lo realiza la PC que interpreta los deseos del

DE

PROGRAMACIN

DE

PICS

programador realizando el trabajo mas rutinario y dejndole solo el trabajo creativo. La mquina me ayudar a plasmar mis ideas en programas para el PIC. El programa se probar en forma virtual en un PIC simulado que permite optimizar el funcionamiento y cuando ya est depurado genera un circuito impreso que se disea solito, sin ayuda humana. Terminado el proyecto, el sistema entrega una transparencia con calidad fotogrfica que apoyada sobre una placa de circuito impreso virgen sensibilizada, genera una imagen virtual que luego se transforma en una imagen real con un proceso de revelado. Posteriormente el ataque con cido (el conocido percloruro) permite generar un circuito impreso listo para perforar, armar y probar. De la idea al dispositivo real solo media un pequeo intervalo de tiempo gracias a mi computadora. Si se anima a entrar en este mundo lo invito a seguirme.

CARGANDO EL SOFTWARE NOPPP Ud. debe tener el software NOPPP en su poder. La forma de obtenerlo depende de Ud.; si no tiene conexin a Internet puede comprar el CDROM ESPECIAL 2000 en nuestras oficinas, solicitarlo por correo o dirigindose al Centro Japons de Informacin Electrnica si vive en Mxico o al Cistec, si reside en Colombia o a Amexi, si reside en el Uruguay. Nosotros vamos a suponer que Ud. tiene instalado un windows 95 ( 98) en su PC y que utiliza habitualmente el explorador de windows para generar directorios y

Fig. 7

Todo sobre PICs

69

KIT

DE

PROGRAMACIN

DE

PICS

archivo Noppp.exe. Este procedimiento (directo desde el DOS) puede ser imprescindible en algunas computadoras muy lentas pero en la mayora de las mquinas puede trabajar en el DOS con una ventaFig. 8 na de windows para voltrasladar archivos. El proceso a seguir paso ver al mismo ms rpidamente. Simplea paso es el siguiente: mente pique dos veces sobre el archivo Noppp y el programa se ejecutar. a) Pique sobre el icono del explorador de windows. Se extender una pantalla como la mostrada en la figura 7. USO DE CARGADOR DE PICS b) Pique sobre el icono del disco rgido C (o algn otro disco rgido) para que se Conecte el cargador de PICs al puerto marque recuadrado en azul y luego piparalelo de la PC como le indicamos en el que sobre archivo -> nuevo -> carpeta. El artculo anterior. Con la fuente desconecrbol principal del directorio C: tendr tada observe que el PIC no est en el zahora un nuevo subdirectorio o carpeta calo, si lo est debe retirarlo con la fuente llamada nueva carpeta. Pique en ella apagada. Pique dos veces sobre el archidos veces y se habilitar un cursor para vo Noppp del directorio PIC y aparecer cambiarle el nombre. Escriba el nombre una pantalla como la que mostramos en que desee para el subdirectorio donde va la figura 9. a guardar todos sus archivos de PICs. El Esta pantalla inicial nos pregunta en autor opt por el nombre PIC. qu puerto est conectada la salida parac) Coloque el CDROM ESPECIAL 2000 lela, y nos d las opciones 1, 2 y 3. En la en el reproductor de CD y pique sobre el mayora de las mquinas (salvo que se haicono de disco para abrir la carpeta. Sella predispuesto lo contrario o que existan leccione la carpeta PROPIC y brala pims de una salida paralelo) siempre se cando sobre ella. En su interior encontrar usa el puerto 1. As que Ud. debe pulsar la el archivo que necesita llamado Noppp del tipo aplicacin. Debe picar sobre este archivo, arrastrarlo hasta el subdirectorio PIC y soltarlo all. De este modo creamos un duplicado del Noppp en el subdirectorio PIC. Ver figura 8. d) Para abrir el utilitario Noppp podemos tomar diferentes caminos. Por ejemplo podemos cerrar el windows, abrir el DOS, cambiar de directorio hasta llegar al direcFig 9 torio PIC y desde all ejecutar el

70

Todo sobre PICs

KIT

DE

PROGRAMACIN

DE

PICS

Fig 10

Fig 11

Fig 12

tecla numrica 1 para pasar a la siguiente pantalla que podemos observar en la figura 10. En esta pantalla se confirma que se est utilizando el puerto 1 y que este puerto tiene una posicin de memoria 378H. Adems el programa nos invita a conectar la fuente pero manteniendo el PIC sin ubicar en el zcalo. Luego nos indica apretar la barra espaciadora para ir a la siguiente pantalla. Ver figura 11. En esta pantalla el programa nos indica que slo soporta tres tipos diferentes de PICs y nos invita a optar por uno de los tres tipos pulsando las teclas C, F o 3. Tambin se puede hacer una verificacin del funcionamiento del cargador pulsando la tecla T. En este artculo vamos a suponer que el cargador de PICs funciona correctamente pero ms adelante pulsaremos la tecla T para ver cmo se repara el cargador. En nuestro caso luego de pulsar la tecla correcta (por ejemplo la C) aparece una nueva pantalla como la indicada en la figura 12. Esta pantalla slo nos indica que es el momento de insertar el PIC en el zcalo. Observe que la fuente est conectada. El autor considera que es mucho ms seguro desconectar la fuente, colocar el PIC y volver a conectar la fuente ya que si se hace caso omiso a la indicacin de la pantalla de la figura 10 en el sentido de conectar la fuente el software dar una indicacin del tipo programmer no conected (programador desconectado) y abortar la carga. La siguiente pantalla mostrada en la figura 12 es la ltima de la serie de predispo-

Todo sobre PICs

71

KIT

DE

PROGRAMACIN

DE

PICS
nica o nemnica. Si se volvi loco con tantos nombres extraos no se preocupe; estamos para aclararle las dudas: el formato assembler significa el idioma que usan los programadores; como el cargador de PIC no entiende ese idioma el programa se pasa por una especie de programa traductor llamado llamado MPASM que adems de la traduccin realiza un control y permite depurar errores. No se asuste que no necesita comprar el MPASM el mismo puede bajarlo de Internet. Ahora vamos a seguir con el paso a paso con intenciones de instruir a nuestro rey. Suponemos que Ud. ya tiene armados los circuitos del secuenciador y del cargador de PICs y que tiene el programa NOPPP cargado en el subdirectorio PIC de su computadora. Suponemos adems que su protoboard o circuito impreso est conectado al puerto serie de la PC y tiene una fuente de 15 V CC conectada al protoboard. Por respeto a todos los lectores que saben leer en Ingls, vamos a dar primero las explicaciones sin traduccin. Si Ud. no sabe Ingls al final ponemos la traduccin de las pantallas. Adems las explicaciones dependen de la extensin del archivo.

sicin. En esta pantalla podemos elegir la operacin que deseamos realizar entre tres seleccionables por las teclas L, S, y E que significan lo siguiente: L) Cargar el PIC con un archivo que debe ser del tipo hexadecimal. Este formato no es el formato que maneja el programador por lo tanto antes de cargar el PIC debemos generar este archivo HEX partiendo del archivo nemotcnico que gener el programador. S) Seleccionar el tipo de PIC. En nuestro caso el PIC ya fue seleccionado pero podramos necesitar un cambio si debemos programar ms de un tipo. E) Borrar un PIC previamente grabado. Este tipo de PIC no necesita un borrado previo a la grabacin; pero puede ser necesario borrarlo por razones de seguridad. V) Verificar el programa cargado en un PIC. En esta funcin se carga un programa hexadecimal y el cargador verifica que el programa almacenado en el PIC sea igual al hexadecimal.

LOS PROGRAMAS PARA CARGAR PICS Un programa para PIC viene en diversos formatos y el lector debe saber cmo pasar de un formato a otro hasta llegar al definitivo que puede grabarse en el PIC. El tipo de archivo que se posee es funcin del punto en que se toma el trabajo. Si solo nos dedicamos a armar el dispositivo debemos tener un archivo del tipo hexadecimal tal como si fuera un componente ms del dispositivo. En la lista de materiales debera decir programa MONGO.HEX para armar al dispositivo MONGO. Por lo general el archivo de programa que tenemos disponible (el que viene con los artculos de las revistas) tiene una extensin (.asm) que corresponde a la versin assembler (ensamblado), nemotc-

CARGA DEL PIC CON ARCHIVOS .HEX No necesita tener cargado ningn utilitario ms que el NOPPP en su computadora y por supuesto el archivo del secuenciador llamado secua.hex. Arranque el NOPPP y realice todas las operaciones indicadas en el artculo anterior hasta llegar a la pantalla final en donde le piden que indique lo que desea hacer entre las opciones:

72

Todo sobre PICs

KIT

DE

PROGRAMACIN

DE

PICS

Fig 13

Fig 14
L) Cargar el PIC con un archivo que debe ser del tipo hexadecimal S) Seleccionar el tipo de PIC E) Borrar un PIC previamente grabado V) Verificar el programa cargado en un PIC

los nicos PICs que se pueden cargar en nuestro cargador de PICs. Otros tipos (incluyendos los PIC de produccin con fusibles de programacin) no pueden ser programados en el NOPPP y requieren otro software y otro hardware. Al autor se le present un problema inexplicable al seleccionar la F. El proceso de carga de memoria terminaba con un aviso indicando que se presentaba una falla en una posicin de memoria. La nica solucin posible fue tipear C en lugar de F a a pesar de que el integrado tena claramente marcado PIC16F84. Por lo dems todo funcion correctamente por lo que autor considera que se trataba de un error de rotulacin. Luego de elegir el PIC, el programa vuelve a la pantalla inicial para realizar una nueva operacin. Nosotros queremos cargar un PIC pero antes debemos cargar el programa .hex en el NOPPP. Tipeamos L de load hexadecimal file cuya traduccin exacta es cargar archivo hexadecimal. Aparecer una pantalla como la mostrada en la figura 14. Aqu se debe escribir el nombre del archivo a cargar es decir: secua.hex.

Note que el programa no da la posibilidad de buscar el archivo en otro directorio que no sea aquel donde se carg el NOPPP. Es decir que con el mismo procedimiento que empleamos en el segundo artculo y utilizando por ejemplo el buscaTipee S para seleccionar el tipo de PIC dor de windows se debe trasladar el arque est usando y aparecer una panta- chivo secua.hex desde su lugar de orilla como la de la figura 13. gen al subdirectorio PIC. A continuacin tiSi no eligi el tipo de PIC con anterioripeando secua.hex (no olvide de tipear la dad hgalo ahora tipeando S. Cuando extensin .hex, porque si no lo hace obaparece la pantalla de eleccin del PIC ti- tendr un mensaje de error indicando que pee F, C o 3 segn use un PIC16F84, un el archivo pedido no existe) se cargar el 16C84 o un 16C83. Recuerde que stos son programa en el NOPPP y el resultado de la

Todo sobre PICs

73

KIT

DE

PROGRAMACIN

DE

PICS
ponga la fuente y observe los leds. Si todo sali bien observar que se encienden en una rpida secuencia una y otra vez. Qudese mirando su obra de arte por un buen rato. Cualquiera dira que es aburrida, pero estamos seguros que para Ud. que arm un dispositivo con un PIC por primera vez en su vida, se ver como una obra maravillosa. Esperamos que en este preciso momento est descorchando el champaa pero si no es as no se preocupe que lo vamos a ayudar si todo fracas. Consulese recordando que los xitos inmediatos no proveen ninguna enseanza.

Fig 15
carga se observar en una pantalla como la mostrada en la figura 15. En esta pantalla se pueden observar algunos detalles del tamao del archivo .hex desglosado en cantidad de palabras de programa, de configuracin, de identificacin y de datos. Tambin aparece una indicacin de que el programa fue cargado completo. Por ltimo se indica apretar la barra espaciadora para continuar con lo cual aparece nuevamente la pantalla inicial. Ahora s, es el momento de cargar el PIC eligiendo P (PROGRAM PIC). Se observar un movimiento en la pantalla y unos segundos despus aparecer un cartel indicando que la carga fue exitosa. Recuerde que el NOPPP ir colocando los datos en la memoria y luego los ir leyendo; si el ltimo dato se carg correctamente pasar a cargar el siguiente y as sucesivamente hasta llegar al ltimo. Posteriormente el programa indicar que se debe cortar la fuente y luego sacar el PIC del zcalo. Cumpla con las indicaciones y coloque el PIC programado en el zcalo del secuenciador. Y por ltimo re-

POSIBLES PROBLEMAS QUE PUEDEN PRESENTARSE Veremos en la prxima edicin, que los problemas que se pueden presentar al cargar el PIC pueden ser de software, por ejemplo cuando el archivo que tenemos disponible no es el que entiende el cargador de PICs, o de hardware, cuando nos mandamos una macana y colocamos un componente en forma indebida. En efecto los nicos archivos que sirven directamente son los que tienen extensin .HEX. si su archivo tiene otra extensin deber convertirlo primero con el programa MPAMS que ya le hicimos guardar. En cuanto a los problemas de hardware del cargador: quin nos asegura que no hayamos cometido un error de armado y pusimos 10k donde lo indicado es 1k. Si se tratara de una radio o de un amplificador seguramente Ud. sabra como encontrar el componente equivocado o faltante; pero con estos bichos raros digitales la cosa no siempre queda clara. No se preocupe; si an no pudo brindar en este artculo lo vamos a ayudar para que repare nuestro querido engendro cargador de PIC.

74

Todo sobre PICs

KIT

DE

PROGRAMACIN

DE

PICS

ir a inicio (abajo a la izquierda de la pantalla principal de Windows) como si fuera a apagar la mquina, pero en lugar de apagarla debe ir a la seleccin reiniciar en el modo DOS. Una vez que arranc el NOPPP. Va a tener la pantalla inicial en donde le indican que seleccione un puerto para trabajar. Seleccione el puerto adecuado (por lo general el 1 si Ud. usa el mismo conector que su impresora para conectar el cargador). La siguiente pantalla le va indicar que conecte la fuente de potencia sin colocar el PIC en el zcalo. Haga lo que le indica la panFigura 16 talla. La siguiente pantalla depende de que el dispositivo cargador est o no coSeguramente existen cargadores munectado en el puerto paralelo. Si no est cho ms modernos y verstiles que el NOPPP, pero ste tiene una ventaja funda- conectado o con algunas PC en particular va a aparecer una pantalla como la indimental: se autodiagnostica es decir que cada en la figura 16. nos va arrimando informacin para proEn esta pantalla le indican que el disposibarlo paso a paso y reparar lo que est tivo est desconectado (NOPP hardware mal. El modo de entregar esta informacin es a travs de la pantalla del monitor que not found). Conctelo. Si est conectado le ir indicando qu mediciones hacer so- significa que su PC tiene un puerto paralelo bre la plaqueta del cargador de PICs. Por de ida solamente (enva seales a la impresora pero no recibe todas las seales de resupuesto le vamos a pedir un sofisticado torno desde la misma). En este caso ignore instrumental de prueba consistente en un la pantalla que le va a aparecer siempre. simple tster digital de bajo precio. Puede tambin aparecer esta pantalla si est mal armado el cargador o el cable de conexin. Ignore la indicacin ya que en el AUTODIAGNOSTICO DEL NOPPP proceso posterior aparecer el modo de Relea el modo de entrar al programa NOPPP e ingrese. Recuerde que lo debe hacer desde el DOS. En principio tambin lo puede hacer desde una ventana del Windows pero con mquinas lentas puede tener problemas debidos a que la mquina regula el tiempo de carga. Pruebe trabajar en una ventana y si tiene problemas salga directamente de Windows e ingrese a DOS. Para los que no entendieron la frase anterior va la siguiente explicacin: Las PC modernas arrancan directamenFigura 17 te en Windows. Para trabajar en DOS debe

Todo sobre PICs

75

KIT

DE

PROGRAMACIN

DE

PICS
talla 16 e intenta cargar la memoria sin fuente. Como no lo logra se equivoca, diagnostica que no se puede cargar la primer posicin de memoria y detiene la carga. Con el agregado de los dos LEDs Ud. verificar las fuentes mirando el LED rojo para la fuente de programacin de 14V y mirando el LED verde para la fuente del PIC. Al mismo tiempo los LEDs lo ayudarn a proteger sus PICs evitando que los conecte o desconecte con la fuente activa. Si su fuente est activa aparecer la primer pantalla de auto diagnstico que se observa en la figura 18. La pantalla lo invita a conectar el terminal negativo del tster a masa (pata 5 del PIC) y a medir las patas 4, 12 y 13 que deben estar a un potencial bajo menor a .8V y la pata 14 de fuente que debe estar a un potencial comprendido entre 4,75V y 5,25 V. Al mismo tiempo la unin de los diodos D1 y D2 con el resistor R1 debe estar a potencial bajo menor a 0,8 V. Tenga en cuenta que todas estas mediciones deben realizarse sin colocar el PIC en el zcalo. Es decir que el diagnstico se hace slo sobre los componentes perifricos para evitar que un PIC daado altere la rutina de reparacin. En esta prueba el cable rojo de conmutacin de 13V est a potencial alto y por lo tanto Q1 tendr su juntura de base colector conduciendo a pleno. En estas condiciones el colector slo puede tener algunos cientos de mV con respecto a masa y el PIC estar en condicin de lectura de memoria. El cable negro tambin estar a potencial bajo con lo que asegura que el cable naranja de salida de datos tenga un potencial correspondiente a la barrera de D1 (unos 600mV). En esta condicin y con los cables marrn, naranja y amarillo a circuito abierto desde el puerto paralelo de la PC, se miden las tensiones de las patas 12 y 13 para tratar de detectar algn cortocircuito a un potencial alto. Es evidente que

reparar la falla. Si desea salir del programa debe pulsar las teclas Ctrl y C al mismo tiempo. Para continuar, ignorando el mensaje, pulse la barra espaciadora. La siguiente pantalla lo invita a elegir un determinado tipo de PIC o (en la parte inferior de la pantalla) lo invitan a realizar el TEST de prueba del PIC. Acepte la propuesta de realizar el auto diagnstico pulsando T. Si recibe una pantalla como la mostrada en la figura 17 significa que el cargador no recibe tensin de fuente a pesar de que de entrada le indicamos encender la fuente. Para evitar futuros problemas lo invitamos a agregarle al cargador un simple LED rojo con un resistor de 2K2 en serie para usarlo como indicador piloto de fuente encendida. Conctelo sobre la tensin de entrada de 14V. Tambin sera conveniente agregar un LED verde con un resistor de 1k en serie para medir la tensin de 5V. De este modo de un rpido vistazo Ud. sabe que su dispositivo est alimentado correctamente y se ahorra problemas porque un corte en la tensin de fuente ms adelante, puede causar un mensaje de error al cargar la primer posicin de memoria del dispositivo. En una palabra que el programa no puede determinar si la fuente se cort despus de realizar la prueba de la pan-

Figura 18

76

Todo sobre PICs

KIT

DE

PROGRAMACIN

DE

PICS

Figura 19

la tensin de dichas patas debe ser menor a 800mV. Para realizar una medicin vlida es conveniente medir la fuente del PIC para estar seguro que el mismo est alimentado con una tensin adecuada de 5V con una tolerancia de 250mV hacia ambas lados. A continuacin le damos algunas indicaciones de cmo resolver los diferentes problemas que se le pueden presentar. Si la tensin de la pata 13 le da mayor a 800mV es porque seguramente el cable negro no est a potencial de masa y D1 no est conduciendo polarizado por R1. Probablemente est cortado el cable negro, o est mal conectado a la pata 17 del conector J1. Tambin puede ocurrir que el cable est a potencial de masa pero el diodo D1 est abierto o invertido. Para sacar conclusiones ms adecuadas verifique la tensin de la unin de los diodos D1 y D2. Si Ud. tiene una tensin de la pata 4 (tensin de grabacin) alta (cercana a los 13V) probablemente tendr cortado el cable rojo o mal conectada la pata 2 del conector J1. Tambin puede ocurrir que el transistor Q1 est abierto o desbeteado o

no sea de la polaridad adecuada (un 558 en lugar de un 548). Luego si tiene tensiones altas en las patas 12 y 13 deber buscar cortocircuitos en las patas del zcalo del PIC o en el circuito impreso o en el conector J1. Si las tensiones medidas son correctas, presione la barra espaciadora para pasar al test 2. Aparecer una pantalla como la indicada en la figura 19. Se medirn tensiones con respecto a masa (pata 5) de las patas 4, 12 y 13 pero esta vez con el transistor Q1 cortado y con potenciales altos de 5V, desde la PC; en los cables amarillo y marrn. Las tensiones medidas en las patas 12 y 13 provienen de la PC y dependen de su fuente regulada interna y del puerto de salida paralelo. Lo importante en esta prueba es que la tensin supere los 4 V para que el PIC interprete que hay un estado alto en su entrada de DATOS y CLOCK. En el test 1 se verific el estado bajo de estas patas y en este se verifica el estado alto completando la prueba de las patas 12 y 13. La tensin medida en la pata 4 debe corresponder con la tensin de fuente de la fuente de grabacin es decir que debe tener un valor comprendido entre 12 y 14 V aproximadamente, ya que el transistor Q1 no debe conducir. La unin de los diodos D1 y D2 (el cable naranja de salida de datos que va a la pata 11 de J1) deber mantenerse a un potencial inferior a los 800 mV asegurndonos que el diodo D2 no est en cortocircuito o invertido. Observe que en este test el diodo queda polarizado en inversa. Si la tensin de la pata 4 est baja o no existe, probablemente el resistor R5 de 2k2 est cortado, mal conectado o con un valor equivocado; tambin puede ocurrir que el transistor tenga un cortocircuito entre el emisor y el colector (puede desconectarlo del circuito para verificar que suba la ten-

Todo sobre PICs

77

KIT

DE

PROGRAMACIN

DE

PICS

desde los 5V; esa corriente circula por D2 y por el resitor agregado de 470 a masa. La aplicacin de las leyes de Kirchoff y de Ohms. Permiten determinar que la tensin sobre la pata 13 es debida a dos contribuciones de corriente. Una de ellas es igual a la tensin de fuente menos la barrera del diodo D2 ( 5-0,6 = 4,4V) y que esa tensin se aplica a la suma en serie de los resistores (5,6k + 0,47k = 5,07k). La corriente se establece entonces en un valor de 4,4/5,07k = 0,88mA es decir algo menos Figura 20 de 1 mA que circulando por un resitor de sin de fuente). Por supuesto que lo primero 470 producirn una cada de tensin de que debe verificar es que la fuente de 13V unos 400mV si no consideramos la otra contenga la tensin correcta. Si la pata 12 no tribucin. El resitor R2 slo generara una cotienen una tensin superior a 4V, probable- rriente que se establece por la siguiente frmente el cable marrn est cortado o el mula: 2,8/(1500+470) = 1,42mA. Si no se geresistor R3 est equivocado de valor o mal neran estas corrientes probablemente el conectado. Si la tensin en la pata 13 es valor del resistor agregado es incorrecto o menor a 4V puede estar equivocado o es incorrecto el resistor R1 de 5k6 o el R2 de abierto el resistor R2 o el diodo D2 puede 1,5k. Debemos suponer que los diodos D1 estar invertido o en cortocircuito. Si las ten- y D2 que podran afectar esta medicin, ya siones son correctas presione la barra espa- fueron verificados anteriormente y estn en ciadora para pasar al test 3 en donde se si- buenas condiciones. En la mquina del aumular un estado bajo saliendo de la pata tor el nivel de 0,7V autorizado como mxide data del PIC. La pantalla que aparece mo en la pata 13 al cargarla con 470 se se puede observar en la figura 20. ve superado en uno 100mV pero a pesar La accin del PIC para sacar datos se si- de eso el cargador funciona correctamenmula conectado un resistor de 470 entre te. Si el lector desea obtener el valor solicilas patas 13 (RB7/DATA) y la pata 5 (masa). tado de 0,7V se puede modificar R2 llevnSe medir con un tster observando que la tensin de la pata 13 que estaba con una tensin superior a 4 V pase a un estado bajo inferior a 0,7V al apoyar el resistor. Si la tensin es superior a 0,7V debemos analizar el circuito que se forma. El resistor R2 aporta corriente porque el cable amarillo est a potencial alto desde la PC (aqu todo depende del resitor en serie que tiene la pata de salida de la PC, en la mquina del autor la tensin crece hasta 2,8V cuando se carga la pata 13 con el resistor). El circuito activo est entonces formado por Figura 21 dos resistores R2 y R1 (que trae corriente

78

Todo sobre PICs

KIT
dola a un valor de 2k2 (volvemos a aclarar que todo depende de su PC). Si las mediciones son correctas pase al test 4. Apretando la barra espaciadora. aparece una pantalla como la indicada en la figura 21. Es este test se pretende establecer el estado bajo de la salida de datos cuando se escribe un dato alto por el cable amarillo. Esto significa que no debe haber retorno directo por el cable naranja cuando se escribe debido a que el diodo D1 est polarizado con su ctodo a masa (cable negro a masa) para evitar que la tensin sobre l supere los 600mV. Nota: esta tensin puede ser algo elevada para algunos puertos de PC que podran llegar a interpretar este estado bajo como si fuera alto. En este caso aconsejamos cambiar el diodo D2 y el D1 por diodos de germanio 1N34 o similares. Si la tensin es la correcta pulse la barra espaciadora para pasar a la ltima pantalla de test (nmero 5). Esta ltima pantalla prueba al dispositivo como generador de un dato alto por el cable naranja. Como el dispositivo se probar como lector de memoria, el cable negro se deja a circuito abierto por el lado de la PC, se ubicar un dato alto sobre la pata 13 levantando el cable amarillo y se medir la salida por el cable naranja esperando que sea superior a 4V. Si todas las dems Figura 23 pruebas pasaron correctamente se puede asegurar que ya no hay errores de armado y que los diodos y resistores no estn alterados. Esta prueba es solo una confirma-

DE

PROGRAMACIN

DE

PICS

cin de que no existan cortocircuitos entre las patas del zcalo de PIC. En las pruebas desde la 1 a la 5 se utilizaron estados altos o bajos de los cables que se resumen en la tabla de la figura 22. Como un dato extra que puede resultar interesante cuando se tiene que reparar el dispositivo agregamos una tabla con las tensiones en las entradas cuando se conecta un PIC en buenas condiciones y se pasa por los diferentes test. Ver figura 23. Con todos los datos aportados suponemos que el lector ya debe haber reparado su cargador de PICs en caso de falla y a esta altura debe estar utilizando el champaa. Si no es as no se preocupe porque lo vamos a seguir ayudando si se siguen presentando problemas con la carga.

COMPLETANDO EL CIRCUITO DEL CARGADOR Al circuito bsico del artculo 2 ya le agregamos dos leds piloto (uno rojo y otro verde) para que el operador pueda saber

Figura 22

Todo sobre PICs

79

KIT

DE

PROGRAMACIN

DE

PICS

Figura 24

si las fuentes estn activas. Ahora le vamos a proponer que termine de completar el circuito con el agregado de otros dos leds que le permiten saber que los datos ingresan (escritura) o que salen del PIC (lectura). Estos leds deberan conectarse sobre los cables amarillo y naranja pero no se pueden conectar directamente. Se aconseja utilizar transistores separadores para no cargar la pata de I/O (ENTRADA/SALIDA) del PIC. Probablemente con todo esto el nombre de NOPPP que tiene nuestro cargador de PICs ha quedado desvirtuado porque ya tiene varios componentes ms. Pero realmente cada agregado tiene una clara razn de ser y por otro lado son sumamente econmicos. Con todos los cambios armamos un nuevo circuito que le mostramos en la figura 24.

era demasiado tarde. Los dispositivos digitales son terribles bocones que generan mensajes de error y de precaucin al menor apartamiento de la perfeccin. As las cosas el mundo digital parece maravilloso para aquel que recin comienza a transitarlo. Uno piensa: si me equivoco el sistema me avisa, as que no vale la pena pensar; vale ms emplear el mtodo de prueba y error. Esto no es as de ningn modo; pensar as es un error grosero, porque los mensajes de error rara vez son totalmente claros. Al ser genricos, suelen dejarnos totalmente en ayunas con respecto a lo que estaba sucediendo en la realidad. Por otro lado los mensajes de error del NOPPP estn en Ingls Americano y no podemos pretender que todos los lectores los entiendan con claridad. En una palabra que los mensajes subliERRORES AL CARGAR UN PIC minales que nos suele enviar un dispositivo para PC cualquiera, deben ser forzosaLos viejos dispositivos analgicos eran si- mente interpretados y no ser tomados al gilosos. Cometan sus errores en absoluto pie de la letra. Parirs con dolor dicen silencio de modo que muchas veces no las sagradas escrituras y si Ud. est leyennos dbamos cuenta del error hasta que do este captulo con ansiedad, es porque

80

Todo sobre PICs

KIT

DE

PROGRAMACIN

DE

PICS

Figura 25

ya hace mucho tiempo que intenta hacer encender las luces de nuestro secuenciador; solo que por una razn u otra no lo pudo lograr aun. No desespere, con este artculo seguro que brinda con champaa. Adems un buen estacionamiento es esencial para todo buen vino espumante. En lo que sigue le vamos a mostrar como seran las pantallas correctas cuando un PIC se carg exitosamente y cmo son cuando la carga se produjo con dificultades. Por supuesto que estas pantallas son generadas por el programa de carga del PIC (en nuestro caso el NOPPP) y variarn si Ud. usa otro programa.

MENSAJE DE ERROR EN POSICION DE MEMORIA 0000 Si al intentar la carga se produce un mensaje de error como el que mostramos en la figura 25, no se quede pensando en que pequeo componente del sistema ha fallado. En efecto, no fall un componente pequeo sino que se trata de una falla mucho ms general. A esto se refera el autor cuando hablaba de mensajes genricos y los tildaba de subliminales. Literalmente el NOPPP nos informa que al intentar cargar la posicin de memoria 0000 se produjo un error porque la prueba de esa posicin despus de la

carga indic que la memoria tiene cargado el nmero hexadecimal 0000, cuando en realidad debera tener cargado el nmero hexadecimal 0186. Recuerde que el PIC es un bicho muy ordenado. El programa de trabajo se carga en su memoria dato tras dato. Primero se llena la posicin de memoria 0000 y a continuacin se verifica la carga. Si el nmero cargado no corresponde con el del programa, se detiene la carga y se presenta el mensaje de error nmero 1. Aqu tenemos que realizar una interpretacin de los hechos. Si la posicin de memoria 0000 (la primera que se aborda) quedara cargada con cualquier otro nmero, podramos suponer que existe alguna rara falla en el circuito del cargador. Pero el cero hexadecimal nos est indicando ausencia absoluta de carga y eso solo puede significar que se apag la fuente de 13,5V o por lo menos la de 5V. Por supuesto que el primer paso que dimos (antes aun de colocar el PIC) fue controlar la fuente. Pero recuerde que algunas PC no podan efectuar esa prueba y adems la fuente se puede haber desconectado despus de haber colocado el PIC o es posible que la fuente no admita ni la mnima carga que le impone el PIC. Esta condicin puede ser obviada si Ud. observa los diodos piloto de 5V y de 13,5V durante la carga.

MENSAJE DE ERROR POR MALA SELECCIN DEL TIPO DE PIC El NOPPP puede predisponerse para grabar tres tipos de PIC que son el PIC16C84, el PIC16F84 y el PIC16C83. Si Ud. se equivoca al elegir el dispositivo se produce un mensaje de error como el mostrado en la figura 26.

Todo sobre PICs

81

KIT

DE

PROGRAMACIN

DE

PICS
programar un PIC16C84. Si Ud. predispuso el cargador para un PIC16C83 y coloc un PIC16C84 se produce otro mensaje de error relacionado con el hecho de que ambos PIC tienen el mismo tipo de memoria pero diferente capacidad. El 84 posee una capacidad de 1Kb y el 83 de 0,5Kb. ver figura 27. El mensaje se divide en tres sectores. En el primero se indica que la memoria de programa fue grabada exitosamente. En la segunda parte se observa que la identificacin de memoria se grab exitosamente. En la tercer parte se lee que al grabar la posicin de memoria 2007 se produjo un error ya que debera haberse grabado el hexadecimal 0013 pero se grab el 3FF3. Este ltimo mensaje de error fue presentado por el programa cuando el autor intent cargar varios PICs marcados como PIC16F84 predisponiendo correctamente al NOPPP. Suponemos que el problema se debe a PIC defectuosos ingresados en nuestro mercado o simplemente mal marcados. Tambin puede ocurrir que la carga ms rpida no sea admitida por nuestro cargador (por ejemplo por tener cables de conexin demasiado largos). En fin que el autor seleccion la C en lugar de la F y todo se arregl.

Figura 26

Figura 27

La primer parte del mensaje de error nos indica que se cometi un error en la palabra de configuracin del programa y que sta no corresponde con el PIC elegido. Debemos interpretar este mensaje del siguiente modo: el programa para un PIC16C84 o un PIC16F84 es el mismo, slo cambian los tiempos que se mantiene presente cada bit del programa. Como el cargador no posee inteligencia para determinar que tipo de PIC se va a utilizar, antes del programa se carga una palabra de configuracin diferente segn el PIC utilizado. Esta palabra puede ser cambiada adecundola al PIC que Ud. va a cargar. La modificacin del programa la veremos en otra parte de este mismo artculo. Ahora bien, el mensaje depende del tipo de error cometido. El de la figura 26 ocurre por ejemplo si la palabra de predisposicin indica un PIC16F84 y Ud. intent

LA PANTALLA QUE INDICA UNA CARGA EXITOSA La pantalla que Ud. espera ansiosamente se puede observar en la figura 28 y nos indica que el proceso de carga se produjo exitosamente. Ver figura 28. El mensaje se divide en tres partes. Las dos primeras son idnticas a lo indicado en el punto anterior. La ltima parte nos indica que la carga de la memoria de programa se complet exitosamente. Al final se indica que para utilizar el PIC cargado

82

Todo sobre PICs

KIT

DE

PROGRAMACIN

DE

PICS

Figura 28

Figura 29

en un proceso de produccin se debe comprobar su funcionamiento correcto con la mnima y mxima tensin de fuente VCC. La comprobacin se realiza pulsando la barra espaciadora y eligiendo luego la letra V de verificacin. Si Ud. tiene cargado el programa con el cual se grab el PIC se producir una pantalla como la indicada en la figura 29 para indicar que la verificacin fue exitosa. Ahora si Ud. va a usar el PIC que acaba de cargar en un equipo cuya confiabilidad debe ser muy grande debe volver a realizar este proceso de verificacin llevando la tensin de VCC a un valor de 4,75V primero y de 5,25 V despus. Mas aun, le aconsejamos que cargue el PIC y lo deje inactivo por lo menos por una semana y luego lo verifique. Para nuestros fines exclusivamente didcticos esta verificacin no es necesaria. La ltima posibilidad que le brinda el NOPPP es borrar un PIC y se puede realizar seleccionando la letra E (de erase que significa borrado). Los PIC del tipo 16C84 y 16F84 no necesitan ser borrados antes de programarlos. Ellos se borran a medida que se programan pero sin embargo en algn momento Ud. puede necesitar borrar un PIC para conservar un programa en secreto. En este caso puede borrar el PIC usando la letra S y se encontrar con una pantalla como la indicada en la figura 30.

EL ENSAMBLADOR DE PIC Ud. no necesita una gran cantidad de programas para trabajar con el PIC. Para empezar le basta con el NOPPP y con el MPASM; dos programas sencillitos, tan baratos como que son gratuitos y tan livianos que entran en cualquier rgido (en la jerga

Figura 30

Todo sobre PICs

83

KIT

DE

PROGRAMACIN

DE

PICS
gramar recordando estas 36 sentencias en cdigo PIC (es decir escribiendo los unos y ceros). Pero tambin se imagina que en la era de la informtica seguramente es muy fcil hacer un programa para PC que genere esos unos y ceros invocndolos con una palabra clave ms sencilla. En la jerga esto se conoce como un lenguaje nemnico o nemotcnico. Cada una de esas 36 sentencias con forma de unos y ceros tiene un apodo ms casero en idioma nemnico; por ejemplo la rotacin se escribe RLF que es mucho ms fcil de recordar. Ahora tenemos una solucin: escribir el programa del PIC en cdigo nemnico pero vamos a necesitar un programa traductor que tome el nemnico y genere el cdigo de unos y ceros que entiende el PIC. Este programa se llama genricamente ensamblador (assembler en Ingls) y en el caso que nos ocupa se llama especficamente MPASM. Se acuerda que yo le hice guardar ese archivo en el directorio PIC de su mquina, ahora lleg el momento de usarlo. EL GENERADOR DE BARRAS DE GRISES

informtica que utilizamos los gures eso significan que son programas tan pequeos que no ocupan lugar en el disco rgido de su PC). Al NOPPP ya lo conocemos de cabo a rabo y sabemos que es el software que hace funcionar a nuestro cargador de PICs. Al MPASM lo vamos a conocer ya mismo. Qu idioma entiende el PIC?. Entiende un solo idioma, el idioma binario de unos y ceros que le ensearon sus padres en Microchip. El PIC maneja un idioma con un total de 36 palabras (o sentencias) de 14 bits. Los primeros 6 bits indican el tipo de operacin a realizar y los ltimos 8 las variables (nmeros) involucradas en la operacin. Parece mentira que con tan pocas palabras se pueda hacer tanto; el autor considera que sera interesante regalarle un PIC a cada poltico conocido para ver si se le puede contagiar algo de efectividad (lo ms probable es que se arruinen los PICs). Por ejemplo una sentencia completa utilizada para rotar los bits de una palabra sera: 00110110001011

Esta captulo est basado en un relato verdico de las vicisitudes sufridas por el (los ltimos 8 dgitos dependen de la va- autor (un viejo ingeniero analgico) en su riable considerada) intento de aprender a utilizar y programar los PICs. Los hechos ocurrieron as: en uno Si bien el PIC solo conoce el cdigo bi- de mis viajes por Internet me top con una nario, el programa del cargador (en nues- pgina en donde se ofrecan gratuitamentro caso el NOPPP) entiende tambin el te la informacin para fabricar dispositivos cdigo hexadecimal (el cdigo hexadeci- que utilizaban un PIC. Cumpliendo con el mal se genera al utilizar la numeracin en viejo adagio si es gratis llevalo, que tirarlo base 16 muy utilizada en electrnica por a la basura tambin es gratis, baj un lisser el resultado de 2 al cubo) que es algo tado de dispositivos del cual me interes ms simple de escribir. Ud. puede conside- un generador de barras de grises para TV rar que el programa NOPPP traduce el c- de norma N. digo hexadecimal en cdigo binario o cEl autor indicaba un diagrama de cirdigo fuente del PIC. cuito tentativo y lo ms importante daba Se imagina el esfuerzo que significa pro- el programa completo del dispositivo. Lo

84

Todo sobre PICs

KIT

DE

PROGRAMACIN

DE

PICS

casi en la categora de gures de los PICs (la palabra gur significa viejo brujo y se usa para esas personas que se las saben todas en una dada profesin). La primer frase indica: precaucin, el programa no contiene la palabra de configuracin; la segunda frase indica que en consecuencia el PIC se predispone en una configuracin tpica predeterminada que se enumera en las 4 frases siguientes: * Oscilador a RC * Temporizador tipo perro guardin desconectado * Temporizador de reset de arranque conectado * Protegido contra la lectura

Figura 31

La ltima frase indica que si se desea otra predisposicin se debe indicar en el ensamblador. Toda esta lata para iniciados puede ser traducida as: el PIC puede funcionar con varios componentes de clock; puede ser a RC, a cristal de alta frecuencia o a cristal de baja frecuencia. De todas esta posibilidades nuestro cargador de PIC predispone al mismo para que funcione como RC. En el circuito del generador de barras se Figura 32 puede observar que el clock es a cristal de alta frecuencia (4MHz). Esto significa primero que observ es que el programa que debemos modificar la predisposicin estaba en cdigo hexadecimal y en nemnico. As las cosas, tom el archivo he- por defecto del cargador y eso se hace xadecimal del generador de barras llama- modificando el programa. En realidad se do PICDREAM (traducido significa algo as debe agregar al programa una palabra como el PIC de los sueos) y lo cargu en llamada de predisposicin. Ya hablamos de las otras predisposicioel NOPPP para ver qu pasaba. El resultanes. El perro guardin es un sistema que do se puede observar en la figura 31. detecta las clsicas colgadas de los miMuy bien me dije, loading complete es un mensaje muy prometedor. Pulsemos cros y lo resetea. El temporizador de arranla barra espaciadora para pasar a la pr- que es un reset automtico interno y la xima pantalla. La siguiente pantalla no tan proteccin contra la lectura evita que un extrao pueda acceder a nuestro prograprometedora se puede observar en la fima copindolo del PIC. gura 32. Nuestro problema es el oscilador de Este es un mensaje para viejos iniciados

Todo sobre PICs

85

KIT

DE

PROGRAMACIN

DE

PICS

que si se usa un editor de palabras para leerlo debe ser predispuesto para texto puro. No se asuste con tanto palabrero; si no entendi vamos a decirle cmo abrir un archivo .asm con el WORD para que le sirva de ejemplo. Abra el WORD, luego pique en archivo, pique en abrir y seleccione el directorio donde puso los archivo .asm. Si sigui al pie de la letra Figura 33 mis instrucciones ser el subdirecclock, las otras predisposiciones son las co- torio PIC. Predisponga la ventana de obrrectas y no necesitan ser cambiadas. En servacin de archivos para todos los arun caso como ste se dice que hay que chivos. Seleccione el archivo del generaabrir el programa y cambiar o agregar dor de barra de grises picdream.asm y piuna correccin. que en abrir. Se abrir un archivo que en la primer ventanita de arriba a la derecha de la pantalla dice: texto sin forma. Es deCOMO SE MODIFICA UN ARCHIVO cir que el archivo que abrimos ya predisPARA UN PIC pone automticamente al WORD. Si no ocurriera as, puede desplegar las opcioEl archivo a modificar debe tener una nes de la ventanita y optar por texto sin terminacin adecuada para que pueda forma. ser abierto por el MPAMS la nica extenLa bendita palabra de predisposicin sin que sirve es la .asm. Por suerte el autor se ubica luego del encabezado debajo del proyecto nos ofrece el archivo .asm de TITLE PICDREAM y LIST PIC16C84. All que debe ser abierto por ejemplo con un donde en el programa original no existe editor de texto del tipo del EDIT del DOS. ninguna palabra de predisposicin nosoEn efecto el archivo nemnico del PIC es tros debemos agregar lo indicado en la fitexto puro (sin salto de rengln ni de pgi- gura 33. na ni ninguna otra orden oculta) es decir Observe que se agrega la palabra

86

Todo sobre PICs

KIT

DE

PROGRAMACIN

DE

PICS

do all pulse reiteradamente ENTER y comenzarn a aparecer todos los PIC existentes; detngase en el 16C84. Observe en la parte inferior de la pantalla; all estn indicadas las diferentes opciones. Entre ellas nos interesa la opcin ASEMBLE que nos permitir generar diferentes tipos de archivos y sobre todo el buscado .HEX que servir para cargar el PIC. Siempre se generan los arFigura 34 chivos de salida?. No, solo se generan si no existe ningn error CONFIG precedida por dos guiones largos en el archivo .asm. En efecto este archiy un 15H que indica la predisposicin para vo solo puede contener algunas de las 36 cristal de alta frecuencia. La predisposisentencias reconocidas por MICROCHIP sin cin normal para oscilador RC es 17H. ningn error de posicin de las variables. Ahora estamos en condiciones de car- Es decir que el archivo debe ser perfecto gar el PIC. Solo que tenemos un archivo desde todo punto de vista. No vamos a .asm y necesitamos un .hex. Los archivos agregar nada mas con respecto a la de.hex salen del MPASM as que lo vamos a puracin de errores porque eso corresponabrir desde el DOS o desde una ventana de a un curso de programacin; solo que del WINDOWS. Primero se debe ubicar so- el archivo con extensin .lst y .err son arbre el directorio donde est cargado el chivos de texto puro que contienen menMPASM y sobre el PROMP del DOS (en len- sajes de error. Esos mensajes de error se guaje vulgar esto quiere decir sobre el sim- aclaran en el archivo MPASM.TXT. bolito de mayor que titilante) escribir MPASM y pulsar ENTER. Aparecer una pantalla como la indicada en la figura 34. ARMADO DEL GENERADOR DE BARRAS Esta pantalla nos est invitando a colocar el archivo que se debe abrir. SimpleCuando el autor vi el circuito del gemente pulse ENTER y se abrir una ventana nerador de barras con PIC en una pgina con todos los archivos .asm existentes en de Internet pens en lo que haba avanzala ventana donde est ubicado el MPASM. do la electrnica, desde la poca en que Recuerde que si el archivo que Ud. busca trabajaba en el laboratorio de Tonomac. est en otro subdirectorio o no tiene termi- En esa empresa se diseaba el instrumennacin .asm no va a aparecer en la tal de produccin y entre todo lo necesaventana. Use el buscador de WINDOWS rio para probar los TVs se haba diseado para trasladar el archivo o agregarle la un generador de cuadros de prueba con terminacin adecuada. imagen de retcula para ajustar la linealiSeleccionado el archivo, debe usar las dad de los televisores de B y N. Como el teclas de flecha hacia abajo para ubicar- dispositivo lo haba diseado un ingeniero se en el cuadradito de tipo de PIC. Situallamado Frimer, lo bautizamos como fri-

Todo sobre PICs

87

KIT

DE

PROGRAMACIN

DE

PICS
lacin y adaptacin. Muchos lectores me preguntan como hacer para aprender a programar; porque consideran que eso es lo nico importarte para investigar con referencia a los PICs. El autor considera que la investigacin del hardware de los PICs es tambin sumamente importante y no debe despreciarse de modo alguno. En cuanto al diseo de los programas, ese es otro cantar. No se pueden disear programas complejos sin la necesaria ayuda de simuladores de PICs y de ensambladores de VISUAL BASIC y de C++ (dos lenguajes de computacin muy potentes) y esos dispositivos no son baratos. En esta obra lo introducimos en el mundo de los PICs y probablemente le indiquemos algunas tcnicas sencillas de programacin; pero el diseo de programas para dispositivos complejos requiere un equipamiento que lamentablemente no est al alcance de todos. Le prometemos investigar para que por lo menos tenga una idea de los costos y de donde ubicar las mejores ofertas. En principio sigamos con nuestros programitas gratuitos ya que todava tenemos mucho para hacer y con respecto a la programacin aprendamos primero a modificar y luego a disear.

merscopio y era un monstruo que posea como unas 20 plaquetas enchufables que contenan flip flops realizados con transistores bipolares (si mal no recuerdo en total tena unos 200 transistores). Esto no ocurri hace medio siglo, recin pas hace un cuarto. Le vamos a presentar un circuito con un PIC, cinco resistores, un cristal y dos capacitores. Simple, o mejor dicho muy simple de construir. Pero como es que el PIC genera el video para realizar una imagen de prueba mucho mas compleja que la del frimerscopio (ya que posee escala de grises) un sector en donde se puede escribir el nombre del armador del proyecto y que inclusive tiene un reloj en pantalla. Todo ello con estabilidad de cristal. Simplemente que todo esto se debe a que la complejidad se traslad al programa del PIC. En efecto, el programa tiene unas treinta pginas bastante elaboradas. Como siempre, un proyecto nunca empieza desde cero; del mismo modo un programa de computacin siempre es una modificacin o una seleccin de rutinas empleadas en otros programas. Por ejemplo la generacin de las seales de sincronismo compuesto para la norma N de TV, con un cristal de 4MHz, fue resuelta ya hace bastante tiempo y empleada por el autor para realizar un mejorador de video de inmejorables prestaciones aunque un tanto complejo. El programa del generador de barras de grises, es una modificacin de esos algoritmos. El sector reservado para agregar un texto sobre la pantalla por el mtodo del rolido (despus le explicamos de que se trata) es algo desarrollado para matrices de leds y modificado para el sistema de barrido de TV y el reloj en pantalla es algo similar. En sntesis que el programa no tiene nada de original, sin querer restarle mritos al autor, que realiz una excelente tarea de recopi-

CIRCUITO DEL GENERADOR DE BARRAS DE GRIS Cules son los circuitos integrados ms baratos?. En general son aquellos que tienen pocas patas y tecnologa nica, digital o analgica. Cuando un integrado de tecnologa digital tiene algn sector que funciona con tcnicas analgicas el resultado es un notable incremento de precio. Los PIC vienen en diferentes versiones que se diferencian por el agregados de conversores digitales/analgicos y analgicos/digitales que tienen tecnologa mezcla-

88

Todo sobre PICs

KIT

DE

PROGRAMACIN

DE

PICS

vos de la hora en otra diferente (en una palabra que cuando se genera la escala de grises no se generan las letras y nmeros y la llave de la pata 10 se puede analizar separadamente del resto porque no opera en el mismo intervalo de tiempo que las otras). El negro normalizado es simplemente el potencial de masa; es decir que con todas las salidas a los resistores en estado bajo, por la salida de video slo pueden salir 0V y Figura 35 ese valor mnimo corresponder por lo tanto al inda. Estos dispositivos son caros y nosotros franegro (ms negro que el negro) ya que buscamos dispositivos baratos como para en la entrada de video se considera que a latinoamrica del 2000. La propuesta es ms tensin le corresponde ms brillo (una realizar el conversor por afuera, generanescalera ascendente de tensin genera do en las salidas del PIC tensiones digitales una escalera ascendente de brillo). El cade 0V o de 5V y sumando resistivamente so contrario se da para generar el blanco generar las tensiones intermedias. De aqu que corresponde a la mxima tensin de sale el circuito de nuestro generador de salida normalizada en 1V. En este caso tobarras. Ver figura 35. das las salidas debe aportar 5V para geVeamos como se genera la escala de nerar el voltio normalizado. Para no tener grises. La escala se genera llevando a po- que realizar innumerables clculos se realitencial de 5V las patas 1, 2, 17 y 18 en el z una simulacin en Work Bench, donde momento oportuno; observe que en este las llaves se pueden operar de a una, de a caso no consideramos la pata 10 que slo dos, de a tres o todas al mismo tiempo. Esopera para generar el blanco corresponte criterio es el nico posible para consediente a las letras y los nmeros. Este anli- guir 8 niveles diferentes de tensin con slo sis por separado es enteramente correcto cuatro llaves. Para entender cmo se geporque la escala de grises se genera a nera la escalera adjuntamos un cuadro de cierta altura vertical sobre la pantalla y la valores en donde se indica el nmero de leyenda por rolido y los nmeros indicatiescaln generado y el potencial de las patas correspondientes del PIC. El primer nivel que se forma es el correspondiente al Figura 36 sincronismo hori-

Todo sobre PICs

89

KIT

DE

PROGRAMACIN

DE

PICS
dad comercial con el mismo sin autorizacin del autor. La extensin del archivo es del tipo .zip. Esto significa que es un archivo comprimido para facilitar su transmisin por Internet. El trabajo de comprimir o descomprimir archivos lo realiza un programa llamado WINZIP que tiene una versin SHAREWARE que se puede bajar por Internet desde la pagina de WINZIP. El archivo una vez abierto contiene un archivo llamado picdream.asm que es el que nosotros necesitamos para cargarlo en el MPASM y obtener el archivo picdream.hex. sin embargo antes de obtener el archivo hexadecimal lo invitamos a modificar el archivo .asm con el fin de poner un texto en pantalla diferente al original. El programa completo tiene 20 pginas que pueden imprimirse desde el EDIT de DOS o desde WORD; pero la seccin que ahora nos interesa se encuentra en la ultima pgina con un encabezado titulado TEXTE que repetimos en la figura 38. Observe que el programa se puede dividir en tres columnas que no tienen por qu estar en cierta posicin exacta. El MPASM acomoda su funcionamiento adecundose a los parmetros de las columnas que el programador utiliz. La primer columna se utiliza para separar verticalmente los pasos de programa. El programa completo se divide as en varios sectores que pueden ser utilizados recurrentemente. Es decir que el programa puede ser ejecutado por el PIC desde el primer rengln hasta el ltimo en forma ordenada pero lo mas probable es que tenga saltos a un determinado sector desde un rengln que puede ser anterior o posterior. En nuestro caso uno de los sectores del programa se llama TEXTE y tiene una sola lnea. Luego se encuentra otro sector llamado DTEXTE y por ltimo el sector final llamado FTEXTE. Es como si tuvira-

Figura 37

zontal; luego se forma el pedestal. Observe que el pedestal de negro y el primer escaln tienen el mismo nivel de tensin correspondiente al negro y luego comienza a crecer la escalera con el escaln dos, tres, etc., hasta el ocho. Ver figura 36. De este modo se puede generar una seal en escalera con escalones de amplitud prcticamente constante como la que se puede observar en la figura 37. Observe que cada escaln dura aproximadamente 6S y hay 11 perodos iguales que sumaran 66S (en realidad los periodos elementales son de un valor ligeramente menor de modo que sumen exactamente 64S). Para generar el resto de la pantalla se utiliza la pata 10 del PIC con un resistor en serie de 270 que genera un nivel cercano al mximo de 1.096 (es levemente mayor, del orden de 1.150mV). Esta salida se utiliza en el primer tercio de la pantalla y en el tercero dejando el segundo tercio para la escala de grises.

EL PROGRAMA DEL PICDREAM El programa del PICDREAM es libre para su uso en INTERNET y puede bajarse del link que tenemos en nuestra pgina, en forma totalmente gratuita. Recuerde que puede bajarlo, modificarlo, experimentar con l, pero no se puede realizar ninguna activi-

90

Todo sobre PICs

KIT

DE

PROGRAMACIN

DE

PICS

Figura 38

mos tres carpetas cerradas que tienen etiquetas con el nombre TEXTE, DTEXTE y FTEXTE y el programa principal tiene llamadas para ir a buscar esas carpetas abrirlas ejecutar su contenido y al terminar la ejecucin volver al programa justo en el lugar desde donde se sali. Observe que el texto que aparece en pantalla se encuentra encolumnado luego de las rdenes RETLW. Cuando aparecen las letras SP el programa coloca un espacio y con una letra o un nmero coloca ese carcter en pantalla en una secuencia lenta para permitir su lectura con comodidad. Las indicaciones de la derecha precedidas de un punto y coma no son rdenes o sentencias de programa, slo son comentarios agregados por el autor para permitir que el mismo u otro programador entienda la operacin que se est efectuando a

la izquierda del separador punto y coma. En la pantalla de nuestro monitor podemos leer el texto que se encuentra verticalmente en este subprograma. La columna central es la orden para ejecutar alguna accin u operacin; en ese lugar se debe colocar alguna de las 36 instrucciones del set de instrucciones para PIC. En la columna de la izquierda se colocan uno o dos parmetros para que esas operaciones se lleven a cabo segn el deseo del programador (es decir que por ejemplo se puede poner la instruccin sumar y a la derecha se indican qu variables se deben sumar). Slo pretendemos que Ud. aprenda a variar algunas sentencias y observe el resultado. Las sentencias que vamos a variar son las correspondientes al texto en pantalla. Originalmente el programa trae el texto BATC PICDREAM y en la sentencia inicial de la figura 38 aparece un comentario en Ingls que dice largo mximo de 95 caracteres sin contar los espacios. Ms adelante se lee otro comentario indicando que los primeros 6 espacios no deben eliminarse. Con estas instrucciones lo invitamos a variar y/o agregar lneas de texto (sin falsa modestia corresponde que ponga su nombre y apellido como armador del engendro, al lado del nombre del autor del programa y en lo posible del mo que algn mrito tengo). Al programa modificado lo puede llamar por ejemplo picdrea2.asm para que siempre le quede el

Todo sobre PICs

91

KIT

DE

PROGRAMACIN

DE

PICS
puede afectar el oscilador ya que se puede perder la palabra de configuracin y el PIC puede quedar predispuesto para oscilador RC. Frecuentemente el PIC pierde su programacin completa o parte de la misma cuando queda sometido a campos electrostticos intensos. Ver la seccin siguiente. Si se ve algo sobre la pantalla ya se pueden sacar algunas conclusiones. Si la imagen est enganchada podemos suponer que el clock funciona correctamente y que estn generndose los pulsos de sincronismo horizontal y vertical. Si le falta el texto y el reloj en pantalla verifique el resistor de la pata 10. Si le faltan las barras de gris deberan faltar los cuatro resistores de las patas 1, 2, 17 y 18. Si las barras aparecen con un gris repetido puede faltar alguno de estos cuatro resistores. Tambin puede ocurrir que los resistores estn pero conectados a una pata equivocada o esa pata del puerto de salida est mal declarada en el programa (desprogramacin parcial) o que est daada. Por ltimo es conveniente desconectar y volver a conectar la fuente varias veces porque se pueden producir arranques con resets inadecuados cuando la tensin de fuente crece suavemente.

original con el nombre picdream (si mete la pata tiene como volver atrs). Luego deber abrir el MPASM y llamar al archivo picdrea2.asm y ensamblarlo para obtener un nuevo archivo hexadecimal llamado picdre2.hex con el cual deber cargar el PIC.

SERVICE DEL GENERADOR DE BARRAS DE GRIS Y si no funciona, cmo lo reparamos? Realmente el circuito propuesto es tan simple que no tiene muchas posibilidades de fallar. Pero la posibilidad aunque mnima siempre existe y hay que estar preparado para todo. Primero hay que mirar atentamente la pantalla para tratar de entender donde est la falla. Se ve algo o la pantalla est negra o gris?. Si la pantalla est negra o gris uniforme probablemente el generador no est generando ninguna seal y eso se puede deber a varias causas: Verifique las conexiones del cristal y los capacitores relacionados. Una verificacin del cristal se puede realizar con un osciloscopio que nos dar una forma de onda sinusoidal de 4MHz y una amplitud de 2 V pap en cualquiera de sus dos patas. La punta del osciloscopio se debe predisponer en x10 para no cargar al circuito. La tensin continua en la pata 16 debe ser de 2,5V y en la pata 15 de 2,2 V aproximadamente. Si no tiene osciloscopio puede recurrir a alguna radio que tenga una banda de OC de 4MHz. Simplemente acercando la antena telescpica al cristal se observar un silenciamiento en una frecuencia cercana a 4MHz que desaparece al desconectar la fuente de 5V del PIC. La tensin continua se puede medir con un simple tster digital. Recuerde que una desprogramacin

UNA EXPERIENCIA CON PICS El autor de la nota, ilustra sus clases de capacitacin referidas a PICs dictadas a los socios del Club Saber Electrnica, con tres circuitos armados sobre un mismo panel que contiene un secuenciador, un generador de barras de gris y un hardware de NOPPP para demostrar cmo se carga y se modifica un archivo. El panel con los tres circuitos armados fue construido con mis propias manos ya

92

Todo sobre PICs

KIT
que se trata de circuitos muy simples que no requieren complejos circuitos impresos. Desde luego que antes de la demostracin definitiva fueron probados una y mil veces en todas las condiciones posibles; golpeados mientras funcionaban para encontrar falsos contactos; con la tensin de fuente variada entre el nivel mximo y el mnimo; en fin se tomaron todas las precauciones para evitar que fallaran durante la clase demostrativa. Existe una ley de Murphi que dice: toda demostracin funcionar perfectamente cuando se hagan experiencias de prueba, pero fallar inexorablemente en el momento de la demostracin real delante de los invitados. El da de la clase prob el panel en mi laboratorio. El secuenciador encenda los leds en una rpida secuencia, el generador de barras generaba su imagen una y otra vez con la leyenda Curso de codificacin y decodificacin de seales de TV y el cargador de PICs ley y carg un PIC de acuerdo a su pantalla de control. Lo desconect lo apoy suavemente sobre el asiento trasero de mi coche y me fui para CAPITAL. El trayecto Burzaco-Barracas se desarroll sin ningn inconveniente y tena una media hora de tiempo para realizar la ltima prueba en el aula antes de que llegaran mis 35 alumnos. Cuando llegu me rapt un grupo de alumnos que me preguntaban sobre una ignota codificacin que no podan entender, los atend y me d cuenta que ya estaba sobre la hora de comienzo de la clase. Conect el panel con pasmosa seguridad de que todo funcionara bien y ............ los leds no titilaron y la imagen del TV monitor era gris sin ningn contenido. La ley de Murphi se cumpli inexorablemente. Con la experiencia que dan los aos dije: seores, el destino quiere que realicemos una clase prctica de reparaciones

DE

PROGRAMACIN

DE

PICS

en circuitos con PICs. As que empecemos ya a reparar. Vamos a comenzar con el secuenciador. Qu le revisamos. El coro me dijo lo primero es la tensin de fuente, luego la tensin de Reset y por ltimo la continua de las patas del oscilador (en este caso un RC). Medimos todo muy prolijamente y estaba todo bien. Y ahora que?. Ahora hay que revisar con el osciloscopio a ver si funciona el clock. No hay oscilacin. All los alumnos se dividieron en dos facciones. Estaban los que decan que una falla del clock significaba que el PIC estaba mal y otros que decan que no siempre era as. Le di la razn a estos ltimos porque el PIC es un tipo de CI que se da en llamar mascable que no significa que se puede mascar como un chicle aunque vale el parecido ya que el PIC modifica su circuito interno para que oscile con una red RC, con un cristal de alta frecuencia, con uno de baja frecuencia o con un filtro cermico (es un verdadero chicle que modifica su forma al morderlo) y no tenamos idea de como estaba predispuesto nuestro integrado. De comn acuerdo con mis alumnos llegamos a la conclusin que debamos tomar el PIC del secuenciador y verificar su programa con el NOPPP. Al hacerlo el NOPPP me indic que la primer posicin de memoria, la 0000 estaba vaca. La conclusin fue que el PIC se haba daado o que se haba desprogramado. Para saber lo que pasaba slo quedaba intentar cargarlo de nuevo. As que volv a arrancar el NOPPP y esta vez le ped program. La indicacin fue que no se pudo cargar la primer posicin de memoria. El PIC est daado, fue la conclusin general que pareca clara. Seguimos el mismo proceso pero est vez con un PIC virgen y la respuesta de la pantalla de la PC fue la misma no se puede cargar la primer posicin de memoria.

Todo sobre PICs

93

KIT

DE

PROGRAMACIN

DE

PICS
otro poco en broma. Me aguant la gastada por el error con el LPT2 y la clase termin porque ya era la hora de salida. Dejamos para la siguiente clase el problema del generador de barras de gris aunque ya nos imaginamos que tambin tena desprogramado el PIC. Luego en mi casa comprob que el PIC estaba desprogramado, lo program y sali andando como si nada. El mayor misterio es saber por qu se desprogramaron los dos PICs en el viaje de Burzaco a Barracas. As las cosas al da siguiente, volv a llevar el panel reparado, lo conect al TV monitor y funcion durante las tres horas que dura la clase de CD con 35 alumnos que son mis testigos. Lo desconect, lo puse en mi auto y me lo llev de vuelta para Burzaco. Al da siguiente lo quise bajar del auto para hacer unas pruebas y haba desaparecido. Mis conclusiones es que entre Burzaco y Barracas existe el tringulo de Llavallol en donde los equipos electrnicos se daan y se pierden y adems existe un campo de fuerzas propicio para que se cumplan las leyes de Murphi. Y sobre todo que yo soy un viejo desmemoriado (por no decir otra cosa relacionada con esferas carnosas) que no sabe dnde pone las cosas. Si alguien encuentra mi panel favor de devolverlo a ingeniera Picerno, se gratificar con un autgrafo sobre uno de mis Best sellers de electrnica. Bromas aparte, espero haber contribuido a que Ud. aprenda a programar PICs.

Pareca que haban fallado dos cosas. Por un lado el PIC se haba desprogramado y por otro el cargador NOPPP estaba daado. Las probabilidades de que se daen dos cosas al mismo tiempo (y posiblemente tres porque el generador de barras de gris no funcionaba) es muy remota pero no acertaba a saber que haba ocurrido. Comenc a aplicar la autorutina de reparacin del NOPPP pero el segundo paso me daba una indicacin errnea que me indicaba que el puerto paralelo de la PC no enviaba datos al hardware del NOPPP. La prueba del puerto de una PC es muy simple, conectar la impresora y observar si funciona. La impresora funcion pero primero se ley un mensaje de error en la pantalla del monitor que se borr tan rpido que solo se pudo leer ....LPT2............... Esto fue suficiente para que uno de los alumnos se diera cuenta del error. Cuando el software NOPPP pregunta con qu puerto se va a trabajar yo declar LPT1 en forma maquinal porque as lo hago en mi computadora. Pero la PC que estaba usando tena habilitado el puerto 2 y por eso no se podan cargar los PICs. Volv a colocar el PIC que haba sacado del secuenciador, en el hardware del NOPPP y ped program ahora s la pantalla del monitor me respondi cargando y un poco despus programacin completa. Saqu el PIC del cargador, lo coloqu en el secuenciador y comenzaron a encenderse los LEDs en secuencia ante la algaraba de mis alumnos un poco en serio y

94

Todo sobre PICs

KIT

DE

PROGRAMACIN

DE

PICS

Todo sobre PICs

95

KIT

DE

PROGRAMACIN

DE

PICS

96

Todo sobre PICs

Los Microcontroladores de National, Philips y Motorola


LA SERIE COP DE NATIONAL

nea de microcontroladores COP8SAx7 (donde x corresponde a las letras A, B y C) Los microcontroladores COPSAx7 OTP en versiones de bajo pinout (20 y 28 pason miembros de la familia de los COP8 y tas) y encapsulado DIP. Estos nuevos miutilizan como corazn un arquitectura crocontroladores ofrecen prestaciones y con un chip de 8 bits. Estos dispositivos performance en hardware y software fueron fabricados bajo el proceso EPROM comparables con las de microcontroladode alta densidad, de la National Semicon- res de rango medio, con un precio similar ductor, y ofrecen una gran variedad de al de los microcontroladores ms econchips, con amplia gama de temperatura micos. y rangos de tensin de trabajo, con la finalidad de satisfacer un vasto nmero de aplicaciones. Prestaciones destacables de hardware Las caractersticas "clave" incluyen arLa lnea COP ofrece varios elementos quitectura mapeada de memoria de 8 destacables de hardware, tanto en lo que bits, un contador y un timer de 16 bits con hace a la arquitectura interna del ncleo dos registros de 16 bits que se vinculan de CPU como en los perifricos incorporacon tres selectores (Generacin PWM de dos en el chip. Procesador Independiente, Contador Ex La lnea COP emplea una arquitectura terno de Eventos y Disponibilidad de Captura de Entradas), dos selectores HALT/IDLE interna tipo Harvard (con buses de instruccon capacidad para guardar y con la po- ciones y datos separados), que permite sibilidad de la presencia de un interruptor que la mayor parte de las instrucciones (el multimedia para despertarse, un oscilador 77%) puedan ser ejecutadas en un nico ciclo de instruccin de un microsegundo, R/C tipo chip, salidas de corriente elevaal realizarse simultneamente el acceso al das, opciones seleccionables para el usuario, tales como WATCHDOG, configu- espacio de instrucciones (EPROM) y al espacio de datos (memoria RAM y perifriracin del Oscilador y potencia de resecos), determinan con ello una performanteo. A los fines de brindar una acabada in- ce estadstica prxima a 1 MIPS (un milln de instrucciones por segundo). A diferentroduccin, reproducimos el informe preparado por el Ing. Guillermo Jaquenod (a cia entre la lnea COP y otros microcontroquien agradecemos su colaboracin), del ladores obtenibles en plaza que tambin presentan arquitectura Harvard, la comDepartamento Tcnico de la compaa plejidad propia de este tipo de arquitectude Semiconductores. ra ha sido adoptada sin limitar, por ello, la cantidad y versatilidad de las instrucciones Tanto en Mxico como en Argentina, hace unos aos que se comercializa la l- disponibles, ni eliminar perifricos.

Todo sobre PICs

95

LOS MICROCONTROLADORES

DE

NATIONAL, PHILIPS Figura 1

MOTOROLA

Dentro de todos los COP, incluso los ms pequeos, existen dos timers, llamados T0 y T1: el timer T0 es un contador simple de 12 bits que opera en modo libre y descendente y es usado slo para la salida controlada de los modos de bajo consumo, y operacin del WatchDog-Clock; el timer T1, de 16 bits, ofrece en cambio una versatilidad realmente destacable, al poder ser operado en 8 modos distintos, que en sus variaciones permiten el conteo de eventos externos (External Event Counter), deteccin de flancos (Input Capture) y un modo de generacin de seales de PWM que opera en forma independiente al procesador. Los COP (figuras 1y2) vienen en versiones con EPROM borrable (encapsulado cermico con ventana) y en versiones OTP de bajo costo, y ofrecen desde 1K de EPROM y 64 bytes de RAM (COP8SAA7), hasta 4K de EPROM y 128 bytes de RAM (COP8SAC7). El empleo de tecnologa CMOS esttica le permite operar en frecuencias que van desde continua hasta 1MIPS, con ten-

Figura 2

siones desde 2,7V a 5,5V y ofrecer un modo de consumo reducido (IDDLE) y un modo de muy bajo consumo (HALT). La salida de los modos de bajo consumo (WAKE UP) puede ser activada desde mltiples patas, o desde el timer T0 y generar, si as se lo desea, las interrupciones consiguientes. Los COP incorporan en forma estndar una interfase de entrada/salida serie sincrnica Microwire PLUS (SPI compatible) que les permite su fcil conexin con perifricos serie, tales como conversores A/D, conversores D/A, etc. Los COP poseen un monitor de operacin (Watch-Dog) y un monitor de clock. Poseen abundantes pines de entrada/salida paralela (16 I/O en los chips de 20 patas y 24 I/O en los de 28 patas), donde ciertas entradas son de tipo SCHMITTTrigger y pueden ser programadas para incorporar internamente una resistencia de pullup y operarn como salidas; ciertas patas poseen una capacidad importante de manejo de corriente de hasta 10mA. Posee varias opciones de oscilador que van desde una fuente externa, un oscilador RC interno al que se le puede alterar la frecuencia mediante un capacitor externo, hasta un oscilador a cristal/resonador en donde la inclusin o no de la resistencia de polarizacin es programable. Finalmente, el diseo total de los COP ha sido realizado con un control de velocidad de transistores (slew rate) y niveles de seal internos al chip, orientados a la generacin de bajos niveles de irradiacin electromagntica (EMI: electro magnetic interference), lo que lo hace ideal para su uso en el rea de comunicaciones e instrumentacin. Esta tecnologa permite hablar de reducciones en el nivel de generacin de interferencias en el orden de 20dB respec-

96

Todo sobre PICs

LOS MICROCONTROLADORES

DE

NATIONAL, PHILIPS

MOTOROLA

to a procesadores similares que operan en la salvaguarda de valores intermedios sin la misma frecuencia. necesidad de definir reas de almacenamiento esttico y para el pasaje de parPrestaciones destacables metros y devolucin de resultados de sude software brutinas. Los pequeos COP no slo ofrecen re Manejo de bits (set reset test): para el cursos notables de hardware, sino que manejo de los ports y registros internos a tambin tienen caractersticas de softwa- nivel de bit. re propias de procesadores ms elaborados, que permiten generar fcilmente esComparacin de los COP con otros tructuras de cdigo propias de lenguajes procesadores de plaza de costo similar de alto nivel. Quizs, quien analice las prestaciones de los COPS, si ha trabajado previamente Manejo de RAM como registros a tra- con microprocontroladores de mayor pervs de dos registros de indireccin B y X: la formance y costo, no resulte sorprendido, disponibilidad de dos registros que puepues encontrar en los COP lo que pareden ser operados como ndices y progra- ca natural en aquellos. Lo sorprendente mados para su postincremento o su post de las prestaciones de los COP surge decremento automtico permite el macuando se los compara con microcontronejo de tablas en RAM en forma eficiente. ladores de similar pinout y costo. Carga inmediata de memoria: esta Si se analizan en nuestro mercado las capacidad permite la carga de datos ofertas de microcontroladores que tienen constante en memoria sin necesidad de un costo de mostrador inferior a los cinco pasar por el acumulador y la memoria. dlares, slo encontrar las opciones que Exchange: esta instruccin permite el propone Motorola a travs de los intercambio de valores entre el acumula- MC68HC705J1A y MC68HC705K1, y microdor y la memoria, sin necesidad de pasos chip con sus PIC_15C54, PIC_16C56 y intermedios. PIC_16C58. En las lneas siguientes se anali Con instrucciones especiales para uso zan los puntos donde ms difieren estos de la indireccin en el espacio de memo- procesadores de los de la lnea COP. ria de programa: Diferencias ms notables con el a) JID (Jump Indirect): salto indexado MC68HC705K1: este microcontrolador de ideal para crear estructuras tipo SWITCH o 16 patas y arquitectura Von Neumann CASE. ofrece la mitad de EPROM (504 bytes) y la b) VIS (Vector Interrupt Select): ideal mitad de RAM (32 bytes) que el COP ms para la realizacin de Interrupt Dispatpequeo (COP8SAA7 de 20 pines). Tiene chers. slo 10 pines de I/O frene a los 16 del COP c) LAID (Load Acumulator Indirect): pa- y, aunque su ciclo de instruccin ms rpira el acceso indexado a tablas en do es de 2 MIPS para algunas instruccioEPROM. nes, la mayor parte de ellas requiere 2 ci Swap nibbles y Ajuste decimal: (ope- clos de reloj, con lo que su mxima perforracin en BCD): estas instrucciones son de mance est tambin alrededor de 1 MIPS; gran utilidad para operar con nmeros en asimismo, el hecho de que la mayor parte BCD. de las instrucciones sea de 2 bytes hace Manejo del stack (PUSH y POP): para que el aprovechamiento de su escasa

Todo sobre PICs

97

LOS MICROCONTROLADORES

DE

NATIONAL, PHILIPS

MOTOROLA

EPROM sea aun menor. El Timer del MC68HC705K1 es uno elemental, de tipo free-run y de lectura solamente, siendo su nica fuente de reloj el oscilador interno del chip, y slo puede generar interrupciones por Overflow y cuatro opciones de divisin adicionales (llamadas Real Time Interrupt). Cualquier seal de PWM o captura de eventos que se desee realizar debe ser por software, con dedicacin casi total de la CPU. El acceso a perifricos serie debe simular la interfase SPI por software. En cuanto al software, slo posee un registro ndice sin opciones de autoincremento o decremento, no permite el uso del Stack, la carga inmediata de datos en memoria, el intercambio entre acumulador y memoria, ni posee instrucciones para manejo de datos BCD. Diferencias ms notables con el MC68HC705J1A: este microcontrolador de 20 patas y arquitectura Von Neumann posee EPROM (1.240 bytes) y Ram (64 bytes) en cantidad comparable al COP ms pequeo (COP8SAA7 de 20 pines), y tiene 14 pines de I/O (frente a los 16 del COP). En el resto de sus caractersticas es idntico al MC68HC705K1. Diferencias ms notables con el PIC 16C54: este microcontrolador de 18 patas posee arquitectura RISC tipo Harvard, 512 palabras de EPROM y 25 bytes de RAM, en cantidad comparable al COP ms pequeo (COP8SAA7 de 20 pines), slo 12 pines de I/O (frente a los 16 del COP) y un costo similar. Su subsistema de Timer es algo ms elaborado que el de los chips de Motorola, aunque ms elemental que el de los COP; en l, el contador es legible y la escritura se hace por software, puede recibir su seal de clock reloj del reloj interno o de una pata externa, y posee un prescaler programable. Sin embargo, al igual que los procesadores de Motorola, cualquier generacin de seales de PWM,

o acceso a perifricos serie (donde debe simularse la interfase SPI) deba ser realizada por software, con dedicacin casi total de la CPU. No tiene mecanismos de interrupcin (ni internos, ni externos), posee un nico registro de indireccin (FSR) y un Stack mnimo de slo dos niveles sin posibilidad de accesos tipo PUSH/POP que limita seriamente la posibilidad de anidamiento de subrutinas. La velocidad de los PIC es notable (5 MIPS), pero la ausencia de interrupciones, y el reducido set de instrucciones disponible (33 instrucciones) hacen que su performance neta sea comparable a la de los otros microcontroladores analizados; la ausencia de interrupciones, por su parte, hace que la deteccin de eventos slo pueda ser realizada a costa de ocupar totalmente la CPU, o con inclusin de test "salpicados" en el cdigo, con una psima latencia de atencin y disminucin en la eficiencia del cdigo. Otras serias diferencias de hardware con los COP y los chips de Motorola es la inexistencia de pull-up/down, programables en las patas de I/O y un modo de bajo consumo (SLIIP) del que slo se sale por RESET. Diferencias ms notables con el PIC 16C56: es totalmente similar al PIC 16C54, slo que posee 1K palabras de programa. Diferencias ms notables con el PIC 16C58: es totalmente similar al PIC 16C54, slo que posee 2K palabras de programa y 72 bytes de RAM.

Caractersticas Fundamentales de la Serie COP Damos a continuacin las caractersticas ms atractivas que suelen darse sobre esta familia. Tenga en cuenta que algunos concep-

98

Todo sobre PICs

LOS MICROCONTROLADORES

DE

NATIONAL, PHILIPS

MOTOROLA

tos ya fueron vertidos en el informe que * Un timer con dos interruptores. hemos dado al comienzo; reseamos, en * Interfaz Serial MICROWIRE/PLUSTM. este caso, la versin del fabricante * Despertador de puertos mltiples. - Son microcontrolador tipo OTP de 8 * Trampa de Software bits y bajo costo. * VIS de fbrica (interruptor de fbrica). - Poseen espacios de programa OTP - El puntero SP es de 8 bits (en RAM). con proteccin para lectura y escritura. - Tiene dos Punteros Indirectos de Me- Son diseados para que tengan emi- moria de Datos, 8 bits. siones de poca radiacin. - Manejo de Bit Real. -El kit se provee con conectores Multi- Mapeo de Memoria I/O. port para despertar (permiten su funcio- Instrucciones aritmticas BCD. namiento en forma verstil), con interruptores opcionales de 4 a 8 pines. Caractersticas Perifricas - Tienen 8 bits de espacio de almace- Lgica de Despertador de Entradas namiento en EFROM. Mltiples. -El operador puede optar por relojes se- Posee un timer de 16 bits con dos releccionables por el usuario: gistros de 16 bits que soportan: * Un selector PWM de Procesador Inde* Reloj controlado por Cristal/Resonador pendiente. * Opcion Cristal/Resonador con resiten* Un contador para evento externos. cia sobre chip. * Un selector contador de Captura de * Oscilador Externo Entrada. * Oscilador R/C Interno - Posee un timer de inactividad - La interfaz es Serial MICROWIRE/PLUS - Poseen Reseteo Interno, seleccionable (Compatible con SPI) por el usuario. -Estn provistos con la posibilidad Caractersticas I/O WATCHDOG y Lgica de Reloj de Monitor. - Opciones I/O de software selecciona- Tienen 12 salidas altas de corriente. bles: El cuadro 1 resume algunas caractersti* Salida TRI-STATE cas a tener en cuenta. * Salida para tirar y presionar * Entrada Dbil para tirar Caractersticas del CPU * Entrada de Impedancia Alta - Versatilidad en las ins- Entradas Schmitt Cuadro 1 trucciones de configuraen puertos G y L cin, las cuales son de - Hasta 12 salidas muy facil utilizacin. de corriente elevada. - Tiempo cclico de ins- Eficiencia de Pin trucciones. (ej. En un paquete de - Posee ocho Interrup44 pines, 40 son destitores de servicio de fuennados a I/O). tes mltiples con vector: * Interruptor Externo Diseo CMOS * Timer de inactividad Esttico Completo TO - Drenaje Bajo de

Todo sobre PICs

99

LOS MICROCONTROLADORES

DE

NATIONAL, PHILIPS

MOTOROLA Figura 3
National logr la reduccin 15 dB-20 dB en las transmisiones EMI, cuando los diseos ya incorporaron su circuito de reduccin de patente EMI.

Arquitectura La familia COPSAx7 est basada en una arquitectura de hardCorriente (normalmente <4 pA). ware, que permite a las tablas de datos - Operacin simple de abastecimiento: tener un acceso directo hacia la memoria 2.7V a 5.5V. de programas. Esto es realmente impor- Dos selectores para guardar: HALT y tante para las aplicaciones modernas que IDLE. se ubicaban en los microcontroladores, ya que la memoria de programa, usualmenRangos de Temperatura te, es ROM o EPROM, mientras que la me0C a +70C, -40C a +85C, y moria de datos, normalmente, es RAM. de -40C a +125C Como consecuencia, las tablas de datos Soporte de Desarrollo regularmente, deben ser contenidas en - Paquete con ventanas para DIP y ROM o EPROM, en consecuencia, no se PLCC pierden cuando el microcontrolador tiene - Emulacin en tiempo real y eliminaun corte de electricidad. cin de funciones errneas, por completo, En una arquitectura modificada de de programa ofrecido por MetalLink DeHardware, tanto la ida y venida de insvelopment System trucciones como la transferencia de datos En la figura 3 se da el diagrama en blo- de memoria pueden extenderse, con dos ques del integrado COP8SAx7. lneas de escenario, lo cual permite que la La familia COPSAx7 de dispositivos inprxima instruccin se desplace de la mecorpora circuitos que brindan proteccin moria de programa mientras la instruccin contra interferencias electromagnticas, actual est siendo ejecutada, por medio es decir, un problema que se incrementa de la utilizacin de la memoria de datos. en los diseos de los microcontroladores, Esto no es posible con una arquitectura de hoy en da. de direccin simple tipo Von Neumann. La tecnologa de reduccin, patentaLa familia COPSAx7 soporta un esqueda por EMI, de National, ofrece circuitos ma de multitudes de software que permide reloj EMI, drivers de salida de encendi- te al usuario incorporar muchos llamados do gradual (GTO) y filtros internos, que de subrutinas. ayudan a circunscribir muchas de las ediEsta capacidad es importante cuando ciones EMI que influencian los diseos de se utilizan Lenguajes de Nivel Elevado. control incorporados. Con una pila de hardware, el usuario est

100

Todo sobre PICs

LOS MICROCONTROLADORES

DE

NATIONAL, PHILIPS

MOTOROLA

limitado a un nmero pequeo y fijo de ni- de cdigo ptima y, tambin, utilizacin veles de pilas. de memoria de programa. Ejecucin de Cdigo de Juego de Instrucciones Ciclo Simple/Byte Simple La eficiencia se debe al hecho de que En el terreno vinculado al costo/benefi- la mayora de las instrucciones pertenecio, de los microcontroladores de 8 bits, cen a la variedad de byte simple. Debido de hoy en da, la flexibilidad y el tiempo a que el cdigo compacto no ocupa una son varios de los temas claves, para el suma sustancial de espacio de memoria mercado, que los diseadores de sistemas de programa, los diseadores pueden inenfrentan al tratar de construir un produc- tegrarle atracciones adicionales, as como to de muy buena ingeniera que pueda funcionalidad en el espacio de memoria competir perfectamente en el mercado. de programa del microcontrolador. AdeMuchos de estos temas pueden tratarse ms, la mayora de las instrucciones ejede manera tal que el juego de instruccio- cutadas por el dispositivo son de ciclo simnes del microcontrolador se ocupe de las ple, lo cual conduce a un tiempo mnimo tareas de procesamiento. Y esa es la rade ejecucin de programa. En realidad, el zn por la cual la familia del COP8 ofrece 77% de las instrucciones son de byte simun conjunto de instrucciones nico y una ple, ciclo simple, y proveen un cdigo eficiencia de cdigo que requieren los mi- mayor, as tambin, como eficiencia de ticrocontroladores de hoy da, para suminis- po I/O, adems de una ejecucin de ctrar flexibilidad, funcionalidad, costos redigo ms veloz. ducidos y tiempo rpido para su arribo al mercado, La eficiencia de cdigo es importante Instrucciones ya que permite a los diseadores empaMultifuncin, Muchos Byte Simples car, en chip, de una forma ms funcional en menos espacio de memoria de prograEl juego de instrucciones COPSAx7 utilima (ROM/OTP). Seleccionando un micro- za muchas instrucciones multifuncin, byte controlador con menos tamao de mesimples. Esto permite que una instruccin moria de programa, podemos obtener simple logre realizar funciones mltiples, costos ms bajos de sistema, como as tales, como DRXZ, DCOR, JIK y Cargatambin, la seguridad de saber que se /Cambio, con post incremento y post depueden empaquetar ms en el espacio cremento, para nombrar algunos ejemde memoria de programa disponible. plos. En muchos de los casos, el conjunto de instrucciones puede ejecutar, en forma simultnea, tres funciones con la misma Herramientas Clave instruccin de bite simple. del Juego de Instrucciones JID: (Salto Indirecto). Instruccin de byLa familia del COPSAx7 incorpora una te simple, eventos externos de decodificacombinacin nica de herramientas vincin y saltos a rutinas de servicios corresculada al juego de instrucciones, las cua- pondientes (frases simples hasta otros niveles proveen a los diseadores, eficiencia les de lenguaje ms elevados).

Todo sobre PICs

101

LOS MICROCONTROLADORES

DE

NATIONAL, PHILIPS

MOTOROLA

LAID: (Carga de Acumulacin Indirecta) Tabla de instruccin de Byte simple provee un sendero de datos eficiente desde la memoria de programa hasta el CPU. Esta instruccin puede ser utilizada para la bsqueda de tabla y para leer la memoria de programa completa, en caso de necesitar verificacin de clculos.

vos de esta familia pueden manejar hasta 64 bytes, tanto de programa como de memoria de datos. En la tabla 1 tenemos los dispositivos que componen esta familia de microcontroladores. El 8051, que es el elemento bsico, contiene las siguientes funciones: CPU de 8 bits optimizada para aplicaRETSK: (Salto de Retorno) La instruccin ciones de control. de byte simple permite retornar desde la Capacidad de procesamiento "Boorutina y, as, saltar a la prxima instruccin. leana extensiva" (lgebra de Boole), lgiLa decisin puede ser realizada en la suca de bit nico. brutina misma y guardar el cdigo. 32 lneas bidireccionales e individualmente dirigibles de entrada y salida (I/O). AUTOINC/DEC: (Auto Incremento/Auto RAM de datos de 128 bytes on-chip. Decremento). Estas instrucciones utilizan Dos temporizadores / contadores de los dos punteros de memoria B y X para 16 bits. hacer procesar, de modo ms eficiente, el UART dplex completa. bloque de datos. 5 entradas de interrupciones con dos niveles de prioridad. Oscilador de clock on-chip. LOS MICROCONTROLADORES DE PHILIPS Memoria de programa de 4K bytes on-chip. La familia de microcontroladores y peri Espacio para direccionamiento de fricos que tienen por base el 8051 est programa en la memoria de 64 bytes. basada totalmente en el patrn industrial Espacio para direccionamiento de la para 8 bits, de alta performance, que tie- memoria de datos de 64K bytes. nen una arquitectura optimizada para Disponible tanto en cubierta DIL de 40 aplicaciones en control secuencial en pines como en cubierta PLC de 44 pines. tiempo real. Tabla 1 - 8051 Familia de microcontroladores Los componentes de esNombre Versin sin Versin con BYTES BYTES TIMERS Tipo de ta familia encuentran apliROM EPROM ROM RAM 16 bits Circuito caciones que van desde el 8051 8031 4k 128 2 NMOS control de mquinas indus80C51 80C31 87C51 4k 128 2 CMOS 8052 8032 8k 256 3 NMOS triales y de instrumentacin 80C52 80C32 87C52 8k 256 3 CMOS hasta el control automotriz. 80C053 87C054 8k 192 2 CMOS 83CL410 80CL410 4k 128 2 CMOS Los dispositivos de la serie 83C451 80C451 87C451 4k 128 2 CMOS pueden obtenerse en ver83C528 80C528 87C528 32k 512 3 + WD CMOS 83C550 80C550 87C550 4k 128 2 + WD CMOS siones con ROM o EPROM 83C552 80C552 87C552 8k 256 3 + WD CMOS internas o, solamente, con 83C562 80C526 8k 256 3 + WD CMOS 83C652 80C652 87C652 8k 256 2 CMOS la CPU. 83C654 87C654 16k 256 2 CMOS Con excepcin de la 83C751 87C751 2k 64 1 CMOS 83C752 87C752 2K 64 1 CMOS 83C751, todos los dispositi83C851 80C851 4K 128 2 CMOS

102

Todo sobre PICs

LOS MICROCONTROLADORES
El microcontrolador 80C51 es la versin CMOS del 8051, siendo totalmente compatible con el 8051 en trminos de funcionamiento. Sin embargo, como se trata de un dispositivo CMOS (a diferencia del 8051, que es NMOS) el consumo es mucho menor. En la figura 4 tenemos el diagrama en bloques del 80C51, a partir del cual haremos el anlisis. Todos los miembros de esta serie poseen espacios separados para direccionamiento y programa de datos, segn muestra el diagrama de estructuras de la memoria en la figura 5.

DE

NATIONAL, PHILIPS

MOTOROLA

Figura 4

Figura 5

Esta separacin permite que los datos de la memoria sean accesados por una direccin de 8 bits, lo que da como resultado un almacenamiento y manipulacin ms rpidos que los efectuados por una CPU de 8 bits. Sin embargo, direcciones de 16 bits tambin pueden ser usadas, generadas por el registrador DPTR. La memoria de programa (ROM o EPROM) puede ser leda, pero no grabada. Tenemos disponibles 64K bytes de espacio para la memoria de programa. En el 80C51, los 4K bytes inferiores estn on-chip. En las versiones sin ROM, toda la memoria de programa es externa. El "strobe" para la lectura de la memoria es el PSEN (Program Store Enable). La memoria de datos (RAM) ocupa un espacio separado para el direccionamiento, a partir del programa de memoria. En el 80C51, los 128 bytes de la memoria de datos estn sobre el chip. El espacio de la memoria de datos externa puede dirigir hasta 64K bytes de una RAM externa). En la versin sin ROM, los 128 bytes inferiores son onchip. Una CPU genera las seales de lectura y grabacin (RD y WR), segn se necesite, durante los accesos a la memoria externa. Las memorias de datos externa pueden combinarse con memorias de programas, si se lo desea, a travs de la aplicacin de seales RD y PSEN en las entradas de una

Todo sobre PICs

103

LOS MICROCONTROLADORES

DE

NATIONAL, PHILIPS

MOTOROLA

0; 000Bh para el timer 0; 0013h para la interrupcin externa 1; 001Bh para el timer 1, etc. Si una rutina de tratamiento de interrupcin fuera lo suficientemente corta (como en el caso de aplicaciones para control), puede permanecer totalmente en el intervalo disponible de 8 bytes. Rutinas de servicio ms largas pueden usar una instruccin de salto para evitar direcciones de Figura 6 interrupciones subsiguientes, si otras intepuerta AND, se utilizar su salida como rrupciones no estuvieran en uso. Los 4K by"strobe" de lectura para la memoria de tes inferiores de la memoria de programa datos / programa externa. pueden estar tanto en la ROM on-chip como es una ROM externa. El pin EA (External Access) permite hacer la seleccin. Memoria de Programa En el 80C51, si el pin EA fuera conectado al Vcc, el programa ira a buscar las diEn la figura 6 tenemos el diagrama en recciones de 0000h hasta OFFFh en la bloques de la memoria de programa. ROM interna, y de 1000h hasta FFFFh en la Despus de reseteada, la CPU inicia la ROM externa. ejecucin del programa a partir de la diSi el pin EA fuera conectado al Vss, enreccin 0000h. tonces el programa trabajara como las Tal como se muestra en la figura 6, ca- direcciones de la ROM externa. da interrupcin es designada por una diLa figura 7 muestra el hardware pone reccin fija en la memoria de programa. la ejecucin de trabajos externos. La interrupcin se origina cuando la Observe que las 16 lneas de I/O (ports CPU salta hacia la direccin correspon0 y 2) estn dedicadas a la cancelacin diente, donde tiene su inicio la rutina de de instrucciones durante las acciones exservicio (rutina de tratamiento de interrup- ternas de la memoria de programa. cin). El port 0 (PO, en la figura 7) sirve como Una interrupcin 0 externa, por ejemmultiplexador de direcciones y datos. plo, determina una direccin 0003h. Ella emite el byte inferior del contador Si se usara una interrupcin 0 externa, de programa (PCL) como una direccin y, la rutina de servicio debera comenzar por la direccin 0003h. Si la interrupcin no se usara, la direccin estara disponible como memoria de programa de uso general. Las direcciones de las sub-rutinas de tratamiento de interrupcin estn separadas por intervalos de 8 bytes: 0003h Figura 7 para la interrupcin externa

104

Todo sobre PICs

LOS MICROCONTROLADORES

DE

NATIONAL, PHILIPS

MOTOROLA

La CPU genera las seales RD y WR, a medida que sean necesarias durante el acceso a RAM externa. Pueden usarse hasta 64K bytes de memoria externa. Las direcciones para accesar los datos de la memoria externa pueden utilizar tanto 1 como 2 bytes de exFigura 8 tensin. entonces, permanece en un estado flucLas direcciones de 1 byte tambin son tuante en espera de la llegada del byte usadas en conjunto con una o ms lneas de cdigo de la memoria de programa. de I/O para paginar la RAM, segn muesDurante el intervalo en el que el byte tra la misma figura 8. inferior del contador de programa fue vEn el caso de que la parte ms alta sea lido en el port 0, la seal ALE (Address emitida por el port 2, pueden usarse direcLatch Enable) juega este byte en un latch ciones de dos bytes. (cerrojo) de direccionamiento. La memoria interna de datos est grafiMientras tanto, el port 2 (P2 en la figura cada en la figura 9. El espacio de la me7) emite un byte superior del contador de moria est dividido en 3 bloques que son programa (PCH). Entonces, PSEN, a travs referidos como: 128 - inferiores, 128 - supedel "strobe" permite que el microcontrola- riores y espacio del SFR (Special Function dor lea el byte del cdigo en la EPROM. Register). Las direcciones de memoria de programa Las direcciones de la memoria de dason siempre 16 bits, aun cuando se use un tos interna son siempre de 1 byte de exespacio real de menos de 64 bytes. En es- tensin, lo que implica un direccionamientas condiciones, la ejecucin del prograto de slo 256 bytes. ma externo sacrifica dos ports de 8 bits, Adems de eso, los modos de direccioPO y P2, para funcionar en la direccin de namiento de la RAM interna pueden, de la memoria de programa. hecho, acomodar 384 bytes, utilizan un truco simple: las direcciones directas, por encima de 7Fh, accesan un espacio de Memoria de Datos memoria y las direccioFig. 9 La mitad derecha de la figura 5 (pgi- nes superiona 103) muestra los espacios internos y ex- res a 7Fh acternos de la memoria de datos disponible cesan un esen el 80C51. pacio difeEn la figura 8 tenemos una configurarente. cin de hardware que permite accesar La figura 9 hasta 2K bytes de una memoria RAM exmuestra los terna. 128 - superioEn este caso, la CPU opera a partir de res y el SFR la ROM interna. ocupados

Todo sobre PICs

105

LOS MICROCONTROLADORES

DE

NATIONAL, PHILIPS

MOTOROLA

por el mismo bloque de diFig. 10 recciones: de 80h hasta FFh, mientras que, en realidad, son entidades fsicamente diferentes. Los 128 bytes inferiores de la RAM esFig. 11 tn presentes en todos los dispositivos 80C51, como se grafica en la figura 10. Los 32 bytes inferiores estn agrupados en 4 bancos de 8 registradores. Las instrucciones del programa llaman a estos registradores externamente de R0 a R7. Dos bits del PSW (Program Status Word) seleccionan del banco de registradores cul va a ser usado. Este procedimiento permite una utilizacin ms eficiente del espacio para cdigo, ya que las instrucciones son ms cortas que las que usan direccionamiento directo. Los 16 bytes siguientes, Fig 12 por encima de los bancos de registradores, forman un bloque de espacio de memoria dirigible por bit. El set de instrucciones del 80C51 incluye una amplia seleccin de instrucciones de bit nico, y los 128 bits de esta rea pueden ser directamente dirigidos por estas instrucciones. Las direcciones de bits en esta rea

van de 00h a 7Fh. Todos los bytes en los 128 - inferiores resultan accesibles tanto por direccionamiento directo como indirecto. Los 128 - superiores, tal como muestra la figura 11, slo son accesibles por direccionamiento indirecto. En la figura 12 tenemos una visin del Special Function Register (SFR) y del espacio que ocupa. Esta estructura incluye latches (cerrojos) de puertas, timers, controles, perifricos, etc. Estos registradores pueden ser accesibles, solamente, por direccionamiento directo. Diecisis direcciones en el espacio SFR son accesibles tanto por byte como por bit. Los SCF pueden accesarse por bit y son los que tienen direcciones terminados en 0h u 8h. A travs de la segunda parte de esta nota, los proyectistas podrn tener una mejor visin de cmo y dnde usar el microcontrolador 80C51 y sus perifricos.

El Set de Instrucciones del 80C51 El Set de Instrucciones del 80C51 est especialmente confeccionado para su utilizacin en aplicaciones de control con 8 bits. Proporciona gran variedad de modos de direccionamiento rpido para acceder a la RAM interna, con lo que se facilitan las operaciones con bytes en pequeas estructuras de datos. El Set de Instrucciones prev, adems, un soporte extensivo para variables de 1 bit, como los del tipo de datos separados, as permite la manipulacin directa del bit en sistemas lgicos y de

106

Todo sobre PICs

LOS MICROCONTROLADORES
control que requieran un procesamiento booleano.

DE

NATIONAL, PHILIPS

MOTOROLA

Fig 13

Program Status Word (PSW) El Program Status Word (PSW) contiene diversos bits de status que indican el estado corriente de la CPU. El PSW, que se muestra en la figura 13, reside en el espacio de la SFR. El PSW contiene el bit de carry, o carry auxiliar (para operaciones en BCD), los dos bancos de registradores para seleccin de bits, el aviso de overflow, un bit de paridad y dos flags de uso que puede ser definido por el usuario. El bit de carry, adems de servir para su funcin especfica, tambin acta como acumulador para un cierto nmero de operaciones booleanas. El bit de paridad indica el nmero de "uns" no acumulados. Si P=1, entonces el acumulador contiene un nmero impar de "uns". Si P=0, el acumulador contiene un nmero par de "uns". Vemos as que si tenemos en cuenta el nmero de "uns" en el acumulador sumado al valor de P, tendremos siempre un resultado par.

direccin de 8 bits en la instruccin. Slo la RAM interna de datos y la SFR pueden ser directamente direccionadas. b) Modo Indirecto En el direccionamiento indirecto, la instruccin especifica un registrador que contiene una direccin del operando. Tanto la RAM interna como la externa pueden ser indirectamente direccionadas. c) Instrucciones del Registrador:

Los bancos de registradores que contienen los registradores de R0 a R7 pueden ser accedidos por ciertas instrucciones que lleven una especificacin de registrador de 3 bits conjuntamente con el cdigo de la instruccin (opcode). Las instrucciones que acceden los registradores en esta forma son "code efficient", ya que as se elimina la necesidad Modos de Direccionamiento de un byte de direccin. Cuando la instruccin es ejecutada, En el 80C51 tenemos los siguientes mouno de los ocho registradores del banco dos de direccionamiento: seleccionado es accedido mientras que uno de los cuatro bancos es seleccionaa) Modo Directo: do en el tiempo de ejecucin por los dos En esta modalidad de direccionamien- bits de seleccin de bancos en el PSW to, el operando est especificado por una (figura 13).

Todo sobre PICs

107

LOS MICROCONTROLADORES

DE

NATIONAL, PHILIPS

MOTOROLA

destinado a la lectura de tablas de consulta en la Memoria de Programa. Otro tipo de direccionamiento indexado se usa Algunas instrucciones son especficas para el caso de una instruccin JUMP. En para ciertos registradores como, por ejem- este caso, el direccionamiento de destino plo, las que siempre operan en el Acumu- de una instruccin JUMP es computado lador o en el Data Pointer, de modo que como la suma de los datos del acumulapara ellas no se necesita bit alguno de di- dor con el Data Pointer. reccionamiento para su uso. El opcode lo hace por s solo. g) Instrucciones Aritmticas: e) Constante Inmediata: El valor de una constante puede seguir el opcode en la Memoria de Programa. Por ejemplo: MOV A, 100 carga el acumulador con el nmero decimal 100. El mismo nmero puede especificarse en dgitos hexadecimales como 64 h. f) Direccionamiento Indexado: Slo la Memoria de Programa puede ser accedida con direccionamiento indexado, siendo, despus, slo posible la lectura. Este modo de direccionamiento est El men de las instrucciones aritmticas del 80C51 est listado en la tabla 2, donde estn indicados los modos de direccionamiento que pueden usarse con cada instruccin para acceder el <byte> operando. Los tiempos de ejecucin en la lista de la tabla 1 son para una frecuencia de clock de 12MHz. Todas las instrucciones aritmticas son ejecutadas en 1s, excepto la INC DPTR, que lleva 2s, y las instrucciones de multiplicacin y divisin, que llevan 4s. Obsrvese que cualquier byte en el espacio interno de la Memoria de Datos puede ser incrementado sin pasar por el Acumulador. h) Instrucciones Lgicas: La tabla 3 muestra la lista de instrucciones lgicas disponibles en el 80C51. Las instrucciones que realizan operaciones booleanas (AND, OR, Exclusive OR, NOT) con bytes utilizan bit por bit. Los modos de direccionamiento que pueden usarse para acceder el operando estn listados en la misma tabla. Todas las instrucciones lgicas que estn en el Acumulador son ejecutadas en 1s, con base en un clock de

d) Instrucciones Especficas de Registradores:

Tabla 2

108

Todo sobre PICs

LOS MICROCONTROLADORES Tabla 3

DE

NATIONAL, PHILIPS

MOTOROLA

i) Transferidores de Datos:

La tabla 4 muestra el men de instrucciones que estn disponibles para el movimiento de datos por los espacios disponibles en la Memoria Interna. En ella tambin tenemos los modos de direccionamiento que pueden utilizarse con cada instruccin. Con un clock de 12MHz, todas estas instrucciones son ejecutadas tanto en 1s como en 2s. La instruccin MOV <dest>, <src> permite la transferencia de datos entre Tabla 4 cualquier locacin de la RAM o SFR, sin pasar por el Acumulador. Recurdese que hasta 128 bytes de datos de la RAM pueden accederse slo por direccionamiento indirecto, y que el espacio de la SFR solamente puede ser accedido por direccionamiento directo. En la tabla 5 puede observarse una lista de instruccioTabla 5 nes para transferencia de datos accediendo la Memoria Externa de Datos. Slo pueden utilizarse direccionamientos indirectos, y la eleccin puede recaer tanto por direccionamientos 12MHz. Las otras demoran 2s. de 1 bit, tipo Ri, donde Ri puede ser R0 o Si la operacin se origina como resR1 del banco seleccionado, como tampuesta a una interrupcin, el hecho de no bin de dos bits, del tipo DPTR. utilizarse el Acumulador economiza tiemLa desventaja de la utilizacin de direcpo y esfuerzo en el sentido de la introduc- cionamientos de 16 bits, en caso de que cin de datos en la pila de ejecucin de pocos k bytes de la RAM externa estn la rutina de servicio. comprometidos en un solo control, es que

Todo sobre PICs

109

LOS MICROCONTROLADORES Tabla 6

DE

NATIONAL, PHILIPS

MOTOROLA
j) Instrucciones Booleanas:

Los dispositivos 80C51 contienen un procesador completo para instrucciones booleanas (bit nico). La RAM interna contiene Tabla 7 128 bits direccionables, y el espacio SFR puede aceptar hasta 128 bits direccionables. Todas las lneas de ports son direccionables por bit, y cada una puede ser tratada como un port de bit nico. Las instrucciones que acceden estos bits no tienen una nica funcin: tambin pueden operar un men completo de opciones, tales como descolocacin, fijacin, apagado, complementacin, puerta OR, AND, etc. Estas operaciones de bit nico no se obtienen fcillos direccionamientos de 16 bits usan tomente en otras arquitecturas sin la ayuda dos los 8 bits del port 2 y, tambin, el barri- de una buena cantidad de software do de direccionamientos. orientado para esta finalidad. Por otro lado, direccionamientos de 8 El Set de Instrucciones para el procesabits permiten el direccionamiento de podor booleano se observa en la tabla 7. cos bytes de la RAM sin sacrificar todo el Los direccionamientos de los bits de 00h port 2. Todas estas instrucciones son ejecu- hasta 7Fh estn en los 128 inferiores, y los tadas en 2s con un clock de 12MHz. de 80h hasta FFh se encuentran en el esNtese que en todos los accesos a la pacio SFR. Ntese que el Set de InstruccioRAM externa el Acumulador est funciones booleanas incluye operaciones ANL y nando como origen y destino de los daORL, pero no la operacin XRL (Exclusive tos. OR). La tabla 6 muestra las dos instrucciones Una operacin XRL resulta fcil de imque estn disponibles para la lectura de plementar mediante el software. tablas de consulta en la Memoria de Programa. Offset relativo: Los direccionamientos Como estas instrucciones acceden so- de destino para estos saltos estn especifilamente la Memoria de Programa, las ta- cados al dispositivo por medio de un arblas de consulta slo pueden ser consulta- chivo o por un direccionamiento real en das y no actualizadas. la Memoria de Programa.

110

Todo sobre PICs

LOS MICROCONTROLADORES
k) Instrucciones de Salto (JUMP):

DE

NATIONAL, PHILIPS

MOTOROLA

Tabla 8

En la tabla 8 vemos una lista de jumps incondicionales al tiempo de ejecucin para un clock de 12 MHz. La distancia del salto est limitada a la banda de -128 a +127 bytes relativos a la instruccin que siTabla 9 gue el JMP. JMP es el modo mnemnico de la instruccin. La tabla 9 muestra la lista de jumps disponibles en el 80C51. Todos estos jumps especifican el direccionamiento de destino por el mtodo de offset relativo, y, por eso, estn limitados a una distancia de -128 a +127 bytes a partir de la instruccin que determina el salto. Es importante observar que el usuario especifica el assembler (ensamblador) o direccionamiento real de destino de la misma forma que en los jumps comunes: como un archivo de constantes de 16 bits. Otra aplicacin para esta instruccin est en las comparaciones del tipo "menor que".

Ciclo de Mquina Un ciclo de mquina consiste en una secuencia de 6 estados, numerados desde S1 hasta S6. Cada estado exige, por lo menos, dos perodos del oscilador, lo que significa que un ciclo de mquina demora 12 ciclos del oscilador, correspondientes a 1s si la

Fig. 14

Timing de la CPU Todos los microcontroladores 80C51 poseen un oscilador on-chip que puede utilizarse como fuente de seal de clock para la CPU. Para usar el oscilador on-chip conecte un cristal al resonador cermico entre los pines XTAL1 y XTAL2 del microcontrolador y capacitores a tierra, tal como muestra la figura 14. En la figura 15 tenemos ejemplos de cmo utilizar un oscilador externo como generador de clock.

Fig. 15

Todo sobre PICs

111

LOS MICROCONTROLADORES

DE

NATIONAL, PHILIPS

MOTOROLA

frecuencia del clock fuera de 12 MHz. Cada estado est dividido en mitades que corresponden a Fase 1 y Fase 2. La figura 16 muestra la secuencia de estados y fases para diversos tipos de instrucciones. Las secuencias descriptas son las mismas tanto para la utilizacin de una Memoria de Programa interna como externa. El tiempo de ejecucin tambin es independiente del uso de las memorias usadas. Estructura de Interrupciones

externas, 2 por timer y el port serial de interrupcin. A continuacin damos una visin general de la estructura de interrupciones del dispositivo, ya que una profundizacin mayor slo sera posible con un anlisis ms detallado del manual del componente. Habilitacin de Interrupciones

Cada fuente de interrupcin puede ser habilitada o inhabilitada individualmente por la colocacin o el retiro de un bit en El 80C51, en su versin sin ROM y con la parte de la SFR denominada IE (InteEPROM, posee 5 fuentes de interrupcin: 2 rrupt Enable). Este registro contiene, tambin, un bit de inhabilitacin global que permite la habilitacin o inhabilitacin de todas las interrupciones al mismo tiempo.

Prioridades de Interrupcin Cada fuente de interrupcin puede programarse individualmente para presentar uno o dos niveles de prioridad por la utilizacin de un bit en la SFR denominado IP (Interruptor Priority). Una interrupcin de baja prioridad puede detenerse por una interrupcin de alta prioridad pero NO por otra de baja prioridad. En caso de recibirse dos pedidos de interrupcin al mismo tiempo, ser atendido el de mayor nivel de prioridad. Si fueran recibidas dos instrucciones de interrupcin de igual prioridad al mismo tiempo, una secuencia interna de

Figura 16

112

Todo sobre PICs

LOS MICROCONTROLADORES
evaluacin determina cul es la que deber ser atendida. Simulando un Tercer Nivel de Prioridad Va Software: Algunas aplicaciones exigen ms que los dos niveles de prioridad disponibles en el 80C51. En estos casos, un software relativamente simple puede utilizarse para tener el mismo efecto de un tercer nivel de prioridad. Este software aumenta un tiempo de 10s (con 12MHz) para las interrupciones de prioridad 1.

DE

NATIONAL, PHILIPS

MOTOROLA

Un microprocesador es otro tipo de componente. Nace con la capacidad de ser adecuado para diferentes usos; el mismo micro puede usarse para una gran cantidad de aplicaciones, que ni siquiera su propio fabricante conoce. En este artculo, vamos a presentar una aplicacin del microprocesador Motorola MC68HC705J1 donde se lo utiliza para controlar la cerradura elctrica de una puerta, con introduccin de un cdigo numrico por un teclado; pero con el mismo integrado, se puede realizar una interfaz para comunicarse con una PC en forma Nota remota, o un detector de estado del cierre La descripcin de la arquitectura que de puertas de una casa, o cualquier otra dimos fue simplificada, ya que la compleji- aplicacin que pueda resolverse con dad del dispositivo no nos permite hacer compuertas lgicas, con temporizadores o una descripcin completa en el poco es- que implique el ingreso de datos y su propacio que disponemos. cesamiento matemtico o lgico y la saliNo obstante, esperamos que haya sido da de los datos procesados con destino a lo bastante detallada para permitirle al diodos LEDs, rels, optoacopladores, triacs, proyectista una visin de las posibilidades etc. Esta ductilidad en su comportamiento del dispositivo. es debida a que el integrado permite que el diseador programe las funciones que debe cumplir, incluso si no est conforme MICROCONTROLADORES con el funcionamiento o desea realizar DE MOTOROLA otra aplicacin, puede desprogramar el integrado y volverlo a programar tantas Ningn componente electrnico impac- veces como lo desee, si se trata de la vert tanto en la estructura de nuestra indus- sin EPROM. Esto merece un comentario tria (y en la sociedad en general) como lo ms extenso. hizo el microprocesador. Ni siquiera el transistor, o el circuito integrado, modificaron tanto las estructuras; ya que en el fondo LAS VERSIONES EPROM Y OTP slo cambiaron el tamao, las prestaciones y el precio de los equipos; pero las inPrimero vamos a explicar qu significan dustrias siguieron siendo como eran antes: las iniciales del subttulo: un lugar donde se montaban componenEPROM: ERASABLE PROGRAMABLE READ tes sobre una placa, se probaban los con- ONLY MEMORY - MEMORIA DE LECTURA juntos, se colocaban en un gabinete y se SOLAMENTE, BORRABLE Y REPROGRAMABLE vendan. De hecho cada componente teOTP: ONE TIME PROGRAMING - MEMOna una funcin para la cual haba sido RIA DE LECTURA SOLAMENTE, QUE ADMITE construido y no se poda emplear para UNA UNICA PROGRAMACION otra cosa. Una vez programados o grabados, am-

Todo sobre PICs

113

LOS MICROCONTROLADORES

DE

NATIONAL, PHILIPS

MOTOROLA

bos dispositivos realizan la misma funcin. La diferencia fundamental entre ambos, est en el precio. La relacin de precios entre un EPROM y un OTP para el modelo que describimos, es de unas trece veces. La versin EPROM, se utiliza slo para el proceso de desarrollo; una vez que el prototipo ha sido depurado en su funcionamiento, el producto industrial se realiza con la versin OTP. En general el precio de la OTP es comparable al precio de 3 4 compuertas lgicas y su prestacin es muy superior. El significado de la palabra programar o grabar es el siguiente. El microprocesador contiene una memoria, en donde se guardan ordenadamente los datos necesarios para que funcione. A la memoria podemos considerarla como una cajonera de las que utilizamos para guardar materiales. Cada cajoncito tiene su nmero (slo que este caso es un nmero hexadecimal, ver apndice A). Cada cajoncito, al que llamaremos direccin o posicin de memoria, tiene ocho separaciones internas (celdas de memoria) en donde vamos a colocar un cartn escrito con un uno o un cero (que llamamos bit). Cada bit tiene una determinada posicin en el cajn, a los ms internos los llamamos los menos significativos y a los ms externos, los ms significativos. Cada bit es un dato que deseamos almacenar para recuperarlo posteriormente y utilizarlo adecuadamente. Los conjuntos de ocho bits forman una cadena de smbolos o palabra, que en ingls se denomina BYTE. Para no confundir los trminos en lo sucesivo vamos a llamar bit a cada elemento y octeto al conjunto de ocho bits (las cadena de 4 bits reciben en ingls el nombre de nibble y nosotros lo llamaremos cuarteto). Al grabar el programa, se determina el uso de cada posicin de memoria como contenedora de una instruccin (por ejemplo: sumar,

comparar, realizar la operacin lgica AND, etc) en tanto que otras posiciones de memoria se destinan a guardar datos fijos (simplemente nmeros digitales transformados a binarios). En cualquiera de los dos casos, las posiciones de memoria tienen guardados una serie de uno o ceros; slo que el micro los decodifica adecuadamente, para transformarlos en nmeros o instrucciones. Las memorias se ordenan segn su capacidad de almacenar octetos, cuartetos o palabras de otra cantidad de bits. Por ejemplo, el micro que nos ocupa tiene una capacidad de almacenar 1.200 octetos, en su memoria EPROM, disponibles para el uso (hay posiciones prohibidas que no pueden utilizarse, es decir que son como cajones trabados). Con el mismo lugar asignado para la memoria, podran manejarse 2.400 cuartetos en otro dispositivo que funcionara con organizacin de 4 bits. Para simplificar las cosas se puede decir que nuestra memoria tiene una capacidad de 1200x8. Una EPROM est construida con una matriz de transistores MOSFET, que quedan en una condicin de conduccin (cero) o de corte (uno), segn el estado de carga de su compuerta, que puede considerase como un capacitor. Estos capacitores tienen tan buena aislacin que conservan su carga por muchos aos, manteniendo los datos grabados; este proceso se realiza con pulsos de tensin de unos 14V. La nica manera de borrar la memoria, es exponer el chip a la luz ultravioleta, que ingresa por una ventana transparente. En ese momento, la luz genera portadores de carga en las aislaciones de las compuertas, como para que stos descarguen el capacitor. Luego se puede volver a escribir sobre la memoria, una vez tapada la ventana. Una OTP es una matriz de diminutos fusibles que se queman en el momento de la

114

Todo sobre PICs

LOS MICROCONTROLADORES
escritura (tambin se requiere una tensin ms alta que la normal para producir la fusin de los microfusibles). Con esta estructura, una vez grabada, la memoria no puede ser borrada. El proceso de escritura de las memorias se realiza con una placa especial (que se incluye en el kit de desarrollo junto con un micro tipo EPROM) y que sirve para grabar cualquiera de los dos dispositivos. Esta placa se conecta a una PC, donde se corre un disquete especial que se entrega con el kit de desarrollo. El programa de trabajo desarrollado se escribe en la PC desde la misma, se transfiere al micro a travs de la placa de desarrollo. Luego se retira el micro de la placa del kit de desarrollo y se ubica definitivamente en la placa de produccin, si es una OTP, o en la placa prototipo, si es una EPROM. En realidad el disquete que viene con el kit de desarrollo no slo sirve para escribir el programa en nuestro micro; sa es slo una de sus funciones. Tambin permite realizar la simulacin del micro J1 y los componentes externos con la PC y correr el programa desarrollado, para verificar su funcionamiento en forma virtual, sin realizar ninguna placa prototipo. Una vez completada esa primera etapa del desarrollo, se pasa a una segunda etapa llamada de emulacin; en esta etapa, la PC cumple slo la funcin del micro J1, sin componentes externos y sirve precisamente para probar la placa prototipo de nuestro desarrollo. Recin como tercera etapa, se procede a grabar el micro.

DE

NATIONAL, PHILIPS

MOTOROLA

dispositivo est construido con MOSFETs, las tensiones de alimentacin negativa y positiva se llamen VSS y VDD, respectivamente (S de SURTE = surtidor y D de DRAIN = sumidero). El Motorola J1 opera con una tensin de fuente simple de 3,3 a 5V, conectada a la pata 9 (VDD) y con el negativo de fuente conectado a la pata 10 (VSS). Un micro es un dispositivo cuyo consumo puede ser muy variable, en funcin del programa, de la tensin de fuente y de la velocidad a la cual trabaja el dispositivo. En el modo de funcionamiento normal, la velocidad est directamente determinada por la frecuencia del cristal o filtro cermico del clock (este tema se tratar en el prximo punto). Pero aparte del modo de funcionamiento normal, el J1 tiene otros dos modos de funcionamiento: WAIT (lento) y STOP (parado); esos modos de funcionamiento estn previstos para que el dispositivo reduzca dramticamente el
Figura17

La Tensin de Alimentacin Es costumbre que cuando un

Todo sobre PICs

115

LOS MICROCONTROLADORES

DE

NATIONAL, PHILIPS

MOTOROLA
De otro modo, la tensin VDD tendra lo que se llama ruido digital, que puede causar un funcionamiento errtico del dispositivo. Ver figura 18.

Figura 18

Oscilador de Clock Un micro es un dispositivo que funciona de modo secuencial; por lo tanto, todo su funcionamiento se basa en la generacin de una seal llamada de CLOCK (reloj) que determina el ritmo de funcionamiento de todo el dispositivo. En general, todos los procesos internos se llevan a cabo justo cuando el CLOCK cambia de estado; por ejemplo, la circulacin de los datos, que se transfieren internamente en forma sincrnica con el clock. La seal de clock se puede generar de diferentes maneras, segn qu elementos se conecten sobre las patas 1 (OSC1) y 2 (OSC2). El sistema ms estable es conectando un cristal y un resistor entre ambas patas y dos capacitores a masa desde cada pata. Ver figura 19. El resistor cumple la funcin de hacer arrancar al oscilador, y su uso puede evitarse, ya que el micro tiene un resistor interno de 2M, que queda conectado o no, en funcin de la grabacin de la memoria (una posicin de memoria se dedica exclusivamente a realizar las modificaciones de la arquitectura inFigura 19 terna del dispositivo, en funcin de las necesidades del circuito). La frecuencia mxima del cristal que puede utilizarse, depende de la tensin de fuente: para una tensin nominal de 5V, se recomienda usar un cristal de 4MHz o menor, en tanto que para una tensin nominal de

consumo, ya que est previsto para ser alimentado con pilas, cuando trabaja como control remoto, o en los sistemas de alarma en caso de corte de energa. Por todo esto, el consumo debe expresarse a travs de una tabla, en funcin de la tensin de alimentacin, la frecuencia del cristal y el modo de funcionamiento. Ver figura 17. Otra cosa a tener en cuenta con respecto al consumo, es que es sumamente variable por pulsos, debido a las caractersticas de los circuitos digitales, que consumen sobre todo durante las conmutaciones. Esto obliga a conectar dos capacitores, entre el terminal de VDD y el de masa; uno de valor alto (electroltico) y otro de valor ms pequeo, con buenas caractersticas de respuesta a altas frecuencias (cermico multicapa o polister metalizado) de 0,1F. Los capacitores deben conectarse lo ms cerca posible de los terminales del micro, con pistas cortas y anchas.

116

Todo sobre PICs

LOS MICROCONTROLADORES

DE

NATIONAL, PHILIPS

MOTOROLA

3,3V se recomienda no superar los 2MHz. El tipo de cristal ms recomendable es el de corte AT, para evitar la sobreexcitacin del oscilador. Ver figura 20. Cuando se trata de fabricar dispositivos de bajo costo, lo ms recomendable es utilizar un resonador cermico, en lugar del cristal. La estabilidad del resonador cermico, es menor que la del cristal; pero es suficiente para la mayora de las aplicaciones (el micro puede trabajar como temporizador y la estabilidad de tiempo es directamente proporcional a la estabilidad del CLOCK). Ver figura 21. En el futuro, este micro estar previsto para usar un oscilador RC, en el que no se requiera buena estabilidad. Se debe consultar al representa local de Motorola, por la disponibilidad de esta prestacin. Un micro puede trabajar en forma enganchada con otro, del mismo o de diferente tipo, inclusive de otra marca, mientras sea un CMOS compatible. En este ca-

so, la conexin es muy simple: la pata uno se utiliza como pata de entrada, dejando libre la pata dos. Ver figura 22. La velocidad con la que el micro realiza cada ciclo de instruccin, es directamente proporcional a la frecuencia del clock. En este modelo, cada ciclo de instruccin dura 476nS, si el cristal es de 4MHz y VDD es 5V (en realidad el clock interno trabaja a 2MHz, ya que el generador de clock tiene acoplado un divisor por dos). Para VDD de 3,3V y crisFigura 22 tal de 2MHz, cada ciclo de instruccin dura aproximadamente 1S.
Figura 20

RESET Y WATCHDOG (COP) La abreviatura COP significa: COMPUTER OPERATING PROPERLY que se traduce por: OPERACION APROPIADA DEL COMPUTADOR. El micro realiza su tarea en forma rutinaria y secuencial, cumpliendo cada paso de programa y cuando llega al ltimo, comienza reiterativamente por el primero o por otro, si el ltimo Figura 21 paso as se lo indica. Esta rutina, se puede alterar de dos maneras diferentes: por el RESET, o por una interrupcin IRQ. En este punto trataremos el modo RESET. El RESET, se puede producir automticamente, o como una condicin buscada exterior-

Todo sobre PICs

117

LOS MICROCONTROLADORES

DE

NATIONAL, PHILIPS

MOTOROLA

mente con un pulsador, conecFigura 23 tado desde la pata 20 a masa. Cuando se opera el RESET, el micro retorna a una condicin preestablecida de arranque, carga todos los dispositivos que pueden memorizar con los octetos indicados por el programa (generalmente 00000000) y luego arranca por el primer paso de programa. En algunos casos (sobre todo cuando se est en una etapa poco avanzada del desarrollo) se pueden producir errores de funcionamiento, que lleven al programa a trabajar sobre un lazo cerrado, del cual no puede salir por s mismo (en la jerga se dice que el sistema se qued colgado). Tambien puede ocurrir que, por error, se pretenda acceder a una posicin de memoria ilegal (una direccin reservada para un uso fijo del micro). En ambos casos, opera un sistema llamado WATCHDOG (literalmente: perro guardin). El WATCHDOG produce un RESET automtico, si es que el micro demora ms que un tiempo preestablecido para realizar su rutina principal; del mismo modo opera, si se pretende utilizar una posicin de memoria ilegal. A este sistema tambin se lo llama COP WATCHDOG (literalmente perro guardin de la operacin apropiada del microcomputador). En la versin OTP, existe un resistor interno conectado a la tensin de fuente VDD; es decir, que slo basta con conectar la pata 20 a masa con un pulsador. Tambin existe un diodo interno, que limita la tensin si sta supera a la de fuente y que adems arrastra hacia masa la tensin de la pata 20, cuando se desconecta la fuente VDD. La pata 20 no opera directamente sobre micro, sino que lo hace a travs de un SCHMITT TRIGGER (disparador de Schmitt: dispositivo de disparo con histre-

sis de tensin) que aumenta la inmunidad del micro frente al ruido, para evitar que se produzca un RESET indeseado. Ver figura 23. La versin EPROM de este dispositivo no tiene ni el resistor ni el diodo y, por lo tanto, se debe prever su ubicacin en la placa prototipo.

Las Interrupciones IRQ La pata 19 es de doble funcin, sirve como una entrada de interrupcin o como pata de grabacin del programa, cuando se trabaja con tensiones superiores a 12V. Entre 0V y VSS, esta pata opera deteniendo el programa normal, pero acumulando previamente todos los datos existentes en cualquier tipo de componente interno, capaz de memorizar datos (registros, memoria voltil, etc.) Cuando termina el programa de interrupcin, el programa principal contina funcionando normalmente, en el paso en donde se haba interrumpido su funcionamiento. Cuando se realiza una interrupcin, el micro sale de su programa normal y realiza otro programa. Es como dejar de realizar el trabajo habitual, para realizar otro en forma momentnea y luego volver a la tarea normal. En realidad, existen otras 4 pa-

118

Todo sobre PICs

LOS MICROCONTROLADORES
tas que pueden producir interrupciones (15, 16, 17 y 18). Estas patas pueden usarse como entrada IRQ, o como entrada o salida de datos. La eleccin se realiza por el programa junto con la grabacin del dispositivo. A este tipo de seleccin, se la conoce como MASKABLE (enmascarable) y se refiere a la polifuncionalidad del dispositivo, que permite utilizar alguna de sus pata para una u otra funcin (cambio de mscara, careta o disfraz). Tambin es ENMASCARABLE el funcionamiento de las patas de IRQ, ya que pueden responder al cambio de estado positivo a negativo, o a ambos cambios de estado, o simplemente al estado bajo de las patas. La pata 19 requiere un resistor externo a VDD, si se desea que el dispositivo opere como una compuerta OR, entre las informaciones de las patas 15, 16, 17 y 18 (cualquiera a masa produce una IRQ) aunque tiene prioridad la interrupcin por la pata 19 a masa, que produce un IRQ de diferente tipo. Similarmente a la pata del reset, la pata 19 IRQ opera sobre el micro a travs de un disparador de Schmitt, para reducir la respuesta al ruido. Debe prevenirse toda tensin sobre esta pata con un valor superior al de VDD.

DE

NATIONAL, PHILIPS

MOTOROLA

moria para que una pata sea una entrada, o se transforme en una salida. Por supuesto el programa dirigir informacin hacia las salidas, o la tomar de las entradas. Los ports se nombran como PA y PB por comodidad. El port B tiene 6 patas, que cumplen slo las funciones normales de entradas y salidas. El port A tiene 8 patas, que adems de su funcin especfica de I/O, cumplen con otra funcin extra. Desde la PA0 hasta la PA3, cumplen funciones de ingreso de seales de interrupcin IRQ (como se mencion en el punto 7) y la PA4 a la PA7, cumplen funciones de salida reforzada, ya que admiten una carga de 10mA, capaz de excitar un LED en forma directa. Cada port tiene su propia direccin de memoria, en donde se pueden leer o almacenar datos.

Sistema Temporizador Multifuncin Este micro tiene un temporizador programable de 16 etapas. Su utilidad es obvia; permite demorar las acciones del micro (por ejemplo, cerrar un rel un tiempo despus de ingresar un pulso de entrada) y todo de manera sencilla y con una precisin dada por el cristal. La demora puede ser fijada en el momento de grabar la memoria, o introducirse desde un teclado, etc. Las funciones del temporizador y del sistema de WATCHDOG, estn relacionadas forzosamente entre s, dada la funcin de ste con respecto al tiempo que tarda el sistema, en recorrer todos los pasos del programa. Por ejemplo, el simple programa para cerrar un rel por un tiempo determinado a travs de un teclado; requiere que el sistema de WATCHDOG tenga una demora variable. Recin cuando pase un tiempo igual a la duracin del pro-

Patas de Entrada y Salida (PORTS) Este dispositivo tiene dos ports paralelos de entrada salida (I/O = INPUTS/OUTPUTS). Estas patas interconectan el micro con el mundo exterior. Por ellas se pueden introducir datos, para operar luego sobre ellos y entregar los resultados como leds que se encienden, o rels que operan. Cualquiera de las patas de ambos ports, pueden ser una entrada o una salida; basta con grabar los datos adecuados en determinadas direcciones de me-

Todo sobre PICs

119

LOS MICROCONTROLADORES

DE

NATIONAL, PHILIPS

MOTOROLA

grama, ms la demora introducida por el teclado, ms un tiempo de tolerancia fijo; opera el WATCHDOG reseteando el sistema.

Un registro es una pequea unidad de memoria de lectura y escritura, del tipo voltil, que en general tiene un tamao que no supera los dos octetos. La CPU necesita utilizar 3 registros de 8 bits y 2 de 16 bits, para poder operar adecuadamente. En Unidad Central de Proceso CPU este artculo, slo daremos una mnima descripcin de los mismos, que se irn Es la parte del micro que realiza el pro- completando en sucesivas publicaciones. cesamiento de los datos de entrada y A = ACUMULADOR: Acumula uno de los sumandos o el resultado de una suma emite los datos de salida, en funcin de durante las operaciones aritmticas. las rdenes que encuentra en el prograX = REGISTRO INDICE: El CPU utiliza esma. La CPU es, en realidad, un conjunto te registro para determinar la direccin de etapas, cada una de las cuales cumple una funcin clara y precisa, que vere- condicional del operando; tambin se lo utiliza como registro transitorio similar al mos a continuacin: A. SP: PUNTERO DE PILA= Es un registro de ALU: unidad aritmtica y lgica. La ALU realiza las operaciones aritmti- 16 bits que contienen la direccin siguiencas y lgicas entre dos variables de prote de la pila de instrucciones. PC: CONTADOR DE PROGRAMA= Es un gramas (datos captados y acumulados registro de 16 bits que contiene la direcen registros o memorias transitorias). cin de la siguiente instruccin. Los circuitos aritmticos binarios, decoCCR: REGISTRO DEL CODIGO DE CONDIdifican las instrucciones y predisponen a la ALU para realizar la operacin selecciona- CION= Es un registro de 8 bits en donde los 3 dgitos ms significativos no se utilizan y da. La aritmtica binaria est basada en el algoritmo de la adicin; la substraccin estn fijos en 111. El resto de los bits contiene un indicase realiza como la adicin de un nmero dor de la mscara de interrupciones y 4 innegativo. dicadores del resultado de la operacin La multiplicacin no se realiza como que est siendo efectuada. una operacin discreta (en un solo paso) Ver figura 24. pero puede realizarse como una operacin de adiciones sucesivas y desplazamiento de dgitos binarios. Memoria Voltil La instruccin para realizar una multiplicacin se llama MUL y requiere 11 ciclos La EPROM analizada anteriormente, es del reloj interno, para completar una opeuna memoria no voltil, ya que mantiene racin. su informacin luego de cortar la fuente. Si Las operaciones lgicas son las que bien permite la escritura, esta debe realicomparan dos nmeros binarios, emitiendo un 1 o un 0, en funcin de que se cum- zarse utilizando la placa de desarrollo, es decir que el micro no puede cargar inforpla o no la operacin lgica solicitada (< macin en la EPROM. menor que; > mayor que; = igual a). Por este motivo el micro cuenta con CPU REGISTER: REGISTROS DE LA UNIDAD una pequea memoria RAM para guardar CENTRAL DE PROCESO

120

Todo sobre PICs

LOS MICROCONTROLADORES

DE

NATIONAL, PHILIPS

MOTOROLA

zar un diagrama en bloques del micro, ya que se mencionaron todas las etapas que forman parte del mismo. Este diagrama se diferencia de un diagrama del tipo analgico, por la existencia de un bus bidireccional que interconecta todas las etapas del micro. Esto informacin mientras la fuente permanece simplemente significa que estas etapas conectada (es del tipo voltil) pero que es pueden intercambiar informacin, porque fcil de grabar y leer y sobre todo con ac- todas tienen un port paralelo de I/O. Ver ficeso rpido a cada posicin de memoria gura 25. solicitada. La capacidad de esta memoria, es de slo 64 octetos, pero es ms que suficiente para este micro de bajo costo. Descripcin Funcional de las Las posiciones de memoria no se repiten Patas (PINOUT) en ambos tipos de memoria. En la figura 26, se muestra el PINOUT del dispositivo en las versiones del montaje Registro de Mscara de Opciones convencional 20 PDIP y de montaje superficial 20 SOIC. Ya sabemos que ste es un integrado MASKABLE, las caractersticas de la mscara le indicarn al micro como debe predisCerradura Elctrica poner sus patas, para realizar la funcin solicitada y si debe o no conectar los En esta nota de aplicacin, se ejemplificomponentes MASKABLES que contienen ca el uso del micro con ingreso de datos, en su interior. por intermedio de un teclado matricial de La mscara de opciones se guarda en 4X4. El funcionamiento del dispositivo pueun registro determinado, que si bien forma de resumirse del siguiente modo: el dato parte de la EPROM (o de la memoria OTP) numrico que se ingresa por el teclado, se se lo considera especial dada su importan- compara con el nmero clave grabado cia. De cualquier modo estas posiciones en una posicin de memoria. Si el resultade memoria no forman parte de lo que se do de la comparacin, indica que los nllama la USER EPROM (parte de la EPROM meros son iguales, se emite una salida que a la cual se puede acceder libremente opera un rel. El rel es capaz de excitar a mediante el programa). una bobina tragante, interna a la cerradura de la puerta, para permitir su apertura. Si los nmeros no coinciden, el rel no Estructura del Micro opera y se levanta otra salida, que se utiliza como alarma por intento de violacin Con lo visto hasta aqu, se puede realide la cerradura.
Figura 24

Todo sobre PICs

121

LOS MICROCONTROLADORES

DE

NATIONAL, PHILIPS

MOTOROLA

Figura 25

seal IRQ de interrupcin. En este estado el microprocesador se encuentra detenido Existen dos maneras de resolver el sofen un paso de programa determinado. ware (programa). Si el sistema va a operar Como no existen cambios de estado, el con energa de emergencia es convenien- consumo del micro es mnimo, ya que la te que el sistema quede en STOP hasta potencia se desarrolla slo cuando los que se introduce algn dato. La rutina transistores conmutan. En efecto, si un principal en este caso lleva al micro a tra- transistor est saturado, tiene corriente de bajar en el modo STOP, a la espera de una colector, pero su tensin CE es de unos po-

EL ESTADO DE STOP

122

Todo sobre PICs

LOS MICROCONTROLADORES

DE

NATIONAL, PHILIPS

MOTOROLA

cos mV y la potencia disipada es mnima. Si un transistor est cortado, su corriente de colector es mnima y aunque su tensin CE es la de fuente, tampoco se desarrolla una potencia importante (P = E.I). El nico modo de modificar este estado de STOP es por intermedio de una seal de interrupcin. Esta se genera automticamente cuando se introduce el primer dgito del cdigo. En efecto, las conexiones de las filas del teclado, se envan a las patas PA0 a PA3, que operan como entrada de datos o de interrupciones indistintamente. Por lo tanto, cuando se pulsa cualquier nmero, una de las filas queda conectada a una de las salidas del micro PB0 a PB3, que en ese momento se encuenFigura 26 tran en el estado alto. Ver figura 27. Las patas PA0 a PA3 estn conectadas internamente a una compuerta OR, por lo tanto cualquiera de ellas que tenga un estado alto, genera una seal IRQ. Ver figura 28. La entrada de habilitacin de la AND, se encuentra alta en el funcionamiento en STOP, por lo tanto cualquier interrupcin por PA0 a PA3, genera una seal IRQ que enva a sistema a la sub-rutina de interrupcin. En el otro modo de funcionamiento, que es el que explicaremos en este artculo, el programa se encuentra explorando constantemente la matriz de teclado. tecla presionada no corresponde a la primera columna. Por lo tanto, bajando la salida PB0 y levantando la PB1, se vuelven a La Exploracin del Teclado verificar todas las entradas. De este modo se contina hasta llegar La funcin del sofware es averiguar con a la salida PB3. La subrutina se interrumpe exactitud cul de las teclas fue pulsada. slo cuando detecta la columna y la fila Para esto es necesario mantener baja la correspondiente a la tecla presionada. pata de habilitacin de la AND, para que Debemos aclarar que el proceso antelas entradas PA0 a PA3 se comporten corior dura muy poco tiempo y por lo tanto, mo entradas de datos. se completa antes de que el usuario leLuego, la rutina baja todas las salidas vante el dedo de la tecla. Inclusive, apemenos la PB0 y verifica el estado de las en- nas se determina el nmero pulsado, el tradas PA0 a PA3. Si ninguna de las entraprograma llama a una sub-rutina de dedas tiene un estado alto, significa que la mora, por la cual no se acepta ninguna

Todo sobre PICs

123

LOS MICROCONTROLADORES

DE

NATIONAL, PHILIPS

MOTOROLA

Figura 27

(DEBOUNCE = REBOTE).Ver figura 29. El sistema es tan rpido, que podra detectar tres veces el mismo nmero, produciendo un error en el ingreso del nmero que ya no coincidira con la clave. La manera de evitar esta falla, es utilizando una rutina de demora una vez detectada la entrada del teclado, de modo que se evite la captacin de las siguientes que se presenten en un lapso de algunos mS. Adems, cada vez que se pulsa una tecla se enciende el led verde, para confirmar la accin. Luego de captar el primer dgito y almacenarlo como dgito menos significativo en la RAM, el sistema vuelve a la rutina principal y queda en el modo STOP, hasta que el usuario marca el siguiente dgito y as sucesivamente hasta cargar los 4 dgitos que forman el cdigo (la cantidad de nmeros del cdigo puede llevarse a 8 sin inconvenientes). Al cargar el cuarto dgito, el sistema va a la subrutina de comparacin.

Figura 28

Subrutina de Comparacin

El sistema compara el nmero acumulado en la RAM, con el nmero clave existente en el programa. Si ambos son iguales, se produce una salida alta por el port A6, que provoca el cierre del rel por un intervalo de unos 5 Seg. Durante este intervalo, el usuario puede operar manualmente la puerta, ya que el rel opera un tragante, ubicado en el marco de la misma. Si el nmero ingresado difiere del nmeentrada por algunos milisegundos. Esto evi- ro clave, se levanta la salida A5. ta el llamado error por rebote de la tecla Esta salida, est implementada simple(DEBOUNCE) que se produce si el contac- mente con un conector. Dejamos librado to no es franco, lo cual produce una ensu uso a la imaginacin del lector, ya que trada con varios mximos sucesivos, por dicha salida puede utilizarse para acciovariacin de la resistencia de contacto nar un led remoto, o un BUZZER local, o utiFigura 29

124

Todo sobre PICs

LOS MICROCONTROLADORES
lizar una sirena de dos tonos, tal como sugerimos en la figura 30. Si el nmero no corresponde, PA5 se levanta, Q1 y Q2 conducen y la tensin sobre C1 llega al valor de fuente. En este momento, quedan alimentados los dos osciladores unijuntura Q4 y Q5. Q5 genera el tono principal alto, en tanto que Q4 genera el tono bajo de modulacin. Los preset P1 y P2 permite realizar una variedad de tonos de alarma, a eleccin del lector. Cuando desaparece la alarma, C1 se descarga lentamente y produce el apagado gradual de la sirena. El amplificador Darlington, puede excitar un parlante de 4 Ohms con una potencia de 6W (o 3W con 8 Ohms) y en este momento el consumo sobre la fuente es de 1,2 A. El transistor Q8 debe montarse sobre un disipador adecuado. Para desconectar la alarma, se debe digitar el nmero correcto o desconectar el amplificador desde el interior de la vivienda.

DE

NATIONAL, PHILIPS

MOTOROLA

tico. Se trata de un circuito RC, que produce el reset automtico cuando se da alimentacin al sistema. Su funcin es retardar la alimentacin de la pata 20 (RESET) por unos instantes, de manera que se produzca el reseteo del sistema y luego llevar la pata a la tensin de fuente. El resonador cermico integrado MURATA, puede reemplazarse con un cristal de 4MHz y dos capacitores, tal como se observa en la figura 32.

CONCLUSION El autor sabe que lo dicho de este proyecto es algo ms que una simple informacin. Es una clara explicacin sobre un nuevo modo de proyectar y de utilizar una PC y un KIT de desarrollo de bajo costo. Por supuesto no pretendemos que cada lector compre un kit de desarrollo, pero tal vez, puedan juntarse los alumnos de las escuelas de electrnica y comprar un kit por cada divisin y realizar las prcticas en la escuela. Es cierto que se puede trabajar sin el kit, Circuito Completo pero el trabajo de depuracin del prograEn la figura 31 se puede observar el cir- ma, lleva su tiempo y siempre es mejor realizarlo simulando y emulando el micro cuito completo que no requiere mayores explicaciones, ya que cada etapa se trat con la PC, para no tener que grabar la adecuadamente. Slo falta explicar el fun- EPROM varias veces. Slo la parte final del cionamiento del circuito de reset autom- desarrollo, debera realizarse grabando la

Figura 30

Todo sobre PICs

125

LOS MICROCONTROLADORES

DE

NATIONAL, PHILIPS

MOTOROLA

Figura 31

EPROM del micro. Con referencia a la nota de aplicacin de la cerradura electrnica, el micro puede ser adquirido ya grabado en Electrocomponentes, o hacerlo grabar en Figura 33 otras firmas que se dedican a grabar EPROMs. Con lo dado en esta par-

te del texto, solamente se pretendi dar los principios bsicos de los microprocesadores y se brind todos los medios para poder armar una aplicacin, de modo que el lector se familiarice con esta moderna tcnica de desarrollo y con el micro J1 de MOTOROLA. Si el lector es fabricante de algn producto que utiliza compuertas o temporizadores y est pensando en modernizar su producto, le voy a dar un ltimo dato, que lo va a ayudar a decidirse. Este micro puede programarse para que sea imposible acceder al programa interno y de este modo evitar copias del producto. Ya no va a ser necesario que borre los cdigos de sus compuertas, use un micro y active el llamado bit de proteccin, para que nadie pueda copiar su programa. Es como si alguien fabricara un circuito integrado exclusivamente para usted, o mejor aun, es como si lo fabricara usted mismo. En futuros textos, se continuar con los temas que no pudieron tratarse aqu por problemas de espacio. Ya no nos conformaremos simplemente Figura 32 con utilizar un micro ya gra-

126

Todo sobre PICs

LOS MICROCONTROLADORES
bado. Explicaremos las tcnicas de programacin, simulacion y emulacin, para que cada lector pueda realizar los proyectos completos. En la figura 33 se da un esquema aconsejable para el circuito impreso. Lista de materiales de la cerradura electrnica CI1 CIRCUITO INTEGRADO MOTOROLA MC68HC705J1AP RC1RESONADOR CERAMICO MURATA CST4.00MGWA TC1 TECLADO MATRICIAL DE 4X4 RL1 RELE SIMPLE INVERSOR CON BOBINA DE 5V Q1 TRANSISTOR BC548 C

DE

NATIONAL, PHILIPS

MOTOROLA

R1 RESISTOR DE 10K 1/8W 5% R2 RESISTOR DE 10K 1/8W 5% R3 RESISTOR DE 39 OHMS 1/8W 5% R4 RESISTOR DE 39 OHMS 1/8W 5% R5 RESISTOR DE 10K 1/8W 5% C1 CAPACITOR DE POLYESTER METALIZADO .1F C2 CAPACITOR ELECTROLITICO 100F C3 CAPACITOR ELECTROLITICO 22F D1 DIODO 1N4004 D2 DIODO LED ROJO D3 DIODO LED VERDE EL RESONADOR CERAMICO SE PUEDE REEMPLAZAR POR: X1 CRISTAL DE 4MHz CORTE AT C3 CAPACITOR CERAMICO NP0 27 pF C4 CAPACITOR CERAMICO NP0 27 pF

Programas de Aplicacin de la Cerradura Electrnica


1) DISPOSITIVO ABREPUERTA CON MICRO J1A
EPROM RESET INT PORTA PORTB DDRA DDRB PDRA PDRB ISCR IRQR IRQE MOR CONT CELDA EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU $0300 $07FE $07FA $00 $01 $04 $05 $10 $11 $0A 1 7 $7F1 $D0 $D1

STA LDA STA ZAR A CONTAR LDX BSET PROGRAMA PRINCIPAL CLI CLR CLC LDA STA PORTB DELAY ASLA CMP BNE BRA

PORTB #$00; CARGO EL CONTADOR DE NUMEROS CONT ;CON CERO PARA EMPE#$00 7, PORTA ; APAGO EL LED VERDE

PDRA #$01 ; barro el port B rotando un "1" ; por las 4 columnas y espero ; se presione una tecla y se: ; genere la interrupcin #$08 LOOP INI_LOOP

INI_LOOP LOOP JSR

RUTINA DE ATENCION DE INTERRUPCION INTERRUP JSR DECOD $E0 GRABA DELAY2 JSR DECOD $E0 AEM COMPARA ; decodifico fila y columna de la tecla ; presionada ; grabo el caracter en ram ; vuelvo a decodificar para impedir que ; el rebote de la tecla genere una ; interrupcin no deseada ; comparo con el cdigo

INICIALIZACION COMIENZO ORG LDA STA LDA STA LDA EPROM #$F0 DDRA ;PA0-PA3=ENTRA DA / PA4-PA7=SALIDA #$FF DDRB; PB=SALIDA #$00 STA JSR JSR AEM CMP BEQ JSR

Todo sobre PICs

127

LOS MICROCONTROLADORES
BSET IRQR,ISCR RTI ; habilitacin

DE

NATIONAL, PHILIPS

MOTOROLA
BNE SAL2 LDX #$00 STX CONT LDA CELDA CMP $700,X BNE SAL2 NOP INCX CPX #$04 BEQ ACT LDA CELDA,X JMP COMP JSR ACTIVAR RTS ; si no se tip. 4 nmeros me voy sin comp. ; como se tipiaron 4 nmeros ; coloco el contador en 0 y ; comienzo A ; comparar contra el cdigo de hbil. ; si cualquier num. carg. no coinc. con el ; cdigo de habilitacin me voy.

RUTINA DE GRABACION DEL CODIGO INGRESADO GRABA LDX CONT STA CELDA,X; CPX #$04 BEQ SAL1 INCX; STX CONT; BCLR 7, PORTA JSR DELAY2 BSET 7, PORTA RTS ; RECUPERO EL CONTADOR DE NUMEROS EN LA POS. CELDA GUARDO EL CAR.DE TECTADO ; ME FIJO SI SE TIPIARON 4 NUMEROS ; SI SE TIPIARON 4 NUMEROS ME VOY COMO NO LLEGUE A TIPIAR 4 NUMEROS GUARDO EL NUEVO VALOR DEL CONT.DE NUM. ; PRENDO EL LED VERDE ; APAGO EL LED VERDE ; VUELVO AL PROGRAMA PRINCIPAL

OMP

ACT SAL2

; como el cod. ingresado es el correcto ; activo el dispositivo a controlar.

RUTINA DE ACTIVACION DEL DISPOSITIVO DE CONTROL ACTIVAR BSET 6,PORTA BSET 5,PORTA JSR DELAY3 BCLR 6,PORTA BCLR 5,PORTA RTS

RUTINA DE DECODIFICACION DE TECLADO DECOD LDA PORTA AND #$0F STA $C1 LDA PORTB STA $C2 LDX #$00 LDA $C1 CMP TABLAPRI,X BEQ WW INCX INCX INCX JMP COMP1 LDA $C2 CMP TABLAPRI+1,X BEQ ZZ INCX INCX INCX JMP COMP2 LDA TABLAPRI+2,X RTS

; GUARDO LA FILA ; GUARDO LA COLUMNA ; RECUPERO LA FILA ; AQUI DETECTO LA FILA DENTRO DE LA TABLA

VECTORES DE RESET E INTERRUPCION ORG RESET FDB COMIENZO ORG MOR DB $24 ORG INT FDB INTERRUP RUTINAS DE RETARDO DELAY RET ORG $400 LDX #$FF DECX NOP BNE RET RTS ORG $420 LDA #$FF LDX #$FF DECX NOP BNE RET2 NOP BRN * BRN * DECA BNE RET1 RTS LDX #$0B JSR DELAY2 DECX BNE RET3 RTS ORG $0700 DB $02,$02,$02,$02 cdigo de habilitacin

COMP1

WW COMP2

; RECUPERO LA COLUMNA ; AQUI DETECTO LA COLUMNA DENTRO DE LA TABLA

ZZ

;DEJO EN EL ACUM.EL CAR. DE TECTADO

TABLA DE COORDENADAS DE CADA TECLA TABLAPRI DB $01,$01,$1 DB $01,$02,$2 DB $01,$04,$3 DB $01,$08,$A DB $02,$01,$4 DB $02,$02,$5 DB $02,$04,$6 DB $02,$08,$B DB $04,$01,$7 DB $04,$02,$8 DB $04,$04,$9 DB $04,$08,$C DB $08,$01,$F DB $08,$02,$0 DB $08,$04,$F TABLAFIN DB $08,$08,$D ; ; | FILA 0 ; | ; ; ; | FILA 1 ; | ; ; ; | FILA 2 ; | ; ; ; | FILA 3 ; | ; -

DELAY2 RET1 RET2

DELAY3 RET3

RUTINA DE COMPARACION DEL CODIGO INGRESADO COMPARA LDX CONT CPX #$04 ; recupero el contador de nmeros ; me fijo si se tipiaron 4 nmeros

128

Todo sobre PICs

Você também pode gostar