You are on page 1of 17

PIC S : D IAGRAMA EN B LOQUES , C ARGA Y P ROGRAMACIN

Introduccin Con este captulo pretendo introducir al lector en el mundo de la programacin de microcontroladores PIC de forma prctica y sencilla. Aclaramos que Editorial Quark ha editado varios textos sobre los microcontroladores de Microchip y que este libro est dedicado a los microcontroladores PICAXE que son PICS que tienen grabados un pequeo programita (firmware) para que sean ms fciles de programar que los PICs y sin necesidad de quitarlos de la placa de circuito impreso donde estn operando. Se dan por sabidos algunos conocimientos muy bsicos sobre electrnica digital. Hablaremos de Instrucciones, registros de memoria RAM, memoria EEPROM (un tipo de ROM), de niveles lgicos "0" "1" y cosas por el estilo. Basamos esta introduccin en el PIC16F84 por ser uno de los componentes ms conocidos y que mayor cantidad de proyectos tiene en la web. Un PIC (Programmable Integrated Circuit = Circuito Integrado Programable) es un microcontrolador, una especie de "computadora en miniatura" que podremos programar a voluntad. En su interior posee un microprocesador, una memoria RAM (voltil) donde guardaremos las variables y manejaremos los datos (de hecho los puertos son direcciones de memoria de este bloque), una memoria EEPROM (no voltil) donde guardaremos nuestro programa, un timer o contador que nos facilitar algunas tareas, y puertos para comunicarse con el exterior y algunas otras cosas Figura 1 Las caractersticas ms representativas del PIC16F84 son: Opera a una frecuencia mxima de 10MHz Posee 1kbyte de memoria EEPROM para nuestro programa Tiene 68 bytes (de 8 bits) de memoria RAM adicionales Tambin tiene 64 bytes de memoria EEPROM para datos (no voltiles) Se puede operar con slo 35 instrucciones Dispone de 13 pines de entrada/salida (un puerto completo de 8 bits + otro de 5 bits) Tiene un timer/contador de 8 bits

Descripcin de sus Pines En la figura 1 podemos apreciar el diagrama de patas o terminales del PIC16F84, la funcin de cada pin es la siguiente: RA0, RA1, RA2, RA3 y RA4: son los pines del puerto A RB0, RB1, RB2, RB3, RB4, RB5, RB6 y RB7: son los pines del puerto B. MCLR: Pin de reseteo del PIC, cuando se pone a "0" el PIC se resetea. Vdd y Vss: pines de alimentacin (Vdd 5V y Vss a masa) OSC1/CLKIN y OSC2/CLKOUT: son para el oscilador. Los tipos de osciladores ms usados son el XT (cristal de cuarzo) y el RC (resistencia y condensador), el modo de conexionado para cada uno de los dos osciladores mencionados se muestra en la figura 2. Para el oscilador a cristal C1 = C2 = 33pF y la frecuencia del cristal debe ser inferior a 4MHz. Para el oscilador RC C1 debe ser superior a 20pF e inferior a 10nF y R1 debe estar comprendida entre 3k3 y 100k Cabe aclarar que el oscilador tambin puede funcionar con un resonador o con un filtro cermi-

CLUB SABER ELECTRNICA

P ROYECTOS C OMPLETOS

CON

M ICROCONTROLADORES PIC

PICAXE

co y hasta se le puede inyectar una seal por la pata 16, quedando libre (en ese caso) el terminal 15.

Figura 2

Organizacin de la Memoria En primer lugar tenemos que distinguir claramente entre tres tipos de memoria, a saber: 1) La memoria EEPROM donde almacenaremos el programa que haremos, esta memoria solo podr ser leida por el PIC (el PIC va leyendo las instrucciones del programa almacenado en esta memoria y las va ejecutando). Al apagar el PIC esta memoria no se borra. 2) La memoria RAM en cuyos registros se irn almacenando los valores de las variables que nosotros carguemos y cuando nosotros deseamos (por programa), al apagar el PIC esta memoria se borra. 3) La memoria EEPROM para datos, es un espacio de memoria EEPROM en la que se pueden guardar variables que queremos conservar aunque se apague el PIC. No se tratar aqu por ser una memoria mas difcil de emplear. La memoria EEPROM o memoria de programa En la figura 3 podemos observar la estructura de esta memoria. El espacio marcado como "User Memory Space" es el espacio de memoria donde ir nuestro programa, comprende las direcciones de memoria desde la 0000h hasta la 3FFh (3FFh en decimal es 1023, ms la direccin 0000h hacen 1024 direcciones, es decir, 1Kbyte) "Reset Vector" es la primera direccin a la que se dirige el PIC al encenderlo o al resetearlo. "PC" y los "Stack Level" son empleados por el PIC y nosotros no tenemos acceso a ellos. La memoria RAM La memoria RAM (figura 4) se usa para almacenar las variables, pero tambin se almacenan una serie de registros que configuran y controlan el PIC. Esta memoria est dividida en dos bancos, el banco 0 y el banco 1, antes de acceder a un registro de esta memoria tenemos que preguntarnos en qu banco estamos, generalmente se trabaja en el banco 0, ya veremos ms adelante como cambiamos de banco de memoria. Fijndonos en el banco 1, las direcciones desde

la 00h (direccin 00 expresada en hexadecimal) hasta la 0Bh estn ocupadas por registros del PIC, por lo que tendremos que empezar a guardar nuestras variables a partir de la direccin 0Ch. Se puede acceder al resto de registros para cambiar la configuracin o el estado del PIC. Debemos agregar a este cuadro el registro ms utilizado de todos, el acumulador (W) o registro de trabajo. No se trata de un registro propiamente dicho ya que no tiene direccin, pero se usa constantemente para mover datos y dar valores a las variables (registros). Por ejemplo, si queremos copiar la informacin del registro 0Ch en el registro 0Dh no Figura 3

CLUB SABER ELECTRNICA

L OS M ICROCONTROLADORES PIC: P EQUEAS C OMPUTADORAS M ULTIPROPSITO


apunta el registro FSR (dir. 04h) que veremos ms adelante. TMR0 (Timer/contador): Direccin 01h, Aqu se puede ver el valor en tiempo real del Timer/contador. Tambin se puede introducir un valor y alterar as el conteo. Este conteo puede ser interno (cuenta ciclos de reloj) o externo (cuenta inpulsos introducidos por RA4). PCL (Parte baja del contador de programa): Direccin 02h, Modificando este registro se modifica el contador de programa, este contador de programa es el que seala al PIC en qu direccin (de EEPROM) tiene que leer la siguiente instruccin. Esto se utiliza mucho para consultar tablas (ya veremos ms adelante). STATUS: Direccin 03h, ste es uno de los registros ms importantes y el que ms va a utilizar. Hay que analizar el funcionamiento de este registro bit a bit: CARRY, Direccin STATUS,0 (bit 0): bit de desbordamiento. Este bit se pone a "1" cuando la operacin anterior ha rebasado la capacidad de un byte. Por ejemplo, si sumo dos nmeros y el resultado no cabe en 8 bits el CARRY se pone a "1", Pasa lo mismo cuando resto dos nmeros y el resultado es un nmero negativo. Se puede usar para saber si un nmero es mayor que otro (restndolos, si hay acarreo es que el segundo era mayor que el primero). Una vez que este bit se pone a "1" no se baja solo (a "0"), hay que hacerlo por programa si queremos volverlo a utilizar. DC (digit carry), Direccin STATUS,1 (bit 1): lo mismo que el anterior, pero esta vez nos avisa si el nmero no cabe en cuatro bits. Z (zero), Direccin STATUS,2 (bit 2): Se pone a "1" si la operacin anterior ha sido cero. Y pasa a "0" si la operacin anterior no ha sido cero. Se usa para comprobar la igualdad entre dos nmeros (restndolos, si el resultado es cero ambos nmeros son iguales). PD (Power - Down bit), Direccin STATUS,3 (bit3) se pone a "0" despus de ejecutar la instruccin SLEEP*, se pone a "1" despus de ejecutar la instruccin CLRWDT* o despus de un power-up*. TO (Timer Up), Direccin STATUS,4 (bit4) se pone a "0" cuando se acaba el tiempo del WATCHDOG*, Se pone a "1" despus de ejecutar las instrucciones,

Figura 4

podremos hacerlo directamente, deberemos usar una instruccin para cargar el valor del registro 0Ch en el acumulador y despus otra instruccin para cargar el valor del acumulador en el registro 0Bh.

Registros Internos A continuacin se explican todos los registros de configuracin y control de la memoria RAM. Estos registros se usan para controlar los pines del PIC, consultar los resultados de las operaciones de la ALU (unidad aritmtica lgica), cambiar de banco de memoria, etc. Los registros ubicados en el BANCO "0" son los siguientes: INDF (direccionamiento indirecto): Direccin 00h, sirve para ver el dato de la direccin a la que

CLUB SABER ELECTRNICA

P ROYECTOS C OMPLETOS

CON

M ICROCONTROLADORES PIC

PICAXE

CLRWDT* o SLEEP* o despus de un power-up*. RP0 y RP1 (seleccin de banco), Direccin STATUS,5 y STATUS,6. Como el PIC16F84 slo tiene dos bancos de memoria, el RP1 no se usa para nada, la seleccin del banco se hace mediante RP0 (STATUS,5), si est a "0" nos encontramos en el banco 0, y si est a "1" nos encontramos en el banco 1. IRP, Direccin STATUS,7, En este PIC no se usa para nada. FSR (Puntero), Direccin 04h, se usa para direccionamiento indirecto en combinacin con el registro INDF (dir. 00h): se carga la direccin del registro que queremos leer indirectamente en FSR y se lee el contenido de dicho registro en INDF. PORTA (Puerto A), Direccin 05h. Con este registro se puede ver o modificar el estado de los pines del puerto A (RA0 - RA4). Si un bit de este registro est a "1" tambin lo estar el pin correspondiente a ese bit. El que un pin est a "1" quiere decir que su tensin es de 5V, si est a "0" su tensin es 0V. Correspondencia: RA0 ==> PORTA,0 RA1 ==> PORTA,1 RA2 ==> PORTA,2 RA3 ==> PORTA,3 RA4 ==> PORTA,4 PORTB (Puerto B), Direccin 06h igual que PORTA pero con el puerto B Correspondencia: RB0 ==> PORTB,0 RB1 ==> PORTB,1 RB2 ==> PORTB,2 RB3 ==> PORTB,3 RB4 ==> PORTB,4 RB5 ==> PORTB,5 RB6 ==> PORTB,6 RB7 ==> PORTB,7 Direccin 07h, No utilizada por este PIC. EEDATA, Direccin 08h. En este registro se pone el dato que se quiere grabar en la EEPROM de datos. EEADR, Direccin 09h. En este registro se pone la direccin de la EEPROM de datos donde queremos almacenar el contenido de EEDATA. PCLATH, Direccin 0Ah. Modifica la parte alta del contador de programa (PC), el contador de

programa se compone de 13 bits, los 8 bits de menor peso se pueden modificar con PCL (dir. 02h) y los 5 bits de mayor peso se pueden modificar con PCLATH. INTCON (controla las interrupciones), Direccin 0Bh. Se estudia bit a bit: RBIF (Flag de interrupcin por cambio de PORTB) Direccin INTCON,0 (bit 0) se pone a "1" cuando alguno de los pines RB4, RB5, RB6, o RB7 cambia su estado. Una vez que est a "1" no pasa a "0" por s mismo: hay que ponerlo a cero por programa. INTF (Flag de interrupcin de RB0) Direccin INTCON,1. Si est a "1" es que ha ocurrido una interrupcin por RB0, si est a "0" es que dicha interrupcin no ha ocurrido. Este bit es una copia de RB0. TOIF (Flag de interrupcin por desbordamiento de TMR0) Direccin INTCON,2. Cuando TMR0 se desborda este Flag avisa ponindose a "1". Poner a "0" por programa. RBIE (Habilita la interrupcin por cambio de PORTB) Direccin INTCON,3. Si est a "1" las interrupciones por cambio de PORTB son posibles. INTE (Habilita la interrupcin por RB0) Direccin INTCON,4. Si lo ponemos a "1" la interrupcin por RB0 es posible TOIE (Habilita la interrupcin por desbordamiento de TMR0) Direccin INTCON,5. Si este bit est a "1" la interrupcin por desbordamiento de TMR0 es posible. EEIE (Habilita la interrupcin por fin de escritura en la EEPROM de datos) Direccin INTCON,6. Cuando este bit est a "1" la interrupcin, cuando acaba la escritura en la EEPROM de datos, es posible. GIE (Habilita las interrupciones globalmente) Direccin INTCON,7. Este bit permite que cualquier interrupcin de las anteriores sea posible. Para usar alguna de las interrupciones anteriores hay que habilitarlas globalmente e individualmente. Veamos ahora qu sucede con el banco 1. Vea en la figura 4 que los registros del banco 0 y los del banco 1 tienen direcciones distintas, en realidad podemos utilizar las mismas direcciones para referirnos a registros que estn en uno u otro banco, el PIC las diferenciar sin problemas gracias al bit de seleccin de banco (RP0). Por ejemplo, la direccin 05h se refiere a PORTA si estamos en el ban-

CLUB SABER ELECTRNICA

L OS M ICROCONTROLADORES PIC: P EQUEAS C OMPUTADORAS M ULTIPROPSITO


PCL, Direccin 02h, igual que en el banco 0 STATUS, Direccin 03h, Igual que en el banco 0 FSR, Direccin 04h, Igual que en el banco 0 TRISA, Direccin 05h, Configura el puerto A como entrada o salida. Si un bit de este registro se pone a "0" el pin correspondiente en el puerto A ser una salida, por el contrario, si se pone a "1" el pin correspondiente en el puerto A ser una entrada. TRISB, Direccin 06h, Igual que el anterior pero con el puerto B Direccin 07h, No usada en este PIC EECON1, Direccin 08h, Controla la lectura y escritura en la EEPROM de datos. Se estudia bit a bit: RD, Direccin EECON1,0 (bit 0) A "1" iniciamos el ciclo de lectura, cuando acaba el ciclo se pone a "0". WR, Direccin EECON1,1 (bit 1) A "1" indicamos que comienza el ciclo de escritura, cuando acaba el ciclo se pone a "0". WREN, Direccin EECON1,2 (bit 2) si lo ponemos a "1" se permite la escritura, a "0" no se permite. WRERR, Direccin EECON1,3 (bit 3) error de escritura, si est a "1" indica que no se ha terminado el ciclo de escritura. EEIF, Direccin EECON1,4 (bit 4) interrupcin de ciclo de escritura de la EEPROM, si est a "1" indica que el ciclo de escritura ha terminado, hay que ponerlo a "0" por programa. Bits del 5 al 7 no se utilizan. EECON2, Direccin 09h, se utiliza para la escritura en la EEPROM de datos como medida de seguridad: para poder guardar algo en la EEPROM hay que cargar el valor 55h en este registro. PCLATH, Direccin 0Ah, igual que en el banco 0. INTCON, Direccin 0Bh, igual que en el banco 1.

Fig. 5 co 0 y a TRISA si estamos en el banco 1. Sabiendo esto, damos a continuacin la descripcin de los registros del BANCO 1: INDF, Direccin 00h, Igual que en el Banco 0 OPTION, Direccin 01h, (configuracin del prescaler, Timer, y alguna cosa ms) Se estudia bit a bit: PS0, PS1 y PS2 (Bits del 0 al 2) Configuracin del preescaler: El preescaler es un divisor de pulsos que est a la entrada del Timer-contador. El prescaler divide el nmero de pulsos que le entran al timercontador o al Wachtdog. El factor de divisin es el que se muestra en la tabla de la figura 5 (segn los valores de PS2, PS1 y PS0 respectivamente) PSA, Direccin OPTION,3. Bit de asignacin de prescaler: si est a "1" el prescaler se asigna a WDT (Wachtdog), si est a "0" se asigna al TMR0 TOSE, Direccin OPTION,4. Bit de seleccin del tipo de flanco para TMR0. A "1" se incrementa TMR0 por flanco descendente de RA4, a "0" se incrementa TMR0 por flanco ascendente de RA4. TOCS, Direccin OPTION,5. Selecciona la entrada de reloj de TMR0. A "1" la entrada de reloj de TMR0 es por flanco de la patilla RA4, a "0" la entrada de reloj de TMR0 es por ciclo de reloj interno. INTEDG, Direccin OPTION,6. Tipo de flanco para la interrupcin por RB0: A "1" la interrupcin ser por flanco ascendente, a "0" la interrupcin ser por flanco decendente. RBPU, direccin OPTION,7. Carga PullUp en puerto B. A "0" todas las salidas del puerto B tendrn una carga de pull-Up interna.

PERO... QU ES UN PIC?
Los circuitos integrados programables (Programmable Integrated Circuits = PIC) son componentes sumamente tiles en la Electrnica de Consumo. An cuando son conocidos desde hace ms de veinte aos, existen en la actualidad nuevos tipos que cumplen con una serie de requisitos y caractersticas sumamente tiles. Como una primera aproximacin podemos definir a un PIC como un chip que me permite obtener un circuito integrado a mi medida, es decir puedo hacer que el PIC se comporte como un procesador de luminancia o un temporizador o cual-

CLUB SABER ELECTRNICA

P ROYECTOS C OMPLETOS

CON

M ICROCONTROLADORES PIC

PICAXE

quier otro sistema mediante un programa que le grabo en una memoria ROM interna. 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 realidad, un microprocesador y un microcontrolador no son la misma cosa. Los PICs son microcontroladores, es decir, una unidad que posee en su interior al microprocesador y a los elementos indispensables para que pueda funcionar como una minicomputadora en un solo chip. 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. 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. Los PICs emplean 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 logran 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. A los fines prcticos nos vamos a referir a los microcontroladores como bloques que poseen una memoria de programa, que es el lugar donde deben alojarse los datos que le indiquen al chip qu es lo que debe hacer; una memoria de datos donde ingresen las seales que debe procesar el programa, una unida aritmtica y lgica donde se desarrollen todas las tareas, una unidad de control que se encargue de supervisar todos los procesos y puertos de entrada y salida para que el PIC tenga contacto con el exterior (figura 6). Un microcontrolador, como cualquier circuito in-

Figura 6 tegrado analgico, tiene entradas, salidas y algunos componentes exteriores necesarios para procesar las seales de entrada y convertirlas en las seales de salida. El 16F84 requiere un cristal con dos capacitores y como mnimo un resistor para el reset. Por supuesto necesita una tensin de fuente de 5V (VDD) aplicada con respecto al terminal de masa (VSS). Posee dos puertos de salida, el A y el B, cuyos terminales son marcados RA0 al RA4 y RB0 al RB7. Estos puertos pueden ser programados como de entrada o de salida. El terminal 4 opera como reset, pero tambin cumple funciones de carga de memoria de programa cuando es excitado con pulsos de 15V. El terminal RA4 (pata 3) tambin tiene funciones como entrada de un temporizador y RBO (pata 6) cumple tambin funciones como entrada de interrupcin.

Diagrama en Bloques del PIC16F84 Ahora bien, la mayora de los microcontroladores (sean de Microchip, National, Motorola, Philips, etc.) se comportan de forma similar, por ello nos vamos a referir a los microcontroladores PIC16F84 cuya arquitectura interna puede observarse en la figura 7. Observe primero los bloques externos. Existe un cristal que se conecta en OSC1 y OSC2 para generar el CLOCK del sistema. Luego una seal de entrada llamada MCLR negada, que es un nombre de fantasa para nuestro conocido RESET (debido a que esa pata tiene un doble uso) y, por ltimo, dos puertos paralelos de I/O (entrada o salida) llamados puerto A y puerto B. Una de las patas del puerto A puede ser utilizada como entrada de interrupciones (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).

CLUB SABER ELECTRNICA

L OS M ICROCONTROLADORES PIC: P EQUEAS C OMPUTADORAS M ULTIPROPSITO


Figura 7

CLUB SABER ELECTRNICA

P ROYECTOS C OMPLETOS

CON

M ICROCONTROLADORES PIC

PICAXE

Analicemos el bloque ms grande (temporizadores), 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 de CLOCK, un circuito de reset y un circuito llamado de vigilancia o WATCHDOG. Los dos primeros bloques procuran un arranque ordenado para no producir una carga al mismo tiempo sobre la fuente. Por ltimo, existe un circuito con un nombre curioso: perro guardin. Su funcin es estar vigilante el mximo de tiempo que tarda el microprocesador en completar su programa (o mejor sera decir, la derivacin ms larga de su programa) y en caso de superarse ese tiempo, provocar 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 instrucciones. Analicemos ahora la seccin de arriba a la izquierda en donde observamos la memoria de programa, el contador de programa, el registro de instrucciones y la pila o STACK de 8 niveles. Cuando hablamos de registros nos referimos a pequeas unidades de memoria transitoria, construida por lo general con un registro de desplazamiento como los analizados en el rey micro. Son memorias voltiles que se utilizan para guardar informacin por un tiempo mnimo, con el fin de realizar una operacin compleja de varios pasos. El contador de programa es el responsable de que el microprocesador vaya analizando las instrucciones en orden ascendente. Este guarda el nmero de instruccin en el STACK y la instruccin misma la pasa al registro de instrucciones, desde donde se enva al resto del microprocesador. El STACK es, en realidad, una pila de registros (en nuestro ejemplo hay 8), debido a que el programa puede tener derivaciones (en la jerga LOOPS, rulos o subprogramas). Cuando se termina de ejecutar un loop se debe volver al mismo punto del programa en donde se haba producido la bifurcacin y eso es posible porque ese nmero de instruccin qued guardado en uno de los registros de la pila. Es comn que un loop tenga, a su vez, un loop secundario y cuando se ejecuta ese loop secundario se debe volver al mismo punto del loop primario, eso se consigue con guardar ese nmero

de instruccin del loop secundario en otro registro de la pila. Analicemos ahora la seccin inferior derecha. En ese sector se ubican los bloques responsables de efectuar operaciones matemticas y lgicas binarias; recordemos que el nombre ALU proviene de Aritmetic Logic Unite (unidad arimtica y lgica). En este sector es imprescindible utilizar un registro, ya que una operacin aritmtica o lgica siempre se efecta entre dos nmeros. Los nmeros binarios que deben procesarse se toman de la memoria de datos, el primero se acumula en el registro de trabajo o registro W (de Work = trabajo) el segundo es el presente en el instante en que se invoca la memoria de datos. Como las operaciones pueden ser encadenadas (cuando el resultado sirve como operando de la siguiente operacin, tal como el caso de un producto) el registro W tiene un retorno a la ALU. Vemos adems que 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 slo se utiliza en desarrollos avanzados. Ahora bien, un microcontrolador sin programa no sabe hacer nada, es como un nio recin nacido; tiene algunos reflejos condicionados como el de succin que le permite alimentarse pero no sabe hacer ms que eso. Nosotros deberemos ensearle a realizar acciones y lo vamos a hacer como a un beb, paso a paso. Su capacidad de aprendizaje es enorme y sumamente variada. Le vamos a ensear a llorar a intervalos regulares, a encender luces, a sumar, a restar, etc. Ensearle significa programarlo y eso se realiza con una plaqueta de programacin que depende de cada marca y modelo de microcontrolador. Antigua-

10

CLUB SABER ELECTRNICA

L OS M ICROCONTROLADORES PIC: P EQUEAS C OMPUTADORAS M ULTIPROPSITO


grama y cuando se produce una interrupcin, a la posicin 004. Estos retornos forzados deben ser considerados al disear el programa del microprocesador; es decir que el reset se produce porque la seal externa pone el contador de programa en 000 y todo el programa se reinicia. En cambio, cuando ingresa una seal por la pata de interrupcin el conFigura 8 tador de programa va a 004 y la accin que, en general ocurre, es que se comienza a leer un subprograma particular. Cuando este subprograma termina, el contador de programa recupera el nmente los microprocesadores tenan una ventanita mero que tena en el momento de arribar la interruptransparente y era necesario exponerlos a la luz ultra- cin. violeta para borrar su memoria e introducir un programa nuevo. Actualmente cuentan con memorias 2) La Memoria de Datos (Random Access Meque no tienen este requisito. Basta con cargarlos con mory = memoria de acceso aleatorio) es una memoun programa para que se borre el anterior. Esto sig- ria de lectura y escritura de 128 posiciones pero que nifica que, con el mismo integrado, podremos cons- slo tiene implementados las primeras 48 posiciones truir diferentes dispositivos que realicen funciones (desde 00 a 2F en hexadecimal). De estos 48 registotalmente distintas unas de otras. tros, los primeros 12 son fijos y cumplen un propsiRecuerde que: to determinado, en tanto que desde el 13 hasta el 48 son registros de propsito general, en donde el pro1) La Memoria de Programa es una memoria grama puede indicar que se almacene un dato para EEPROM, es decir, de lectura solamente (ROM = ser tomado ms tarde. Read Only Memory) que se programa por tensin (no necesita luz ultravioleta); es decir que basta con 3) El PIC16C84 tiene dos puertos paralelos de introducir los datos con cierto nivel de tensin para entrada o salida: el puerto A de 8 patas y el B de que stos borren el programa anterior y graben uno 5 patas. Cada pata puede ser predispuesta por el pronuevo. grama para operar como de entrada o de salida. CaPor qu esta memoria se llama ROM, si se pue- da pata tiene un resistor de pull-up (resistor conectaden grabar datos sobre ella? do a fuente) interno que puede ser desconectado meSe llama ROM porque para grabarla se debe co- diante el programa. Estos resistores se desconectan nectar el PIC al programador; luego de que el PIC automticamente si una pata se predispone como pacoloca estos datos en la plaqueta del dispositivo, s- ta de salida debido a que las salidas ya tienen posibilo pueden ser ledos, ya que entonces forman el pro- lidad de entregar corriente desde fuente con un trangrama del PIC. sistor. Todos los resistores de pull-up se conectan o Esta memoria tiene una longitud de 1 Kbyte con desconectan al mismo tiempo (no existe un comanpalabras de 14 bits. Digamos que tiene un ancho de do que los conecte independientemente). 14 bits y una altura de 1.000 Bytes o que es una meComo puerto de salida, una pata puede tomar moria de 1.000 x 14. Observe que los nmeros de 25mA del circuito o entregar 20mA al mismo, sin instruccin en hexadecimal van desde el 000 al 3FF, embargo, en el puerto A slo se pueden consumir lo cual implica que existen 1.040 posiciones de me- 80mA en total o entregar 50mA, esto significa que moria, valor obtenido empleando la frmula: slo algunas patas pueden trabajar al mximo porque si todas lo hicieran (y son 8) el consumo total sera 3 x 162+16 x 161+16 x 160 de 25 x 8 = 200mA. El puerto B tiene otras caractersticas mximas, ya que en total puede tomar Observe que dos de las posiciones de memoria 150mA o entregar 100mA. Como vemos, las salidas tienen las indicaciones vector de reset y vector de admiten suficiente carga como para alimentar direcinterrupcin. tamente a un led (figura 8). Eso significa que, cuando se provoca un reset, el Los puertos no utilizados siempre se deben comicroprocesador vuelve a la posicin 000 del pro- nectar a la fuente de 5V a travs de un resistor de

CLUB SABER ELECTRNICA

11

P ROYECTOS C OMPLETOS

CON

M ICROCONTROLADORES PIC

PICAXE

10k debido a que se trata de un dispositivo CMOS que, de otro modo, podra deteriorarse por captacin electrosttica. La pata 3 perteneciente al puerto A puede ser configurada como de entrada/salida o como de arranque de un temporizador/contador. Cuando se programa como entrada esta pata funciona como un disparador de SCHMITT o Schmitt trigger ideal para reconocer seales distorsionadas o con crecimiento lento. Esta misma pata tambin tiene una caracterstica distinta cuando opera como salida. Ella es la nica que trabaja a colector abierto, es decir, que no puede emplearse como fuente, en este caso siempre se utilizar un resistor externo. 4) Los PICs poseen un oscilador configurable por programa de caractersticas muy amplias. Cuando no se reFigura 9 quiere mucha precisin se puede trabajar con un oscilador a RC conectado segn la figura 9. Para circuitos que requieran una gran precisin se puede trabajar con un cristal de frecuencia baja, media o alta (figura 10). Como mximo el PIC16C84 puede trabajar con un cristal de 10MHz. Internamente la Figura 10 frecuencia del cristal se divi-

Figura 11

de por 4, por lo tanto, es muy comn la utilizacin de un cristal de 4MHz para obtener un CLOCK interno de 1MHz que garantiza que cada instruccin dure exactamente 1mS. Para temporizadores de perodo largo se utilizan cristales de baja frecuencia. 5) El PIC se resetea cuando la pata 4 (MCLR negada) se pone a potencial bajo. Para simplificar el circuito de reset, el PIC posee un temporizador interno que permite realizar un reset automtico cuando se aplica tensin de 5V. En estos casos el circuito externo de reset slo implica el uso de un resistor de 10k entre la pata 4 y fuente tal como se muestra en la figura 11. En muchos circuitos es necesario realizar un reset manual y para ello existen dos posibilidades, una es utilizar slo el temporizador interno (por programa) y la otra es agregar una constante de tiempo exterior como se muestra en la figura 12. En el segundo circuito C1 provee un retardo al encendido o posterior al pulsado de reset porque C1 se cargar lentamente a travs de R1 con una constante de tiempo de 22k x 10F = 220mS. El resistor R3 limita la corriente de descarga de C1 a valores compatibles con sus caractersticas de corriente de pico mxima. D1 descarga a C1 cuando la tensin de fuente decae para permitir un reset inmediato cuando la fuente se apaga y se enciende en rpida sucesin. R2 limita la corriente de reset, tomada desde el miFigura 12 croprocesador. Este segundo sistema se suele utilizar cuando se requiere un reseteado remoto a travs de varios metros de cable que podran captar zumbido (C1 reduce la impedancia del circuito de reset).

12

CLUB SABER ELECTRNICA

L OS M ICROCONTROLADORES PIC: P EQUEAS C OMPUTADORAS M ULTIPROPSITO


Programacin y Carga de PICs Para que un PIC funcione como nosotros queremos es preciso cargarle un programa en la memoria de programa. El programa debe estar en un lenguaje comprensible por el chip o sea un lenguaje de mquina en cdigo binario aunque en realidad al PIC debemos introducirle un programa en cdigo hexadecimal e internamente lo convierte a binario para realizar su interpretacin. El programa que debemos cargarle al PIC en cdigo hexadecimal tiene que tener la terminacin hex. Sin embargo, normalmente se debe escribir editar el programa en un lenguaje entendible por el usuario, normalmente conocido como assembler. Los PICs basan su programacin en un set reducido de instrucciones que permiten editar el programa generando un archivo con extensin asm. Existen programas que se encargan de traducir el programa escrito en lenguaje assembler (asm) a programa escrito en lenguaje de mquina (hex); a estos programas se los denomina traductores o ensambladores. Por lo tanto, para escribir un programa y cargarlo en un PIC precisamos: * Un utilitario o programa que nos permita escribir el juego de sentencias a cargar en la memoria de programa del PIC. Este utilitario es un editor y como ejemplo tenemos el MPLAB. * Un utilitario o programa que nos permita traducir el programa escrito en assembler a lenguaje de mquina para que podamos cargarlo en el PIC. A ese programa se lo denomina ensamblador y como ejemplo tenemos al MPASM. * Un utilitario para cargar el archivo que tiene el programa en lenguaje de mquina (archivo con extensin hex) en la memoria del PIC. A estos programas se los denomina cargadores y como ejemplo tenemos al NOPPP, al Quark Pro 2 y a tantos otros. Insistimos, un cargador de PIC debe poseer por un lado el circuito que permita cargar el programa desde una computadora (hardware) y el programa que permita manejar a dicho circuito para realizar la operacin de carga (software). El circuito debe ser muy simple. Usaremos un software gratuito llamado NOPPP que puede bajarse por Internet. Ud. puede bajar este programa, el MPLAB, el MPASM y otros programas y utilitarios, siguiendo los pasos que daremos y, lo que es ms importante, en forma totalmente GRATUITA. Para ello dirjase a: www.webelectronica.com.ar (si no tiene Internet o no sabe cmo se hace, lleve este escrito a cualquier cybercaf y pdale al encargado que le baje los programas). Haga doble click sobre el cono password y luego digite la clave aiwa15. Recuerde que 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. Para comenzar a practicar con el armado de circuitos con PIC, es preciso contar con algn sistema verificador o entrenador que muestre los efectos del integrado que hayamos cargado. Un circuito con PIC siempre se compone de dos secciones. El circuito del dispositivo deseado y los componentes perifricos imprescindibles para que el PIC funcione: 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 definidas estas cosas se puede dibujar el circuito completo, tal como lo mostramos en la figura 13. Observemos primero la seccin perifrica im-

Figura 13

CLUB SABER ELECTRNICA

13

P ROYECTOS C OMPLETOS

CON

M ICROCONTROLADORES PIC

PICAXE

prescindible. 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 RB0 a RB3 (puerto B tomado parcialmente) y sus correspondientes resistores de pull up (resistores a fuente). Nada ms simple y fcil de armar en un panel protoboard. Qu ocurrira si compro los componentes, los armo y pruebo directamente el circuito? No va a funcionar porque como el PIC no est instruido para realizar ninguna funcin y los LEDs van a permanecer todos encendidos. El PIC tiene una memoria interna que debe cargarse con nmeros binarios de 8 dgitos; exactamente tiene 48 posiciones de memoria (numeradas desde el 0 hasta el 2F en nmeros hexadecimales), en donde se le indicar qu tarea debe realizar o qu datos fijos debe cargar para ejecutar esas tareas. En nuestro caso activar transistores internos en algunas patas del puerto B (predispuestas como salidas), de modo de generar cortocircuitos momentneos a masa en forma secuencial. El dispositivo con un zcalo para conectar el PIC e instruirlo (cargarle los datos en la memoria de programa) se llama genricamente Programador de PICs, pero nosotros convenimos en llamarlo Cargador de PICs y es como un apndice de nuestra PC, conectado con un cable al puerto paralelo de la misma. Si la PC tiene dos puertos paralelos de salida se usar uno para la impresora y el otro para nuestro programador, si slo tiene uno, se desconectar provisoriamente la impresora para conectar el programador, o mejor an, se conectarn ambos dispositivos a travs de una caja selectora que se consigue en los negocios de computadoras y se usa para conectar dos impresoras a la misma PC. 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 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 PIC16C84, PIC16C83 y PIC16F84 que son los ms utilizados. 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. 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 14V, 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 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

14

CLUB SABER ELECTRNICA

L OS M ICROCONTROLADORES PIC: P EQUEAS C OMPUTADORAS M ULTIPROPSITO


Por sobre todas las cosas debe respetarse el criterio de no sacar un PIC de su zcalo con las fuentes conectadas, porque puede desprogramarse o, peor an, daarse definitivamente. Tambin es muy importante respetar las tensiones de fuente y no demorar la llegada de datos, luego conectar VPP (porque podran cargarse datos falsos por interferencias electromagnticas). Como usted puede observar de la descripcin anterior, la entrada RB6 es utilizada como clock y la RB7 como entrada de datos en una clsica operacin de transferencia de datos en serie. Observe que hay un tiempo entre el momento en que MCLR NEGADO sale de la condicin de reset, hasta que aparece el primer dato o el primer pulso de clock. Tambin hay un tiempo mnimo para la permanencia de un dato en la entrada (la representacin usada para un dato significa que el mismo puede ser alto o bajo, depende del bit que se est grabando). Lo que no hay es un tiempo mximo, 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. Un cargador de PIC debe permitir, 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. Habilitacin del 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 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 ca-

Figura 14 produzca un cambio de estado (de alto para bajo) en la pata 12. En cada palabra a programar 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 (cada palabra tiene 8 datos, as, una palabra de programa se compone de 8 bits de datos y 6 bits de direccionamiento). Las conexiones de fuente y las seales deben ser aplicadas segn una secuencia predeterminada que debe respetarse invariablemente. Los nombres de las seales se aclaran en la figura 14. A) El primer paso es colocar el PIC en el zcalo del programador con seales y fuentes a potencial de masa. B) Levantar la tensin de fuente VDD a un potencial de 5V 0,2V por la pata 14 (VDD). C) Levantar la tensin de fuente VPP a un potencial de 13V 0,3V por la pata 4 (MCLR NEGADO). D) Esperar en esas condiciones un tiempo superior a 1mS. E) Posicionar el primer dato en la pata 13 (RB7) con un potencial alto (mayor a 4V) o bajo (menor a 1V). F) Cuando la pata 12 (RB6) pase a un estado bajo, inferior a 1V, el dato se carga en la memoria. G) Continuar cargando los datos con el 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.

CLUB SABER ELECTRNICA

15

P ROYECTOS C OMPLETOS

CON

M ICROCONTROLADORES PIC

PICAXE

da 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). 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 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.

Existen, en Internet, muchos programadores de PICs de uso libre, como el JDM, el TAIT, el PROPIC 2 y el TAFE, entre otros muchos. Sin embargo, ningn quemador (programador) funciona sin un programa que lo opere, para ello existen tambin muchos utilitarios como el IC-PROG, el PIC-ALL, el NOPPP, el PONY-PROG, etc. (muchos de uso libre). Cada programador y cada programa posee sus propias ventajas y desventajas, lo importante es escoger un programa que sea compatible con el programador elegido. Por qu basar el diseo en el programador JDM? En principio, para programar un PIC se requiere de una fuente de 5 volt para alimentarlo (Vdd) y otra fuente de 13 volt para programar o quemar el PIC (Vpp) lo que implica que debemos tener dos fuentes de voltaje para realizar la operacin, lo que de entrada nos elevara el costo. En el JDM (vase www.jdm.homepage.dk) cabe destacar lo ingenioso del diseo ya que emplea los voltajes disponibles del puerto serie de la computadora para que, mediante un arreglo con diodos y capacitores (llmese multiplicador de tensin integrado por D3, D4, D5, D6, C1 Y C2) se puedan obtener los ms de 13V necesarios para programar cualquier PIC. Esto nos ofrece una gran ventaja, ya que no requerimos fuente de alimentacin externa alguna, convirtiendo el programador en un circuito parsito que, en nuestro caso, se alimenta del puerto serie de la computadora, logrando as abatir el costo ms alto que representan las fuentes de alimentacin. Otra ventaja que ofrece este programador es que no requerimos de un limitador de corriente para el caso de insertar un PIC daado, ya que el circuito RS232 del puerto serie de la PC tiene su propio limitador de corriente. Sin embargo, no podemos tener toda la gloria, ya que para los que se dedican a la programacin in situ, es decir, los que programan los PICs en el mismo circuito donde opera y el cual se disea con un conector especialmente destinado para la programacin, este programador o cargador de PICs no funciona ya que la tierra del circuito no es compatible con la tierra flotante de nuestro programador. Para tal caso, se supone que los que realizan este tipo de programacin se dedican profesionalmente a ello, y por ende contarn tambin con un programador profesional que tenga sus propias fuentes de alimentacin. Cabe recordar que el objetivo principal de nuestro prototipo es que sea econmico, fcil de usar y confiable. Por qu utilizar el programa IC-PROG? Con el mismo criterio que seleccionamos el hard-

Quark Pro 2: Circuito Cargador de PICs y mucho ms...


Hemos desarrollado un prototipo econmico, pero de alto desempeo para programar PICs. El circuito est basado en el hardware del programador JDM y en el software de IC-PROG, realizando las modificaciones y adiciones necesarias para hacerlo tan funcional como los programadores profesionales con muy bajo costo. En Saber Electrnica se ha publicado el cargador NOPPP y el QUARK PIC BASIC entre otras, sin embargo, desarrollamos este prototipo para usuarios de PICs ms exigentes. Si bien los cargadores publicados han sido de mucha utilidad, este nuevo prototipo les permitir programar PICs ms poderosos como el PIC16F873 (de 28 pins), el PIC16F874 (de 40 pins) o PICs mejorados como el PIC16F627.

16

CLUB SABER ELECTRNICA

L OS M ICROCONTROLADORES PIC: P EQUEAS C OMPUTADORAS M ULTIPROPSITO


de todo el mundo, est traducido a varios idiomas y tercero es que es compatible con la mayora de los sistemas operativos de la PC, adems que con frecuencia estn disponibles de manera gratuita versiones actualizadas (vase www.ic-prog.com). En la figura 15 se muestra el ambiente de trabajo de este programa. Si usted ha trabajado con ambientes de programas diferentes, podr observar que el ambiente del ICProg dispone de herramientas de trabajo muy completas. Para cargar un programa en un microcontrolador PIC se requiere de una serie de parmetros bsicos a saber: VDD = Voltaje de alimentacin de 5V VSS = Referencia de tierra del circuito VPP = Voltaje de programacin de 14V PGD = Datos de programacin PGC = Pulsos de reloj para la sincronizacin En la figura 16 se muestra el circuito elctrico del programador QUARK-PRO 2. Como puede observar, no existe ninguna fuente de alimentacin exter-

Figura 15

ware (programador JDM), seleccionamos el software (IC-PROG), basados en el que fuera ms compatible. El IC-PROG ofrece varias ventajas: La primera es que dentro de su men ofrece opciones importantes como la posibilidad de seleccionar el puerto a utilizar, as como el prototipo de programador a utilizar; la segunda es que el programa ofrece un ambiente de trabajo muy amigable, ya que este programa y gracias a los aportes de muchos colaboradores

Figura 16

CLUB SABER ELECTRNICA

17

P ROYECTOS C OMPLETOS

CON

M ICROCONTROLADORES PIC

PICAXE

na. El circuito se alimenta del puerto serial de la PC a travs del conector DB9. El voltaje de alimentacin VDD se obtiene de los mismos pulsos de reloj (pin 7 del DB9), los cuales son rectificados por los diodos D3 y D4 y estabilizados a 5 volt mediante el diodo zener D5 (5.1V) y el capacitor C1. De la misma manera, se obtiene el voltaje de programacin VPP, cargando el capacitor C2 Figura 17 y estabilizando con el diodo zener D6 (8.2V) el cual se suma al voltaje del zener D5 (5,1V), obtenindose as 13.3 Volt suficientes para realizar la programacin del PIC. Se han adicionado el LED L1 para visualizar el proceso de grabacin o lectura del PIC, as como el LED L2 para indicar que el circuito se encuentra alimentado, adems, si se colocara un PIC en corto, este LED se apagar o bajar significativamente su intensidad. Ms adelante explicaremos en detalle el proceso completo de trasmisin (grabacin) y recepcin (lectura) de datos, as como la funcin de cada uno de los componentes del programador. En la figura 17 se muestra el circuito impreso sugerido para nuestro prototipo. Una vez que haya armado el programador (quemador) QUARK-PRO 2, ya tiene listo su hardware, ahora le falta el software, que para nuestro caso hemos sugerido el IC-PROG. Vaya a la pgina de Internet www.ic-prog.com e ingrese al rea de descargas (download), ah encontrar varias versiones de este programa tal como se sugiere en la figura 18. Descargue la ltima versin (a la fecha de redactar este artculo era la versin1.05C) y gurdela en

una carpeta de su disco rgido. Tambin descargue el archivo IC-Prog NT/2000 driver y gurdelo en la misma carpeta, porque puede serle til en caso de que est usando un sistema operativo Windows XP y tenga conflictos en la ejecucin del IC-Prog. Abra el archivo con Win-Zip y ejecute el programa icprog.exe (figura 19) para instalarlo. Una vez que haya hecho esto, aparecer un cono de acceso directo a su programa (figura 20) que le permitir abrir directamente el programa cuando desee utilizarlo. Al ejecutar este cono aparecer una ventana del programa (figura 15). Ahora slo queda probar su proyecto. Conecte al puerto serial de su PC el programador y el led rojo (L2) deber encender. Seleccione cualquier dispositivo y elija la opcin programar, ejecute y observe el led verde (L1). Este deber encender conforme se lleve a cabo el proceso. Si

18

CLUB SABER ELECTRNICA

L OS M ICROCONTROLADORES PIC: P EQUEAS C OMPUTADORAS M ULTIPROPSITO


todo va bien: felicidades!, su proyecto funciona. Si tiene algn problema o duda, por favor escriba a ateclien@webelectronica.com.ar y con gusto lo ayudaremos. Si lo prefiere puede solicitar el montaje completo armado o el kit para que Ud. lo arme, los cuales se proveen con el instructivo de trabajo y un CD completsimo, con un Curso de Microcontroladores PIC, varios prototipos completos, un curso de programacin, un montn de programas, un clip completo en VCD, adems incluimos la ltima versin del programa de desarrollo para PICS MPLAB de Microchip, a entornos de Desarrollo (MPLAB, MPASM, etc.) y gran cantidad de aplicaciones. Lista de Materiales U1 - Base (zcalo) para CI de 8 pins U2 - Base para CI de 18 pins U3 - Base para CI de 28 pins (usar 2 bases de 14 pins) U4 - Base para CI de 40 pins DB9 - Conector DB9 hembra DI, D2, D3, D4 - Diodo 1N4148 D5 - Diodo zener de 5.1V 1W D6 - Diodo zener de 8.2V 1W Q1, Q2 - Transistor BC547C Q3 - Transistor BC557C C1, C2 - Electrolticos de 1000F x 25V C3, C4 - Cermicos de 0.001F R1 - Resistencia de 100k R2 - Resistencia de 10k R3 - Resistencia de 1.5k R4 - Resistencia de 1k R5 - Resistencia de 2.7k L1 - Diodo Led verde y L2 - Diodo Led rojo Varios Placas de circuito impreso, gabinete para montaje, estao, *cable de red de computadoras tipo PC para el conector DB9, conector macho y hembra DB9 para conectar a la PC, etc. *El cable est incluido en el kit armado o para armar.

Figura 18

Figura 19

Figura 20

CLUB SABER ELECTRNICA

19

You might also like