TR-Brain - profesaulosuna.com · • CD-ROM con software de programación, ejemplos y manuales. ......

Click here to load reader

Transcript of TR-Brain - profesaulosuna.com · • CD-ROM con software de programación, ejemplos y manuales. ......

  • TR-Brain

    Manual del usuario

    www.todorobot.com.ar

  • TR-Brain - Manual del usuario TodoRobot_______________________________________________________________________________________________________

    ___________________________________________________________________________________www.todorobot.com.ar 1

    INTRODUCCIN

    Ante todo gracias por adquirir nuestra nueva controladora TR-Brain . Estamos seguros que ustedencontrar en ella una herramienta muy til y verstil para encarar todo tipo de diseo basado enmicrocontroladores.

    TR-Brain ha sido diseada pensando en el aficionado a la robtica que desea construir sus propiosproyectos.

    TR-Brain est basada en el famoso y verstil microcontrolador PIC 16F84A de Microchip. Este pequeopero poderoso microcontrolador le permitir hacer uso de toda su imaginacin para crear los mas variadosdiseos.

    TR-Brain incorpora todo el hardware adicional para permitirle controlar motores, sensores, etc. Ustedsimplemente necesitar crear el software para manejar sus propios diseos.

    TR-Brain trae incorporado el hardware necesario que le permitir, mediante el software ProgBrainprovisto, la programacin del PIC sin necesidad de extraer el mismo de la controladora.

    Es importante aclarar que este manual no tiene la intencin de ensear ningn lenguaje de programacin, niprofundizar en la programacin orientada al PIC, pero s se darn los lineamientos bsicos para comprenderel funcionamiento del PIC 16F84A, as como ejemplos y ejercicios que le ayudarn a interpretar y a sacarel mejor provecho de su TR-Brain.

  • TR-Brain - Manual del usuario TodoRobot_______________________________________________________________________________________________________

    ___________________________________________________________________________________www.todorobot.com.ar 2

    INDICE DE CONTENIDO:

    1. Introduccin a la TR-Brain1.1 - Que se incluye con la TR-Brain1.2 - Requerimientos del sistema1.3 - Caractersticas fsicas y elctricas1.4 - Detalle de los conectores1.5 - Diagrama en bloques1.6 - Reconociendo los LED's indicadores1.7 - Esquemas elctricos de las distintas secciones

    2. Alimentacin de la TR-Brain2.1 - Usando fuentes de alimentacin separadas para Lgica y Potencia2.2 - Usando una nica fuente de alimentacin para Lgica y Potencia

    3. Conectando la TR-Brain a la PC3.1 - Detalle de la conexin paso por paso3.2 - Precauciones a ser observadas

    4. Programando la TR-Brain4.1 - Sobre el archivo hexadecimal4.2 - Descripcin del software de programacin ProgBrain4.3 - Programando paso por paso

    5. Proyectos y ejemplos de utilizacin5.1 - Manejando motores DC5.2 - Manejando motores paso a paso unipolares5.3 - Manejando motores paso a paso bipolares5.4 - Manejando sensores pticos5.5 - Regulando la velocidad de MI y MD con PWM

    APENDICE A: Resolviendo problemas

    APENDICE B: Descripcin y gua de programacin del PIC 16F84A

    APENDICE C: Lenguajes de programacin

    APENDICE D: Usando el MPLAB de Microchip

  • TR-Brain - Manual del usuario TodoRobot_______________________________________________________________________________________________________

    ___________________________________________________________________________________www.todorobot.com.ar 3

    1 - INTRODUCCIN A LA TR-BRAIN

    1.1 - Que se incluye con la TR-Brain:

    Controladora TR-Brain

    Sensor ptico reflectivo doble

    CD-ROM con software de programacin, ejemplos y manuales.

    Cable para conexin al puerto paralelo de su PC

  • TR-Brain - Manual del usuario TodoRobot_______________________________________________________________________________________________________

    ___________________________________________________________________________________www.todorobot.com.ar 4

    1.2 - Requerimientos del sistemaPara operar con la TR-Brain, es imprescindible hacer uso del software de programacin ProgBrain incluido en el CD.Para poder correr este software, necesitar como mnimo poseer una PC compatible IBM con sistema operativo Windows 9x /ME / NT / 2000 / XP. Memoria RAM de al menos 16MB y como mnimo 10MB de espacio disponible en disco rgido.Esta PC deber contar con un puerto paralelo (LPT1 , LPT2 LPT3) disponible para su uso. Este puerto puede ser el mismousado para la impresora, pero para evitar desconectar y conectar la misma, es recomendable agregar un segundo puerto paraleloa su PC. Esto puede realizarse mediante el agregado de una placa adicional que puede adquirirse en cualquier casa decomputacin.

    Para ms detalles sobre el software de programacin ProgBrain dirigirse al captulo 4 de este manual.

    1.3 - Caractersticas fsicas y elctricas

    CARACTERISTICAS FISICAS Y ELECTRICAS

    Tensin de alimentacin lgica VDD (CN1) 9 a 15 volts D.C.

    Consumo medio en reposo 35 mA

    Consumo medio en funcionamiento normal (motores enmarcha) 90 mA

    Consumo mximo (motores frenados y pticos activos) 140 mA

    Tensin de alimentacin de potencia VHH (CN2) 6 a 15 volts

    Tensin de salida de potencia VHH (CN4) Igual a entrada VHH

    Capacidad de carga en la salida VHH (CN4) 1 A

    Tensin de Salida VCC (CN4) 5 Vcc regulados

    Capacidad de carga de la salida VCC (CN4) 800 mA

    Cantidad de entradas/salidas TTL Rxx (CN5) 7

    Niveles aceptables para entradas TTL Rxx 0v a 5v

    Capacidad de carga en salidas TTL Rxx 10 mA

    Cantidad de salidas de alta potencia HRxx (CN6) 7

    Capacidad de carga en salidas de alta potencia HRxx 500 mA

    Catidad de salidas para motores DC (MI/CN7 y MD/CN8) 2

    Carga mxima en salida de motores DC 1 A

    Cantidad de entradas para sensores pticos (CN9) 1 entrada doble

    Dimensiones fsicas 80mm x 100mm

  • TR-Brain - Manual del usuario TodoRobot_______________________________________________________________________________________________________

    ___________________________________________________________________________________www.todorobot.com.ar 5

    1.4 - Detalle de los conectores:

    En la siguiente figura podemos apreciar el detalle de todos los conectores de la TR-Brain:

    CN1 - Entrada de alimentacin lgica (VDD)En este conector debe aplicarse una tensin continua de entre 9 y 15v. La controlador consume como mximo 140mA,pero debe tenerse en cuenta que toda carga que sea alimentada desde la salida VCC de CN4, estar agregando carga a lafuente de alimentacin VDD, por lo que deber tenerse en cuenta a la hora de seleccionar la fuente de alimentacinadecuada. En cualquier caso, esta no debera superar 1A, ya que es la corriente mxima tolerada por el regulador devoltaje VR1.

    CN2 - Entrada de alimentacin de potencia (VHH)En este conector debe aplicarse una tensin continua de entre 6 y 15v. Esta tensin es quien alimentar los motores quese conecten a las salidas MI (CN7) y MD (CN8) y a los dispositivos (motores, rels, etc.) conectados a las salidas HRxx(CN6). Tambin se dispone de una salida VHH en el conector CN4, esta salida se puede usar en conjunto con las salidasHRxx o bien para alimentar un circuito externo. La carga total que deber soportar la fuente de alimentacin VHH estdada por la suma de los dispositivos conectados a MI , MD , HRxx y a VHH de CN4.

  • TR-Brain - Manual del usuario TodoRobot_______________________________________________________________________________________________________

    ___________________________________________________________________________________www.todorobot.com.ar 6

    CN3 - Puerto de comunicacin a PCEste puerto permite conectarse a la PC mediante el cable de comunicacin provisto. Una vez conectado permitedescargar los programas a la TR-Brain mediante el software de programacin ProgBrain incluido en el CD.

    CN4 - Salida alimentacin perifricos En este conector se encuentran disponible salidas para poder alimentar circuitos y dispositivos externos.GND y VHH son salidas directas desde la entrada de CN2, VHH solo estar presente cuando la controladora estencendida (llave ON/OFF en ON).VCC es la salida regulada a 5v de la entrada VDD de CN1. Esta salida se encuentra regulada mediante VR1, el cualsoporta una carga mxima de 1A. Cable aclarar que VR1 tambin provee de alimentacin a la lgica interna de la TR-Brain, por lo que se recomienda no alimentar cargas superiores a 800mA con esta salida.

    CN5 - Puerto de Entrada/Salida TTLEn este puerto se encuentran presentes los pines RB0 a RB5 y RA4 del PIC16F84A que posee incluido en la TR-Brain.La conexin entre el conector CN5 y el PIC es directa, lo que significa que CN5 es una extensin de las salidas RB0,RB1, RB2, RB3, RB4, RB5 y RA4 del PIC 16F84A.Los pines de este puerto sern entradas o salidas de acuerdo a como se programen los mismos en el PIC.RB0 a RB5 son entradas/salidas estndar TTL. Cuando estn configuradas como entradas, estas poseen la facilidad dehabilitar va software una resistencia PullUp interna.RA4 se comporta como un SmithTrigger al funcionar como entrada y como Colector Abierto (open colector) cuando seconfigura como salida. En este caso no existe la posibilidad de habilitar un PullUp interno, por lo cual se deber teneren cuenta al utilizar la misma.Para mas datos sobre las entradas y salidas del PIC consultar el Apndice B y los ejemplos de uso del Captulo 5.

    CN6 - Puerto de Salida de Alta Potencia (500mA)Este puerto permite el uso de los pines RB0, RB1, RB2, RB3, RB4, RB5 y RA4 del PIC 16F84A para el manejo decargas de mayor consumo. Para esto se vale del uso de un conjunto Darlington (ULN2003) para amplificar las mismas.El DipSwitch de 8 llaves ubicado justo arriba del conector CN6 se utiliza para conectar o desconectar las salidas delPIC mencionadas anteriormente al conjunto Darlington.En la siguiente tabla se puede apreciar la funcin de cada llave del DipSwitch:

    Llave en ON Habilita1 HRB02 HRB13 HRB24 HRB35 HRB46 HRB57 HRA48 No ImplementadoDejar en OFF

    De esta forma, si por ejemplo quisiramos utilizar RB0 y RB1 para manejar dos rels, las llaves 1 y 2 del DipSwitchdeberan ponerse en posicin ON, y las restantes en posicin OFF. Cabe aclarar que la llave 8 no tiene funcin alguna ydebe dejarse en OFF.Es IMPORTANTE tener en cuenta que las salidas HRxx del conector CN6 son el reflejo amplificado de las salidas Rxxdel conector CN5 (cuando la llave correspondiente del DipSwitch est en ON). As mismo no sera lgico nirecomendable que en el ejemplo anterior, se intentase usar a RB0 como una entrada si la llave 1 est en ON.

  • TR-Brain - Manual del usuario TodoRobot_______________________________________________________________________________________________________

    ___________________________________________________________________________________www.todorobot.com.ar 7

    En la siguiente figura se puede apreciar un ejemplo de conexin de distintos dispositivos al conector CN6:

    Para ms datos sobre el uso de las salidas HRxx consultar los ejemplos de uso del Captulo 5.

    CN7 y CN8 - Salidas a Motor Izquierdo y Derecho (MI y MD)En CN7 y CN8 se pueden conectar motores de corriente continua (Motor DC). Estos motores son controlados mediantelos H-Bridge BA6286 ( IC4 - IC5 ), los cuales permiten el manejo de motores de 3v a 15v con un consumo mximo de1A.El arranque, parada y direccin de giro de los motores MI y MD son controlados directamente por el PIC 16F84Amediante RA0, RA1, RA2 y RA3.En la siguiente tabla se puede ver el mtodo de control de ambos motores, en la misma se aprecia que RA0 y RA1controlan el motor derecho (MD), mientras que RA2 y RA3 controlan el motor izquierdo (MI):

    Estado SalidaPIC 16F84A

    Estado SalidaPIC 16F84A

    RA0 RA1

    Accin delMotor MD RA2 RA3

    Accin delMotor MI

    0 0 Libre 0 0 Libre1 0 Adelante 1 0 Adelante0 1 Atrs 0 1 Atrs1 1 Frenado* 1 1 Frenado*

    *No es recomendable mantener los motores frenados por un perodo muy extenso, ya que el consumo en VDD y VHH se eleva significativamente.Lo recomendable es frenar, retener como mximo 500 ms y luego liberar los motores.

    La velocidad de giro de los motores puede ser regulada independientemente mediante RV1 y RV2.RV1 regula la velocidad del motor Izquierdo MI, mientras que RV2 regula la velocidad del motor derecho MD.En la siguiente figura podemos ver la forma correcta de conectar un motor DC a los conectores CN7 y CN8:

    Para ms datos sobre el control de los motores MI y MD consultar los ejemplos de uso del Captulo 5.

  • TR-Brain - Manual del usuario TodoRobot_______________________________________________________________________________________________________

    ___________________________________________________________________________________www.todorobot.com.ar 8

    CN9 - Entrada de sensores pticos:En esta entrada se conecta el sensor ptico reflectivo doble provisto con la TR-Brain. Este sensor es especialmente tilpara disear robots para seguimiento de lneas.La siguiente tabla muestra como leer el estado de los sensores:

    Estado deRB6 en

    PIC 16F84A

    EstadoSensor

    Izquierdo

    Estado deRB7 en

    PIC 16F84A

    EstadoSensor

    Derecho0 No Refleja * 0 No Refleja *

    1 Refleja ** 1 Refleja **

    *No Refleja equivale al sensor ubicado sobre una superficie oscura (ej. Negro).** Refleja equivale al sensor ubicado sobre una superficie clara (ej. Blanco).

    La sensibilidad de los sensores pticos puede ser regulada mediante RV3 para adaptar los sensores al ambiente detrabajo.

    Botn de Reset:En la siguiente figura se puede ver la ubicacin correspondiente al botn de reset dentro de la TR-Brain:

    El botn de reset se utiliza para los casos en los que se desea reinicializar la TR-Brain. Esto puede ser debido a un erroren el curso normal del programa o bien simplemente porque el proyecto as lo requiere. Al presionar y liberar el botn de reset, la TR-Brain se comporta como si hubiese sido apagada y vuelta a encender.

  • TR-Brain - Manual del usuario TodoRobot_______________________________________________________________________________________________________

    ___________________________________________________________________________________www.todorobot.com.ar 9

    1.5 - Diagrama en bloques:

    En la siguiente figura se puede apreciar el diagrama en bloques correspondiente a la TR-Brain. Podemos apreciar claramente queel corazn de la controladora es el PIC 16F84A, al cual entran y salen los sensores pticos, los drivers para motores y los puertosTTL y amplificados.

  • TR-Brain - Manual del usuario TodoRobot_______________________________________________________________________________________________________

    ___________________________________________________________________________________www.todorobot.com.ar 10

    1.6 - Reconociendo los LED's indicadores:

    En la siguiente figura se puede apreciar el detalle de los distintos LED's indicadores y su ubicacin.

    LED Descripcin

    RUN

    Este LED indica el encendido normal de la TR-Brain. Cuando este LED seencuentra encendido el programa cargado en el PIC se encuentra ejecutando enforma normal.Cuando la TR-Brain se encuentra conectada a la PC y el software deprogramacin ProgBrain se encuentra activo, este LED permanecer apagadohasta tanto no se coloque la TR-Brain en modo RUN y se seleccione "Pasar amodo RUN" en el ProgBrain.

    Durante la programacin este LED se encender, indicando que VPP est activa.(Un leve parpadeo es normal)

    PROG

    Este LED indica que la TR-Brain se encuentra en modalidadPROGRAMACION.En esta condicin, la TR-Brain est preparada para recibir la descarga de unnuevo programa mediante el software de programacin ProgBrain.

    MIApagado = Motor MI (CN7) frenado o libreVerde = Motor MI avanzandoRojo = Motor MI retrocediendo

    MDApagado = Motor MD (CN8) frenado o libreVerde = Motor MD avanzandoRojo = Motor MD retrocediendo

    OPTICO-I

    Este LED indica el estado del sensor ptico Izquierdo:Encendido = El sensor est sobre una superficie reflectiva (blanco)Apagado = El sensor est sobre una superficie no reflectiva (Negro)

    Durante la programacin este LED se encender, indicando que la sealCLOCK est OK. (Un leve parpadeo es normal)

    OPTICO-D

    Este LED indica el estado del sensor ptico Izquierdo:Encendido = El sensor est sobre una superficie reflectiva (blanco)Apagado = El sensor est sobre una superficie no reflectiva (Negro)

    Durante la programacin este LED se encender, indicando que la seal DATAest OK. (Un leve parpadeo es normal)

  • TR-Brain - Manual del usuario TodoRobot_______________________________________________________________________________________________________

    ___________________________________________________________________________________www.todorobot.com.ar 11

    1.7 - Esquemas elctricos de las distintas seccionesEn esta seccin veremos los diagramas elctricos de los mdulos principales que componen la TR-Brain.

    Modulo CPU con salidas TTL (CN5) y Alta Potencia (CN6)

    En el esquema anterior se aprecia el conexionado entre la CPU (PIC16F84A) y los distintos mdulos y conectores.Como se puede ver, RA0 a RA3 se utilizan para controlar los drivers de motores que se vern ms adelante.RB6 y RB7 reciben la informacin del estado de los sensores pticos.RB0 a RB5 ms RA4 se utilizan como entrada/salida para mdulos y sensores adicionales.Como se aprecia, el DipSwitch conecta o desconecta las salidas del PIC al array Darlington ULN2003 (IC3). La resistenciaPullUp de 1K conectada sobre RA4 se necesita debido a que como se dijo anteriormente RA4 es una salida del tipo colectorabierto. Esta resistencia PullUp solo se conecta cuando la llave 7 est en ON, es decir que se ha habilitado la salida HRA4.Debido a esto, si se desea hacer uso de la salida RA4 del conector CN5 estando la llave 7 en OFF, se deber adicionar unaresistencia de PullUp externa (cuando as lo requiera el circuito a manejar) de al menos 10K.

  • TR-Brain - Manual del usuario TodoRobot_______________________________________________________________________________________________________

    ___________________________________________________________________________________www.todorobot.com.ar 12

    Driver para motores MI (CN7) y MD (CN8)

    El diagrama anterior ilustra el mdulo correspondiente al control de motores MI y MD. Existen en total dos mdulos iguales,uno para MI (CN7) y otro para MD (CN8).El corazn de estos mdulos es el chip BA6286, el cual es un H-Bridge capaz de manejar motores DC de entre 3v y 15v con unconsumo mximo de 1A.El control se realiza mediante las entradas FORWARD y REVERSE, las cuales se conectan directamente al PIC 16F84A(ver mdulo CPU en pgina anterior).El Preset de 10K regula la velocidad de cada motor independientemente. RV1 regula la velocidad de MI y RV2 regula lavelocidad de MD.La velocidad es regulada por variacin directa de la tensin real aplicada sobre los bornes de los conectores CN7 y CN8.De esta forma es posible usar motores de baja tensin (por ejemplo 3v) a pesar de usar tensiones de VHH superiores, ya quevariando RVx podemos ajustar la tensin real que se aplicar al motor.La velocidad de giro de los motores MI y MD tambin puede ser controlada va software implementando un sistema de pulsostipo PWM. Se puede ver un ejemplo de variacin de velocidad va PWM en el captulo 5 de este manual.

  • TR-Brain - Manual del usuario TodoRobot_______________________________________________________________________________________________________

    ___________________________________________________________________________________www.todorobot.com.ar 13

    Sensores pticos

    En la imagen anterior se aprecian los dos sensores pticos, donde podemos ver como se conectan los mismos al conector CN9.As mismo se aprecia la seccin excitadora del diodo infrarrojo junto con el regulador de sensibilidad RV3.

  • TR-Brain - Manual del usuario TodoRobot_______________________________________________________________________________________________________

    ___________________________________________________________________________________www.todorobot.com.ar 14

    2 - ALIMENTACIN DE LA TR-BRAINSu controladora TR-Brain le brinda la posibilidad de alimentar separadamente la parte lgica (VDD) de la correspondiente apotencia (VHH).No obstante es posible usar una nica fuente de alimentacin para ambas faces, para cuando el diseo as lo requiera, gracias aque han sido tomados los recaudos necesarios para poder filtrar los ruidos producidos por la etapa de potencia.Cabe aclarar sin embargo que una alimentacin separada ayuda a eliminar problemas de interferencias y fluctuaciones en laalimentacin causados generalmente por motores, rels, etc. Estas interferencias son a veces un verdadero problema en sistemasmicroprocesados como es el caso de la TR-Brain.

    2.1 - Usando fuentes de alimentacin separadas para Lgica y Potencia:

    Esta es la forma recomendada para evitar ruidos y fluctuaciones causadas generalmente por los motores.La alimentacin para la lgica digital se debe conectar a CN1, esta debe estar comprendida entre 9 y 15v de corriente continua ydebe ser capaz de soportar una carga de por lo menos 140 mA.Debido a que en el conector CN4 se encuentra presente una salida regulada de 5V (VCC) , la cual es tomada desde la entrada dealimentacin lgica va el regulador VR1, se debe tener en cuenta que la carga total sobre la alimentacin aplicada a la entradalgica puede ser mayor a 140mA, dependiendo del circuito que se alimente desde la salida VCC.En general una batera alcalina de 9v de las clsicas usadas en equipos electrnicos, es suficiente para soportar la carga bsica dela controladora.

    La alimentacin para la etapa de potencia (motores, rels, etc.) debe estar comprendida entre 6 y 15v de corriente continua, ydebe soportar una carga igual a los dispositivos controlados desde la salidas de motores y las salidas de potencia HRxx.

    Cabe aclarar que ambas alimentaciones (lgica y potencia) son sumadas cuando la TR-Brain es puesta en modo programacin(llave RUN/PROG en posicin PROG), para as obtener la tensin de programacin (13,5v) que necesita el PIC para grabar en lamemoria Flash.Es debido a esto que no se recomienda usar tensiones menores a las recomendadas, ya que podran provocar errores al momentode programar el PIC.

  • TR-Brain - Manual del usuario TodoRobot_______________________________________________________________________________________________________

    ___________________________________________________________________________________www.todorobot.com.ar 15

    2.2 - Usando una nica fuente de alimentacin para Lgica y Potencia:

    Esta modalidad es solamente recomendada cuando las caractersticas del diseo no permiten el uso de dos fuentes de poderindependientes.En este caso, las entradas " + " de VDD (CN1) y VHH (CN2) deben ser unidas. La alimentacin entonces ser directamenteconectada al conector CN2 (VHH) respetando la polaridad indicada. Est tensin de entrada unificada nunca debe ser inferior a15v, ya que de otra forma no se conseguir la tensin de programacin tal como se detalla en el punto anterior.Si se desea pueden usarse tensiones unificadas menores (mnimo 9v), pero entonces deber ser reemplazada por una tensin de15v cuando se pase la TR-Brain a modo programacin (llave RUN/PROG en posicin PROG) para generar correctamente latensin de programacin (13,5v).Recordar que solo deben unirse las entradas " + " de CN1 y CN2, en ningn caso deben ser unidas las entradas " - " .En esta configuracin, la entrada " - " correspondiente a CN1 (VDD) debe quedar desconectada.

    IMPORTANTE: En ningn caso las entradas "-" de CN1 (VDD) y CN2 (VHH)deben ser unidas. Esto podra daar permanentemente su TR-Brain.

  • TR-Brain - Manual del usuario TodoRobot_______________________________________________________________________________________________________

    ___________________________________________________________________________________www.todorobot.com.ar 16

    3 - CONECTANDO LA TR-BRAIN A LA PC3.1 - Detalle de la conexin paso por paso:La TR-Brain es provista con un cable de comunicacin de aproximadamente 1 mts de longitud, el cual le permite conectarla alpuerto paralelo de su PC.Antes de continuar, asegrese de haber instalado el software de programacin ProgBrain provisto con la TR-Brain (ver seccin4).

    A continuacin se describen los pasos a seguir para una conexin segura:

    Asegurarse que la TR-Brain se encuentra apagada (llave ON/OFF en posicin OFF)

    Conectar el cable de comunicacin provisto:- El extremo con conector pequeo (db9 hembra) se debe conectar al conector CN3 de la TR-Brain.- El otro extremo (db25 macho) debe conectarse al puerto paralelo de la PC.

    Ejecutar el software de programacin ProgBrain.

    Pasar la TR-Brain a modo programacin (llave RUN/PROG en posicin PROG)

    Encender la TR-Brain, si todo est correctamente conectado, debera encenderse nicamente el LED rojo PROG.

    En este punto ya est todo listo para descargar su nuevo programa a la TR-Brain.

    3.2 - Precauciones que deben observarse: Al conectar o desconectar la controladora TR-Brain al cable de comunicacin con la PC, la controladora debe estar

    APAGADA para evitar daar el puerto paralelo de la PC.

    As mismo es aconsejable no encender la controladora hasta tanto el programa no haya sido ejecutado y seencuentre activo en pantalla.

    Al cambiar de posicin la llave RUN/PROG la controladora debe estar apagada.

  • TR-Brain - Manual del usuario TodoRobot_______________________________________________________________________________________________________

    ___________________________________________________________________________________www.todorobot.com.ar 17

    4 - Programando la TR-Brain4.1 - Sobre el archivo hexadecimal:

    El archivo Hexadecimal (.hex) a grabar debe ser formato Intel INHX8M. Este es el formato estndar generado por la herramientade desarrollo MPLAB que puede descargarse gratis en el site de Microchip ( http://www.microchip.com ) Tambin puedeencontrar una copia del MPLAB en el CD provisto con la TR-Brain.Para ms datos sobre el uso del MPLAB consultar el Apndice D o en el site de Microchip.

    4.2 - Descripcin del software de programacin ProgBrain:Con la controladora TR-Brain se provee el software de programacin ProgBrain, el cual le permitir descargar sus programashacia la TR-Brain.

    En la siguiente figura se puede observar la pantalla correspondiente al ProgBrain:

    ProgBrain le permitir Programar, Verificar y Borrar todos los programas que usted disee dentro de la memoria flash del PIC16F84A que viene en su controladora TR-Brain.

    Consulte los requerimientos mnimos del sistema en el Captulo 1 de este manual.

  • TR-Brain - Manual del usuario TodoRobot_______________________________________________________________________________________________________

    ___________________________________________________________________________________www.todorobot.com.ar 18

    Programar

    ProgBrain verifica antes y despus de grabar cada direccin. De esta forma se evita grabar el mismo dato ya grabado,prolongando la vida til de la Flash Memory. Y luego realiza la verificacin posterior al grabado para asegurarse que el dato hasido grabado adecuadamente.

    Verificar

    Como se dijo en el punto anterior, ProgBrain realiza una verificacin al grabar cada direccin, por lo tanto no es necesarioejecutar este procedimiento luego de cada programacin. Esta funcin es ms bien til cuando no se est seguro de cual es elprograma que ha sido o tiene cargado actualmente en el PIC.

    Borrar

    Esta funcin es solamente necesaria cuando el PIC ha sido programado con cdigo de proteccin (CP). En estos caso la nicaforma de regrabar el micro es efectuando un borrado general. Est funcin borra la memoria de programa y la de datos.

    Configurar

    Esta opcin le permite configurar las opciones de trabajo del PIC, esta configuracin es grabada en el PIC al momento de laprogramacin.Las opciones posibles en el PIC16F84A son:

    Tipo de oscilador: esta opcin esta fija en XT (cristal) y no es posible modificarla, debido a que la TR-Brain ha sidodiseada utilizando como oscilador un cristal de 4MHz.

    Power Up Timer: esta opcin permite generar un pequeo retraso cuando el PIC sale del estado de reset. Esaconsejable poner esta opcin en ON para permitir estabilizar las tensiones antes que el programa empiece a correr.

    Watchdog Timer: Esta opcin permite activar el Watchdog Timer. Especialmente til para implementar sistemas deautoreset.

    Code Protect: Esta opcin permite activar los bits de proteccin para evitar el copiado del programa. Una vez que sehan activado, el programa grabado no puede ser ledo y el PIC solo podr ser regrabado si antes se ha efectuado unborrado total. Esta opcin no es muy til en la TR-Brain y es recomendable dejarla en OFF.

    ProgBrain est preparado para leer la configuracin directamente desde el archivo Hexadecimal (.hex), cuando esta ha sidoincluida en el cdigo fuente. Como estndar PicBrain est seteado para tomar la configuracin desde el archivo. Es posibledeseleccionar esta opcin para permitir establecer la configuracin manualmente.Para ms datos sobre la configuracin del PIC16F84A dirigirse al Apndice B.

    Pasar a Modo RUN

    Este comando pondr a la controladora TR-Brain en modo RUN, lo que har que el programa cargado en la TR-Brain comiencea ejecutarse.Est funcionalidad es muy til cuando se desea verificar el programa sin tener que desconectar la controladora del cable decomunicacin. Obviamente esta funcionalidad carece de sentido cuando la controladora est instalada en un robot que debedesplazarse.Antes de utilizar esta opcin asegrese que la llave RUN/PROG est en modo RUN. Recuerdo apagar la controladora cada vezque cambie de posicin la llave RUN/PROG.

  • TR-Brain - Manual del usuario TodoRobot_______________________________________________________________________________________________________

    ___________________________________________________________________________________www.todorobot.com.ar 19

    4.3 - Programando Paso por Paso:A continuacin se detalla paso a paso como descargar el programa al PIC 16F84A de la TR-Brain:

    1) Seleccionar el puerto LPT a usar mediante el men desplegable correspondiente. Si por algn motivo no se pudiesedetectar el Hardware de la controladora TR-Brain, aparecer un mensaje en rojo indicando el error y se bloquearntodos los controles hasta tanto no se resuelva el problema.

    2) Ingresar el archivo Hexadecimal (.hex) que contiene el programa a descargar. Puede usarse el botn BUSCAR paraencontrar el archivo a grabar o bien escribirlo directamente en la ventana.

    3) Pulsar el botn CONFIGURAR para establecer la configuracin deseada para el PIC (Watchdog, Power Up Timer,etc). Todas las configuraciones estn por defecto seteadas para detectar estos parmetros directamente desde el archivohexadecimal (.hex), para que esto funcione se debieron haber colocado previamente en el cdigo fuente a fin de que elcompilador genere el cdigo necesario en el archivo hexadecimal. En ese caso este punto puede ser salteado y pasardirectamente al punto siguiente.La opcin para seleccionar el tipo de oscilador se encuentra deshabilitada debido a que la TR-Brain utiliza unoscilador a cristal de 4MHz. Por lo tanto cualquier otra opcin dara como resultado un mal funcionamiento.

    4) Pulsar el botn PROGRAMAR para iniciar la descarga hacia la controladora. Aparecer una ventana pidiendoconfirmacin de los parmetros que se usarn en la programacin y, una vez aceptado, si todo ha funcionadocorrectamente, aparecer una ventana indicando la finalizacin del proceso.

    Durante la programacin, los LED's verdes correspondientes a RUN, Optico-I y Optico-D se encendern (algunosparpadeos son normales).

    La funcin de estos LED's durante la programacin es la siguiente: RUN ---------------- Indica VPP en alto (13,5v) Optico-D ------------ Indica seal DATA OK Optico-I ------------- Indica seal CLOCK OK

  • TR-Brain - Manual del usuario TodoRobot_______________________________________________________________________________________________________

    ___________________________________________________________________________________www.todorobot.com.ar 20

    5 - Proyectos y Ejemplos de utilizacinEn este captulo veremos algunos proyectos que servirn de ejemplo para comprender como programar y sacarle provecho a laTR-Brain .

    Los proyectos estn realizados en lenguaje ensamblador (assembler) y compilados con la herramienta de Microchip MPLAB, lamisma podr encontrarla dentro de este CD.

    Los archivos fuente (.asm) y los mismos compilados (.hex) se los puede hallar dentro de la carpeta " \TR-Brain\Ejemplos\ "

    Todos los proyectos se realizaron usando como base el template que puede encontrarse en " \TR-Brain\Templates\ASM\template.asm ".

    5.1 - Manejando motores DC:

    Archivo Fuente: mi-md.asm

    Descripcin: En este ejemplo se demuestra como manejar dos motores DC conectados a CN7 y CN8.

    Materiales y conexionado: Para realizar este ejemplo, se deben conectar dos motores DC en las salidas CN7 y CN8 segn seexplica en el punto 1.3 (conectores CN7 y CN8) de este manual.

    Las llaves 1 a 7 del DipSwitch deben estar en OFF .

    Funcionamiento: Una vez encendida la TR-Brain, los motores girarn hacia un lado y hacia otro con un retraso de 500 ms entrecada cambio de direccin.

    Esquema de conexiones:

  • TR-Brain - Manual del usuario TodoRobot_______________________________________________________________________________________________________

    ___________________________________________________________________________________www.todorobot.com.ar 21

    5.2 - Manejando motores Paso a Paso unipolares:

    Archivo Fuente: pp-unip.asm

    Descripcin: En este ejemplo se demuestra como manejar un motor paso a paso del tipo unipolar haciendo uso de las salidasHRxx de CN6 para manejar las bobinas del P-P Unipolar.

    Materiales y conexionado: Para realizar este ejemplo, se debe conectar un motor Paso a Paso Unipolar (5 o 6 cables) en lassalidas HRB0, HRB1, HRB2, HRB3.El motor P-P debe ser conectado de la siguiente manera: Cable A -------- HRB3 Cable B -------- HRB2 Cable C -------- HRB1 Cable D -------- HRB0 COMUN ------ VHH (en CN4)

    Para activar las salidas HRB0 a HRB3, el DipSwitch debe estar en la posicin que se indica abajo: llave 1 a 4 en ON llave 5 a 8 en OFF

    Tambin es necesario conectar dos pulsadores entre RB4 y GND, y entre RB5 y GND.

    Funcionamiento: El funcionamiento es el siguiente, mientras no se presione ningn pulsador (RB4 y RB5 en 1), el motor estardetenido. Cuando el pulsador conectado a RB4 sea presionado (RB4 en cero), el motor girar hacia la izquierda. Cuando elpulsador conectado a RB5 sea presionado, el motor girar en el sentido opuesto. El delay entre pasos est fijado a 3 ms y se define en la siguiente funcin, justo antes de comenzar la rutina principal "MAIN":

    movlw D '3' ; ajusto delay a 3 msmovwf delay_ms

    Para modificar la velocidad de giro se debe modificar este valor (3) por el deseado.

    Esquema de conexiones:

  • TR-Brain - Manual del usuario TodoRobot_______________________________________________________________________________________________________

    ___________________________________________________________________________________www.todorobot.com.ar 22

    5.3 - Manejando motores Paso a Paso Bipolares:

    Archivo Fuente: pp-bip.asm

    Descripcin: En este ejemplo se demuestra como manejar un motor paso a paso del tipo bipolar haciendo uso de los H-BridgeIC4 e IC5 para realizar el cambio de polaridad de las bobinas del P-P Bipolar, necesarios para el funcionamiento de estosmotores.

    Materiales y conexionado: Para realizar este ejemplo, se debe conectar un motor Paso a Paso Bipolar(4 cables) en las salidas CN7 y CN8. Una de las bobinas del P-P se deber conectar a CN7 y la segunda bobina a CN8. En casoque el motor no funcione correctamente, intentar dar vuelta la polaridad de una de las bobinas, y si el problema persiste, hacer lomismo con la segunda bobina.Tambin es necesario conectar dos pulsadores entre RB4 y GND, y entre RB5 y GND.

    Las llaves 1 a 7 del DipSwitch deben estar en OFF .

    Funcionamiento: El funcionamiento es el siguiente, mientras no se presione ningn pulsador (RB4 y RB5 en 1), el motor estardetenido. Cuando el pulsador conectado a RB4 sea presionado (RB4 en cero), el motor girar hacia la izquierda. Cuando elpulsador conectado a RB5 sea presionado, el motor girar en el sentido opuesto.

    El delay entre pasos est fijado a 3 ms y se define en la siguiente funcin, justo antes de comenzar la rutina principal "MAIN":

    movlw D '3' ; ajusto delay a 3 msmovwf delay_ms

    Para modificar la velocidad de giro se debe modificar este valor (3) por el deseado.

    Esquema de conexiones:

  • TR-Brain - Manual del usuario TodoRobot_______________________________________________________________________________________________________

    ___________________________________________________________________________________www.todorobot.com.ar 23

    5.4 - Manejando sensores pticos:

    Archivo Fuente: optico.asm

    Descripcin: En este ejemplo se demuestra como leer el estado de los sensores pticos y en base a este dato tomar una decisin.

    Materiales y conexionado: Para realizar este ejemplo, se deben conectar dos motores DC en las salidas CN7 y CN8. Tambinse debe conectar el sensor ptico doble provisto con la TR-Brain en el conector CN9.

    Las llaves 1 a 7 del DipSwitch deben estar en OFF .

    Funcionamiento: El funcionamiento es el siguiente, cuando los sensores estn sobre una superficie oscura (por ejemplo unalnea negra), los motores estarn detenidos. Cuando el sensor izquierdo se ubique sobre una superficie reflectiva (por ejemploblanco) el motor izquierdo MI (CN7) comenzar a girar hacia adelante, detenindose cuando el sensor vuelva a estar sobre unasuperficie oscura.El mismo principio de funcionamiento se aplica para el sensor derecho, pero haciendo funcionar en este caso al motor derechoMD (CN8).

    Esquema de conexiones:

  • TR-Brain - Manual del usuario TodoRobot_______________________________________________________________________________________________________

    ___________________________________________________________________________________www.todorobot.com.ar 24

    5.5 - Regulando la velocidad de MI y MD con PWM:

    Archivo Fuente: pwm.asm

    Descripcin: En este ejemplo se demuestra como implementar un sistema de control de velocidad mediante el sistema demodulacin por pulsos PWM.

    Materiales y conexionado: Para realizar este ejemplo, se deben conectar dos motores DC en las salidas CN7 y CN8. Tambinse deben conectar cuatro pulsadores entre las entradas RB0, RB1, RB2, RB3 y RB4 a GND para seleccionar las velocidades.

    Funcionamiento: El funcionamiento es el siguiente, cuando el pulsador conectado a RB0 se presione (RB0 en cero), losmotores conectados a CN7 y CN8 arrancarn a una velocidad mnima. Los pulsadores conectados a RB1, RB2 y RB3 irnprovocando que la velocidad aumente, siendo RB3 la velocidad mxima. Presionando el pulsador conectado a RB4 provocarque ambos motores se detengan.Este control de velocidad es adicional al que se puede realizar mediante los reguladore RV1 y RV2. La mxima velocidad(pulsador de RB3 presionado), ser la fijada mediante RV1 y/o RV2.

    Las llaves 1 a 7 del DipSwitch deben estar en OFF .

    Esquema de conexiones:

  • TR-Brain - Manual del usuario TodoRobot_______________________________________________________________________________________________________

    ___________________________________________________________________________________www.todorobot.com.ar 25

  • TR-Brain - Manual del usuario TodoRobot_______________________________________________________________________________________________________

    ___________________________________________________________________________________www.todorobot.com.ar 26

    APENDICE A

    Resolviendo Problemas

  • TR-Brain - Manual del usuario TodoRobot_______________________________________________________________________________________________________

    ___________________________________________________________________________________www.todorobot.com.ar 27

    Problema Accin a Seguir

    PROBLEMAS DE ENCENDIDO

    Verificar conexionado de la alimentacin CN1 y CN2 (ver captulo 2)La TR-Brain no enciende (LEDRUN apagado) Si est conectado a la PC, el software ProgBrain debe estar en modo RUN (ver

    captulo 4)

    Verificar VCC = 5v en conector CN4

    Verificar programa grabado mediante la opcin verificar del ProgBrain

    Verificar el cdigo del programa, pueden existir errores que provoquen que elPIC16F84A no funcione como se espera o quede en un loop infinito.

    LED RUN enciende pero laTR-Brain no parece estarfuncionando.

    Cargar programa TESTFULL (ver final de este Apndice) y seguir lasinstrucciones que se detallan en el mismo.

    PROBLEMAS DE PROGRAMACINVerificar conexionado de la alimentacin CN1 y CN2 (ver captulo 2)

    Verificar VDD (CN1) mayor o igual a 9v y VHH (CN2) mayor o igual a 6vLa TR-Brain no pasa a modoprogramacin (LED PROGapagado) cuando se pasa la llaveRUN/PROG a posicin PROG Verificar que VDD (-) y VHH (-) no estn unidos (ver captulo 2)

    Verificar correcta conexin del cable entre la TR-Brain y la PCProgBrain da error de Hardware nodetectado Verificar que se ha seleccionado el LPT correcto

    Verificar conexionado de la alimentacin CN1 y CN2 (ver captulo 2)

    Verificar VDD (CN1) mayor o igual a 9v y VHH (CN2) mayor o igual a 6vProgBrain da error al iniciar odurante la programacin.

    Verificar que los LED RUN, Optico-I y Optico-D enciendan al iniciar laprogramacin

    Verificar que TR-Brain est encendida y el LED rojo PROG prendido.

    Verificar VDD (CN1) mayor o igual a 9v y VHH (CN2) mayor o igual a 6vAl intentar programar aparece elerror "Code Protect Activado ..... "

    Intentar con un borrado total (botn BORRAR en ProgBrain)

  • TR-Brain - Manual del usuario TodoRobot_______________________________________________________________________________________________________

    ___________________________________________________________________________________www.todorobot.com.ar 28

    Problema Accin a Seguir

    PROBLEMAS VARIOSVerificar tensin en VHH (CN4)

    Verificar si LED's MI y MD se ponen en rojo o en verde (indican movimientohacia atrs o adelante respectivamente - ver captulo 1)

    Regular la velocidad mediante RV1 y RV2. Puede que est demasiado baja yno llegue a mover los motores.

    Verificar que los motores sean adecuados para la tensin VHH aplicada y quelos mismo funcionen correctamente.

    Los motores conectados a CN7 yCN8 no arrancan

    Cargar programa TESTFULL (ver final de este Apndice) y seguir lasinstrucciones que se detallan en el mismo.

    Acercarlos lo ms posible a un papel blanco apuntando hacia abajo

    Regular la sensibilidad mediante RV3Sensores pticos no funcionan,LED's indicadores no encienden alenfrentarlos a una superficie clara Verificar que no le est incidiendo luz natural o artificial directamente a la

    superficie sensora (cada sensor posee dos pequeos ojos en el lateral opuesto ala entrada del cable)

    Verificar si la llave de DipSwitch correspondiente a la salida a ser usada esten ON (ver captulo 1)

    Verificar VHH en CN4

    Verificar como se estn realizando las conexiones (ver captulo 1)Alguna de las salidas HRxx noparecen activarse

    Cargar programa TESTFULL (ver final de este Apndice) y seguir lasinstrucciones que se detallan en el mismo.Si alguna o todas las salidas no funcionan, reemplazar IC3 (ULN2003) por unchip nuevo. Este puede conseguirse en cualquier casa de electrnica.

    Alguna de las salidas RBx (RB0 aRB5) parece no funcionarcorrectamente.

    Cargar programa TESTFULL (ver final de este Apndice) y seguir lasinstrucciones que se detallan en el mismo.

    Verificar que se est usando una resistencia de PullUp (resistencia de 10K aVCC). Recordar que RA4 es una salida a colector abierto (ver captulo 1).

    La salida RA4 de CN5 no respondesegn lo esperado Si an se tiene dudas sobre su normal funcionamiento, recomendamos cargar el

    programa TESTFULL (ver final de este Apndice) y seguir las instruccionesque se detallan en el mismo.

    Verificar que no est activado el PullUp interno (ver captulo 1). Tener encuenta que si no se activa el PullUp interno, las entradas quedarn en estado deflotacin y la lectura es aleatoria, hasta tanto no sea controlada por un circuitoexterno.

    Las entrada RB0, RB1, RB2, RB3,RB4 y RB5 se leen como 1 a pesarde estar desconectadas. Si an se tiene dudas sobre su normal funcionamiento, recomendamos cargar el

    programa TEST-IN (ver final de este Apndice) y seguir las instrucciones quese detallan en el mismo.

    Recordar que RA4 no posee la facilidad de PullUp interno (ver captulo 1).Las entradas RBx se leen como uno,pero RA4 se comporta en formaaleatoria

    Si an se tiene dudas sobre su normal funcionamiento, recomendamos cargar elprograma TEST-IN (ver final de este Apndice) y seguir las instrucciones quese detallan en el mismo.

  • TR-Brain - Manual del usuario TodoRobot_______________________________________________________________________________________________________

    ___________________________________________________________________________________www.todorobot.com.ar 29

    TESTFULL y TEST-INProgramas para probrar la TR-Brain

    TESTFULL:Este programa comprobar todas las salidas de la TR-Brain (CN5, CN6, CN7 y CN8) as como tambin el funcionamiento de lossensores pticos.

    Para implementar esta prueba, se deben conectar: Dos motores DC (o bien uno y cambiarlo de conector) en las salidas CN7 y CN8. Un LED a GND (CN4) mediante una resistencia de 1K conectada a su ctodo, el nodo se ir conectando a las distintas

    salidas de CN5 (Rxx) para testear todas. Un motor o un rel entre VHH (CN4) y el otro terminal a las distintas salidas de CN6 (HRxx) para testear todas.

    Pegar un trozo de cinta aisladora negra o bien dibujar una lnea con marcador negro de 2,5cm de ancho y al menos 5 cm delargo sobre una hoja blanca para probar los sensores pticos.

    Las llaves 1 a 7 del DipSwitch deben ponerse en ON.

    En el diagrama siguiente, podemos apreciar el conexionado antes explicado:

  • TR-Brain - Manual del usuario TodoRobot_______________________________________________________________________________________________________

    ___________________________________________________________________________________www.todorobot.com.ar 30

    Pasos a seguir para realizar las pruebas:

    1) Cargar el programa TESTFULL.HEX en la TR-Brain usando el software de programacin ProgBrain. Este programa lo podrencontrar en la carpeta " \TR-Brain\Test\ " del CD provisto con la TR-Brain.

    2) Ubicar el sensor ptico sobre la lnea negra realizada sobre el papel. Y asegurarse que ambos sensores estn sobre la misma.LED's Optico-I y Optico-D deben estar apagados.

    3) Comprobar que los motores conectados a CN7 y CN8 estn detenidos.Conectar el rel o motor conectado a VHH a cada salida HRxx (una a la vez), y comprobar que el motor o rel no se active enninguna salida HRxx.Conectar el LED conectado a GND a cada salida Rxx (una a la vez), y comprobar que el LED no encienda en ninguna de lassalidas Rxx.

    4) Desplazar el sensor ptico hacia la izquierda hasta que el LED Optico-I se encienda (sensor ptico izquierdo sobre superficieblanca).

    5) Realizar el procedimiento descripto en el paso 3, pero en este caso los motores conectados a CN7 y CN8 deberan girar haciaadelante (LED's MI y MD en verde). Y el motor o rel conectado a VHH y el LED conectado a GND debera encenderse entodas las salidas.

    6) Desplazar el sensor ptico hacia la derecha hasta que el LED Optico-D se encienda (sensor ptico derecho sobre superficieblanca).

    7) IDEM paso 5, con la nica diferencia que los motores de CN7 y CN8 girarn hacia atrs (LED's MI y MD en rojo).

    Si todas las pruebas anteriores fueron exitosas, la TR-Brain est funcionando perfectamente.

    Si alguna de las salidas de CN5 (Rxx) no ha funcionado segn lo detallado anteriormente, es muy probable que el PIC16F84Ahaya sido daado. En este caso recomendamos reemplazar el mismo por uno nuevo. Esto no reviste complejidad, debido a que elmismo est instalado en un zcalo, por lo que no es necesario desoldar o soldar nada.

    Si alguna de las salidas de CN6 (HRxx) no ha funcionado segn lo detallado anteriormente, es muy probable que el IC3(ULN2003) haya sido daado. En este caso recomendamos reemplazar el mismo por uno nuevo. Esto no reviste complejidad,debido a que el mismo est instalado en un zcalo, por lo que no es necesario desoldar o soldar nada.

  • TR-Brain - Manual del usuario TodoRobot_______________________________________________________________________________________________________

    ___________________________________________________________________________________www.todorobot.com.ar 31

    TEST-IN:Este programa comprobar todas las entradas del conector CN5 (Rxx) de la TR-Brain.

    Para implementar esta prueba, se debe conectar un motor DC en CN7 o CN8.

    Las llaves 1 a 6 del DipSwitch deben ponerse en OFF, y la llave 7 debe estar en ON.

    Usar un pequeo trozo de cable conectado a GND (CN4) para poder cortocircuitar aGND las entradas de CN5.

    En el diagrama siguiente, podemos apreciar el conexionado antes explicado:

    El funcionamiento de esta prueba es el siguiente:

    1) Cargar el programa TEST-IN.HEX en la TR-Brain usando el software de programacin ProgBrain. Este programa lo podrencontrar en la carpeta " \TR-Brain\Test\ " del CD provisto con la TR-Brain.

    2) Cuando ninguna de las entradas Rxx (CN5) est forzada a GND, el motor conectado a CN7 o CN8 estar detenido.

    3) Cuando cualquiera de estas entradas Rxx (CN5) se conecte a GND (mediante el trozo de cable antes mencionado), el motorconectado a CN7 o CN8 comenzar a girar hacia adelante (LED's MI y MD en verde).

    4) Probar una a una las entradas Rxx para comprobar el correcto funcionamiento de todas.

    Si alguna de las entradas no ha funcionado segn lo detallado anteriormente, es muy probable que el PIC 16F84A haya sidodaado. En este caso recomendamos reemplazar el mismo por uno nuevo. Esto no reviste complejidad, debido a que el mismoest instalado en un zcalo, por lo que no es necesario desoldar o soldar nada.

  • TR-Brain - Manual del usuario TodoRobot_______________________________________________________________________________________________________

    ___________________________________________________________________________________www.todorobot.com.ar 32

    APENDICE B

    Descripcin y gua de programacin del PIC 16F84A

  • TR-Brain - Manual del usuario TodoRobot_______________________________________________________________________________________________________

    ___________________________________________________________________________________www.todorobot.com.ar 33

    MICROCONTROLADORES PICEn este apndice veremos un resumen sobre los microcontroladores PIC y por sobre todo el PIC16F84A que es el que usa lacontroladora TR-Brain

    B1 - Introduccin a los microcontroladores

    B1.1 - Arquitectura Harvard vs La Arquitectura Tradicional:

    La arquitectura Tradicional:La arquitectura tradicional de computadoras y microprocesadores se basa en el esquema propuesto por John VonNeumann, en el cual la unidad central de proceso, o CPU, esta conectada a una memoria nica que contiene lasinstrucciones del programa y los datos (figura 1.1.1). El tamao de la unidad de datos o instrucciones esta fijado porel ancho del bus de la memoria. Es decir que un microprocesador de 8 bits, que tiene adems un bus de 8 bits que loconecta con la memoria, deber manejar datos e instrucciones de una o ms unidades de 8 bits (bytes) de longitud.Cuando deba acceder a una instruccin o dato de ms de un byte de longitud, deber realizar ms de un acceso a lamemoria. Por otro lado este bus nico limita la velocidad de operacin del microprocesador, ya que no se puedebuscar de memoria una nueva instruccin, antes de que finalicen las transferencias de datos que pudieran resultar dela instruccin anterior. Es decir que las dos principales limitaciones de esta arquitectura tradicional son :

    a) que la longitud de las instrucciones esta limitada por la unidad de longitud de los datos, por lo tanto elmicroprocesador debe hacer varios accesos a memoria para buscar instrucciones complejas, b) que la velocidad de operacin (o ancho de banda de operacin) esta limitada por el efecto de cuello de botella quesignifica un bus nico para datos e instrucciones que impide superponer ambos tiempos de acceso.

    La arquitectura Von Neumann permite el diseo de programas con cdigo automodificable, prctica bastante usadaen las antiguas computadoras que solo tenan acumulador y pocos modos de direccionamiento, pero innecesaria, enlas computadoras modernas.

    FIG. 1.1.1 Arquitectura Von Newmann

  • TR-Brain - Manual del usuario TodoRobot_______________________________________________________________________________________________________

    ___________________________________________________________________________________www.todorobot.com.ar 34

    La arquitectura Harvard y sus ventajas:La arquitectura conocida como Harvard, consiste simplemente en un esquema en el que el CPU esta conectado a dosmemorias por intermedio de dos buses separados. Una de las memorias contiene solamente las instrucciones delprograma, y es llamada Memoria de Programa. La otra memoria solo almacena los datos y es llamada Memoria deDatos (figura 1.1.2). Ambos buses son totalmente independientes y pueden ser de distintos anchos. Para unprocesador de Set de Instrucciones Reducido, o RISC (Reduced Instruction Set Computer), el set de instrucciones yel bus de la memoria de programa pueden disearse de manera tal que todas las instrucciones tengan una solaposicin de memoria de programa de longitud. Adems, como los buses son independientes, el CPU puede estaraccediendo a los datos para completar la ejecucin de una instruccin, y al mismo tiempo estar leyendo la prximainstruccin a ejecutar.

    Se puede observar claramente que las principales ventajas de esta arquitectura son:

    a) que el tamao de las instrucciones no esta relacionado con el de los datos, y por lo tanto puede ser optimizado paraque cualquier instruccin ocupe una sola posicin de memoria de programa, logrando as mayor velocidad y menorlongitud de programa, b) que el tiempo de acceso a las instrucciones puede superponerse con el de los datos, logrando una mayor velocidadde operacin.

    Una pequea desventaja de los procesadores con arquitectura Harvard, es que deben poseer instrucciones especialespara acceder a tablas de valores constantes que pueda ser necesario incluir en los programas, ya que estas tablas seencontrarn fsicamente en la memoria de programa (por ejemplo en la memoria Flash de un microcontrolador).

    FIG. 1.1.2 Arquitectura Harvard

    Los microcontroladores PIC 16C5X, 16CXX y 17CXX poseen arquitectura Harvard, con una memoria de datos de 8bits, y una memoria de programa que, segn el modelo, puede ser de 12 bits para los 16C5X, 14 bits para los 16FXXy 16 bits para los 17CXX.

  • TR-Brain - Manual del usuario TodoRobot_______________________________________________________________________________________________________

    ___________________________________________________________________________________www.todorobot.com.ar 35

    B1.2 - Diagrama de bloques y Pinout del PIC 16F84AEn la siguiente figura se aprecia el pinout correspondiente al microcontroladores PIC16F84A:

    En la siguiente figura podemos apreciar el diagrama en bloques correspondiente a la estructura interna del PIC 16F84A:

    Diagrama de bloques de los microcontroladores PIC16F84A

    B1.3 - Memoria interna en el PIC 16F84A

  • TR-Brain - Manual del usuario TodoRobot_______________________________________________________________________________________________________

    ___________________________________________________________________________________www.todorobot.com.ar 36

    Mapas de memoria Memoria Interna (RAM) - Organizacin:La memoria interna de datos, tambin llamada archivo de registros (Register File), esta dividida en dos grupos: los registrosespeciales SFR (Special Function Register), y los registros de propsito generales GPR (General Purpose Register).Los primeros ocupan las 11 posiciones primeras que van desde la 00 a la 0B, y los segundos las posiciones que siguen, o sea dela 0C a la 4F.Los registros especiales contienen la palabra de estado (STATUS), los registros de datos de los dos puertos de entrada/salida(Puerto A y Puerto B), los 8 bits menos significativos del Program Counter (PC), el contador del Timer/Counter (TMR0) y unregistro puntero llamado File Select Register (FSR) entre otros. La posicin 00h no contiene ningn registro en especial y esutilizada en el mecanismo de direccionamiento indirecto.La memoria de datos est dividida en dos bancos, Bank 0 y Bank 1. Si vemos la figura a continuacin, veremos que por ejemplopara acceder a registro TRISA deberemos seleccionar el Banco 1, mientras que para acceder al registro PORTA, deberemosseleccionar el Banco 0.Se puede operar con un solo banco a la vez, el cual se selecciona mediante los bits 5 y 6 del registro STATUS. Para seleccionarel Bank 0 deberemos poner a cero RP0 (STATUS,5) , poniendo a uno RP0 seleccionaremos el Bank 1. RP1 (STATUS,6) sedebe mantener siempre en cero.

    FIG. 1.3.1 Organizacin de la memoria Interna (RAM) en el PIC16F84A

  • TR-Brain - Manual del usuario TodoRobot_______________________________________________________________________________________________________

    ___________________________________________________________________________________www.todorobot.com.ar 37

    Memoria de Programa - Organizacin:Los PIC 16FXX poseen un contador de programa (PC) de 13 bits, capaz de direccionar un espacio de 8K x 14 bits. En el caso delos PIC16F84A se utiliza solo los primeros 1K x 14bits (0000h - 3FFFh).En la siguiente figura podemos ver el diagrama correspondiente a la memoria de programa. El vector de Reset seencuentra en la direccin 0000h y el vector de Interrupciones en la direccin 0004h.

    FIG. 1.3.2 Organizacin de la memoria de programa en el PIC16F84A

    PC - Contador de ProgramaEste registro, normalmente denominado PC (Program Counter), es totalmente equivalente al de todos los microprocesadores ycontiene la direccin de la prxima instruccin a ejecutar. Se incrementa automticamente al ejecutar cada instruccin, demanera que la secuencia natural de ejecucin del programa es lineal, una instruccin despus de la otra. Algunas instruccionesque llamaremos de control, cambian el contenido del PC alterando la secuencia lineal de ejecucin. Dentro de estas instruccionesse encuentran el GOTO y el CALL que permiten cargar en forma directa un valor constante en el PC haciendo que el programasalte a cualquier posicin de la memoria. Otras instrucciones de control son los SKIP o salteos condicionales, que producen unincremento adicional del PC si se cumple una condicin especifica, haciendo que el programa saltee, sin ejecutar, la instruccinsiguiente.El PC del PIC 16F84A es un registro de 13 bits, lo que permite direccionar respectivamente 8K (8192) posiciones de memoriade programa.Al resetearse el microprocesador, todos los bits del PC toman valor "0", de manera que la direccin de arranque del programa essiempre la primera posicin de memoria de programa (0000h). En esta posicin se deber poner una instruccin de salto al puntodonde verdaderamente se inicia el programa.

  • TR-Brain - Manual del usuario TodoRobot_______________________________________________________________________________________________________

    ___________________________________________________________________________________www.todorobot.com.ar 38

    A diferencia de la mayora de los microprocesadores convencionales, el PC es tambin accesible al programador como registrode memoria interna de datos, en la posicin de 02h. Es decir que cualquier instruccin comn que opere sobre registros puede serutilizada para alterar el PC y desviar la ejecucin del programa. El uso indiscriminado de este tipo de instrucciones complica elprograma y puede ser muy peligroso, ya que puede producir comportamientos difciles de predecir. Sin embargo, algunas de estainstrucciones utilizadas con cierto mtodo, pueden ser muy tiles para implementar poderosas estructuras de control tales comoel GOTO computado.

    Stack o PilaEn los microcontroladores PIC el stack es una memoria interna dedicada, de tamao limitado, separada de las memorias de datosy de programa, inaccesible al programador, y organizada en forma de pila, que es utilizada solamente, y en forma automtica,para guardar las direcciones de retorno de subrutinas e interrupciones. Cada posicin es de 11 bits y permite guardar una copiacompleta del PC. Como en toda memoria tipo pila, los datos son accedidos de manera tal que el primero que entra es el ultimoque sale.En los PIC 16F84A el stack es de 8 posiciones. Esto deber tenerse en cuenta a la hora de anidar subrutinas, es decir que si sellama a una subrutina y esta a su vez llama a otra, esto se podr seguir haciendo siempre que no se supere el mximo de 8subrutinas anidadas, o de lo contrario se ver desborda la capacidad del stack, que solo puede almacenar 8 direcciones deretorno. Esto de hecho representa una traba para el programador y adems parece impedir o dificultar la programacinestructurada, sin embargo es una buena solucin de compromiso ya que estos microcontroladores estn diseados paraaplicaciones de alta velocidad en tiempo real, en las que el overhead (demoras adicionales) que ocasiona un excesivoanidamiento de subrutinas es inaceptable. Por otra parte existen tcnicas de organizacin del programa que permiten mantener laclaridad de la programacin estructurada, sin necesidad de utilizar tantas subrutinas anidadas.Como ya se menciono anteriormente, el stack y el puntero interno que lo direcciona, son invisibles para el programador, solo selos accede automticamente para guardar o rescatar las direcciones de programa cuando se ejecutan las instrucciones de llamadao retorno de subrutinas, o cuando se produce una interrupcin o se ejecuta una instruccin de retorno de ella.

  • TR-Brain - Manual del usuario TodoRobot_______________________________________________________________________________________________________

    ___________________________________________________________________________________www.todorobot.com.ar 39

    B1.4 - Registros de funciones especiales - Camino de los datos y registro WLa figura 1.4.2 representa un diagrama simplificado de la arquitectura interna del camino de los datos en el CPU de losmicrocontroladores PIC. Este diagrama puede no representar con exactitud el circuito interno de estos microcontroladores, peroes exacto y claro desde la ptica del programador. La figura 1.4.1 representa el mismo diagrama para un microprocesadorficticio de arquitectura tradicional. Se puede observar que la principal diferencia entre ambos radica en la ubicacin del registrode trabajo, que para los PICs se denomina W (Working Register), y para los tradicionales es el Acumulador (A).

    Figura 1.4.1 - Microprocesador tradicional Figura 1.4.2 - Microprocesador PIC (Harvard)

    En los microcontroladores tradicionales todas las operaciones se realizan sobre el acumulador. La salida del acumulador estaconectada a una de las entradas de la Unidad Aritmtica y Lgica (ALU), y por lo tanto ste es siempre uno de los dos operandosde cualquier instruccin. Por convencin, las instrucciones de simple operando (borrar, incrementar, decrementar,complementar), actan sobre el acumulador. La salida de la ALU va solamente a la entrada del acumulador, por lo tanto elresultado de cualquier operacin siempre quedara en este registro. Para operar sobre un dato de memoria, luego realizar laoperacin siempre hay que mover el acumulador a la memoria con una instruccin adicional.En los microcontroladores PIC, la salida de la ALU va al registro W y tambin a la memoria de datos, por lo tanto el resultadopuede guardarse en cualquiera de los dos destinos. En las instrucciones de doble operando, uno de los dos datos siempre debeestar en el registro W, como ocurra en el modelo tradicional con el acumulador. En las instrucciones de simple operando el datoen este caso se toma de la memoria (tambin por convencin). La gran ventaja de esta arquitectura es que permite un gran ahorrode instrucciones ya que el resultado de cualquier instruccin que opere con la memoria, ya sea de simple o doble operando,puede dejarse en la misma posicin de memoria o en el registro W, segn se seleccione con un bit de la misma instruccin. Lasoperaciones con constantes provenientes de la memoria de programa (literales) se realizan solo sobre el registro W.

    En la memoria de datos de los PICs se encuentran ubicados casi todos los registros de control del microprocesador y susperifricos autocontenidos, y tambin las posiciones de memoria de usos generales.

    En la siguiente figura podemos ver la tabla completa conteniendo todos los registros especiales (SFR) que contiene elPIC 16F84A:

  • TR-Brain - Manual del usuario TodoRobot_______________________________________________________________________________________________________

    ___________________________________________________________________________________www.todorobot.com.ar 40

  • TR-Brain - Manual del usuario TodoRobot_______________________________________________________________________________________________________

    ___________________________________________________________________________________www.todorobot.com.ar 41

    STATUS - Palabra de Estado del ProcesadorEl registro STATUS contiene los tres bits de estado de la ALU (C, DC y Z), y otros bits que por comodidad se incluyeron eneste registro.

    El bit C indica acarreo del bit ms significativo (bit 7) del resultado de la ultima operacin de suma. En el caso de la resta secomporta a la inversa, C resulta 1 si no hubo pedido de prstamo. Este bit es tambin usado en las operaciones de rotacinderecha o izquierda como un paso intermedio entre el bit 0 y el bit 7.

    El bit DC (digit carry) indica acarreo del cuarto bit (bit 3) del resultado de la ultima operacin de suma o resta, con uncomportamiento anlogo al del bit C, y es til para operar en BCD (para sumar o restar nmeros en cdigo BCDempaquetado).

    El bit Z indica que el resultado de la ultima operacin fue CERO. En este caso Z ser igual a 1. El bit PD (POWER DOWN) sirve para detectar si la alimentacin fue apagada y encendida nuevamente, tiene que ver con la

    secuencia de inicializacin. El bit TO (TIME-OUT) sirve para detectar si una condicin de reset fue producida por el Watchdog Timer. Los bits de seleccin de pagina RP0 y RP1 se utilizan para seleccionar Bank 0 o Bank 1. En el PIC 16F84A el bit RP1 no

    tiene uso y debe mantenerse en cero. El bit IRP es usado para la seleccin del banco de memoria en el direccionamiento indirecto, pero no es utilizado en el PIC

    16F84A, y debe dejarse en cero.

  • TR-Brain - Manual del usuario TodoRobot_______________________________________________________________________________________________________

    ___________________________________________________________________________________www.todorobot.com.ar 42

    OPTION - Registro de opcionesEste registro contiene los bits de control para configurar el TMR0/WDT prescaler, la interrupcin externa (RB0/INT), TMR0 ylos PullUp internos para el PORT B.

    PS0, PS1 y PS2 seleccionan el prescaler rate (ver tabla en figura anterior). Este prescaler se utiliza para dividir la frecuenciadel Timer 0 o el Watchdog.

    PSA asigna el uso del prescaler. Si PSA=1, el prescaler ser asignado al Watchdog (WDT). Si es 0 se asignar al Timer 0(TMR0).

    T0SE selecciona el disparo del Timer 0 cuando Timer 0 es usado con disparo externo (ver T0CS). Si T0SE=1 el Timer 0 seincrementar en el flanco positivo del pulso aplicado en el pin RA4/T0CKI. Si T0SE=0 el Timer 0 se incrementar en elflanco negativo del pulso.

    T0CS determina si el Timer 0 utilizar clock interno (ciclo de instrucciones, el cual es igual a CLOCK/4) cuando es igual acero. O bien clock externo desde el pin RA4/T0CKI cuando el mismo est en 1.

    INTEDG funciona en forma anloga a T0CS pero para seleccionar el disparo de la interrupcin en el pin RBO/INT. En estecaso si INTEDG=0, la interrupcin se disparar en el flanco negativo y si es igual a 1 lo har en el flanco positivo.

    RBPU se utiliza para habilitar o no las resistencias de PullUp internas del PORT B. Este PullUp estar activo cuandoRBPU=0.

  • TR-Brain - Manual del usuario TodoRobot_______________________________________________________________________________________________________

    ___________________________________________________________________________________www.todorobot.com.ar 43

    INTCON - Registro de control de interrupcionesEste registro contiene los bits para habilitar las distintas fuentes de interrupciones disponibles en el PIC 16F84A.

    RBIF ser 1 cuando alguno de los pines RB4, RB5, RB6 o RB7 haya cambiado de estado (si esta interrupcin est activada -ver RBIE). Este bit debe ser borrado por software al responder a la interrupcin.

    INTF ser 1 cuando se haya detectado un pulso de disparo en el pin RBO/INT (si esta interrupcin est activada - verINTE). Este bit debe ser borrado por software al responder a la interrupcin.

    T0IF ser 1 cuando haya ocurrido un overflow (paso de FFh a 00h) en el Timer 0. Este bit debe ser borrado por software. RBIE activa o desactiva la interrupcin por cambio de estado disponibles en los pines RB4, RB5, RB6 y RB7. Est

    interrupcin estarn activas si RBIE=1. INTE activa o desactiva la interrupcin disponible en el pin RB0/INT. Est interrupcin estar activa si INTE=1. T0IE activa o desactiva la interrupcin causada por el overflow del Timer 0. Si T0IE=1 la interrupcin estar activa. EEIE habilita la interrupcin generada por el proceso de grabacin en la memoria EEPROM del PIC cuando es igual a 1. GIE=1 habilitar el uso de las interrupciones (habilitadas independientemente). GIE=0 deshabilitar el uso de todas las

    interrupciones, mas all del estado de cada bit en particular.

    OTROS REGISTROS ESPECIALESEl registro INDF que ocupa la posicin 00h no est implementando fsicamente y, como se ha explicado, se le referencia en eldireccionamiento indirecto de datos aunque se utiliza el contenido de FSR.FSR se ubica en la direccin 04h y se usa para contener las direccin del dato en las instrucciones con direccionamientoindirecto.Los registros PORTA y PORTB contiene el estado actual de los Puertos A y B de E/S. Pueden ser ledos y escritos comocualquier otro registro y manejan los valores de los bits que entran y salen por los pines de E/S del microcontrolador. TRISA y TRISB contiene los bits para configurar los puertos de Entrada/Salida PORT A y PORT B respectivamente. Cuando elbit correspondiente est en 1, ese pin estar configurado como una entrada. Y ser una salida cuando el bit correspondiente esten cero.

    B1.5 - Puertos de entrada / salidaLos microprocesadores PIC16F84A tienen dos puertos de entrada/salida paralelo de usos generales llamados PORT A yPORT B . El PORT A es de cinco bits (RA0 a RA4) y el PORT B es de 8 bits (RB0 a RB7).

  • TR-Brain - Manual del usuario TodoRobot_______________________________________________________________________________________________________

    ___________________________________________________________________________________www.todorobot.com.ar 44

    PORT A:El la figura 1.5.1 y 1.5.2 se aprecian los circuitos equivalentes al PORT A:

    Fig. 1.5.1 - Circuito equivalente a los pines RA0 a RA3 Fig. 1.5.2 - Circuito equivalente al pin RA4

    PORT A es un puerto de entrada salida de 5 bits. La direccin de cada pin es controlada por el registro TRISA, un "1" indica queel pin correspondiente a ese bit ser una entrada y un "0" indica que ese pin ser una salida.Los pines RA0 a RA3 se comportan como una entrada salida estndar TTL. RA4 es compartido con la entrada de clock externopara el Timer 0 y se comporta como una entrada del tipo Schmitt Trigger y como un colector abierto al funcionar como salida.

  • TR-Brain - Manual del usuario TodoRobot_______________________________________________________________________________________________________

    ___________________________________________________________________________________www.todorobot.com.ar 45

    PORT B:El las figuras 1.5.3 y 1.5.4 se aprecian los circuitos equivalentes al PORT B:

    Fig. 1.5.3 - Circuito equivalente a los pines RA0 a RA3 Fig. 1.5.4 - Circuito equivalente al pin RA4

    PORT B es un puerto de entrada salida de 8 bits. La direccin de cada pin es controlada por el registro TRISB, un "1" indica queel pin correspondiente a ese bit ser una entrada y un "0" indica que ese pin ser una salida.Los pines RB0 a RB7 se comportan como una entrada/salida estndar TTL. RB0 se comporta como una entrada Schmitt Triggercuando es usado como fuente de interrupcin (INT0)Cada pin del PORT B posee una resistencia de PullUP., la cual puede ser activada poniendo a "0" el bit RBPU del registroOPTION.Los pines RB4 a RB7 poseen la funcin adicional de interrupcin por cambio de estado, si esta es activada (ver registroINTCON). A su vez RB0 tambin puede ser usada como fuente de interrupcin externa (ver INTCON).

  • TR-Brain - Manual del usuario TodoRobot_______________________________________________________________________________________________________

    ___________________________________________________________________________________www.todorobot.com.ar 46

    B1.6 Temporizador/Contador (TMR0):

    Este dispositivo, llamado Timer / Counter, es bsicamente un contador de 8 bits, constituido por el registro operacional TMR0que se encuentra en la posicin 01 de la memoria de datos. Este registro puede usarse para contar eventos externos por medio deun pin de entrada RA4/T0CK (modo contador) o para contar pulsos internos de reloj de frecuencia constante (modo timer).Adems, en cualquiera de los dos modos, se puede insertar un prescaler, es decir un divisor de frecuencia programable que puededividir por 2, 4, 8, 16, 32, 64, 128 o 256. Este divisor puede ser utilizado alternativamente como prescaler del TMR0 o comoprescaler del Watchdog Timer, segn se lo programe.Para su programacin se dispone de dos registros: el TMR0 ya mencionado y el registro OPTION. Este registro contiene los bitsnecesarios para seleccionar modo contador o modo timer, flanco de conteo en modo contador, prescaler para TMR0 o para WDTy constante de divisin del prescaler.

    A continuacin se muestra un circuito equivalente del TMR0 y el prescaler.

    En el esquema se puede observar claramente como operan los bits de configuracin T0SE, T0CS y PSA, en cualquiera de suscombinaciones. Se observa adems que en la entrada del contador TMR0 hay un circuito de sincronizacin que introduce unademora de dos ciclos del clock de instrucciones (Fosc. / 4). Al escribir sobre el TMR0 automticamente se resetea este circuito,por lo tanto solo se incrementar dos ciclos despus.El prescaler es un contador asincrnico de 8 bits ms un multiplexor 8 a 1 comandado por los bits PS0 a PS2, que permiteseleccionar como salida a cualquiera de los bits del contador. Al escribir sobre el TMR0, si este est programado para operar conprescaler (PSA=0), se borra automticamente el prescaler. Las instrucciones CLRWDT y SLEEP borran el prescaler, si este estprogramado para operar como prescaler del Watchdog timer (PSA=1).

  • TR-Brain - Manual del usuario TodoRobot_______________________________________________________________________________________________________

    ___________________________________________________________________________________www.todorobot.com.ar 47

    B1.7 Interrupciones:

    Los PIC 16F84A agregan la posibilidad de contar con sistema de interrupciones. Este sistema consiste en un mecanismo por elcual un evento interno o externo, asincrnico respecto del programa, puede interrumpir la ejecucin de ste produciendoautomticamente un salto a una subrutina de atencin, de manera que pueda atender inmediatamente el evento, y retomar luegola ejecucin del programa exactamente en donde estaba al momento de ser interrumpido. Este mecanismo es muy til porejemplo para el manejo de timers o rutinas que deben repetirse peridicamente (refresh de display, antirebote de teclado, etc.),deteccin de pulsos externos, recepcin de datos, etc.

    FuncionamientoEn los PIC 16F84A las interrupciones se comportan casi exactamente igual que las subrutinas. Desde el punto de vista delcontrol del programa, al producirse una interrupcin se produce el mismo efecto que ocurrira si el programa tuviese un "CALL 0004h" en el punto en que se produjo la interrupcin. En uno de los registros de control del sistema de interrupciones (INTCON)existe un bit de habilitacin general de interrupciones GIE, que debe ser programado en 1 para que las interrupciones puedanactuar. Al producirse una interrupcin, este bit se borra automticamente para evitar nuevas interrupciones. La instruccinRETFIE que se utiliza al final de la rutina de interrupcin, es idntica a un retorno de subrutina, salvo que adems coloca en unoautomticamente el bit GIE volviendo a habilitar las interrupciones. Dentro de la rutina de interrupcin, el programa deberprobar el estado de los flags de interrupcin (ver registro INTCON) de cada una de las fuentes habilitadas, para detectar cual fuela que causo la interrupcin y as decidir que accin tomar.

    Fuentes de interrupcin:La seal que produce la interrupcin es en realidad una sola, que resulta de la combinacin de todas las fuentes posibles y de losbits de habilitacin.Las fuentes de interrupcin posibles son:

    Interrupcin externa por pin RB0/INT Desborde del Timer 0 Cambio en el estado de los bits 4 a 7 del puerto B Escritura de EEPROM finalizada

  • TR-Brain - Manual del usuario TodoRobot_______________________________________________________________________________________________________

    ___________________________________________________________________________________www.todorobot.com.ar 48

    B1.8 - Programa fuente:

    El programa fuente est compuesto por una sucesin de lneas de programa. Cada lnea de programa esta compuesta por 4campos separados por uno o ms espacios o tabulaciones. Estos campos son:

    [Etiqueta] Comando [Operando(s)] [;Comentario]

    La etiqueta es opcional. El comando puede ser un mnemnicos del conjunto de instrucciones. El operando est asociado alcomando, si no hay comando no hay operando, e inclusive algunos comandos no llevan operando. El comentario es opcionalpara el compilador aunque es buena prctica considerarlo obligatorio para el programador.La etiqueta es el campo que empieza en la primer posicin de la lnea y termina con ":". No se pueden insertar espacios otabulaciones antes de la etiqueta sino ser considerado como un comando. Este identifica la lnea de programa haciendo que elcompilador le asigne un valor automticamente. Si se trata de una lnea cuyo comando es una instruccin de programa delmicrocontrolador, se le asigna el valor de la direccin de memoria correspondiente a dicha instruccin (location counter). Enotros casos se le asigna un valor de una constante, o la direccin de una variable, o ser el nombre de una macroinstruccin, etc.El comando puede ser un cdigo mnemnicos de instruccin del microcontrolador, o una directiva o pseudoinstruccin para elcompilador. En el primer caso ser directamente traducido a cdigo de maquina, en el segundo caso ser interpretado por elcompilador y realizara alguna accin en tiempo de compilacin como ser asignar un valor a una etiqueta, etc.El campo de parmetros puede contener uno o ms parmetros separados por comas. Los parmetros dependen de la instruccino directiva. Pueden ser nmeros o literales que representen constantes o direcciones.El campo de comentario debe comenzar con un caracter punto y coma. No necesita tener espacios o tabulaciones separndolo delcampo anterior, e incluso puede empezar en la primer posicin de la lnea. El compilador ignora todo el texto que contenga lalnea despus de un caracter punto y coma. De esta manera pueden incluirse lneas que contengan solo comentarios, y es muybuena prctica hacer uso y abuso de esta posibilidad para que los programas resulten autodocumentados.

  • TR-Brain - Manual del usuario TodoRobot_______________________________________________________________________________________________________

    ___________________________________________________________________________________www.todorobot.com.ar 49

    B1.9 - Conjunto de instrucciones:El conjunto de instrucciones de los microprocesadores PIC 16F84A consiste en un pequeo repertorio de solo 33 instruccionesde 14 bits, que pueden ser agrupadas para su estudio en tres a cinco grupos. Hemos optado por clasificarlas, desde el punto devista del programador, en cinco categoras bien definidas de acuerdo con la funcin y el tipo de operandos involucrados.En primer lugar se agrupan las instrucciones que operan con bytes y que involucran algn registro de la memoria interna. Ensegundo lugar se analizaran las instrucciones que operan solo sobre el registro W y que permiten cargarle una constante implcitao incluida literalmente en la instruccin (literales). En tercer lugar se agrupan las instrucciones que operan sobre bits individualesde los registros de la memoria interna. En cuarto lugar se clasifican las instrucciones de control de flujo del programa, es decirlas que permiten alterar la secuencia lineal de ejecucin de las instrucciones. Por ltimo se agrupan unas pocas instrucciones quellamaremos especiales, cuyas funciones o tipos de operandos son muy especficos y no encajan en ninguna de las clasificacionesanteriores.

    Instrucciones de Byte que operan con RegistrosEstas instrucciones pueden ser de simple o doble operando de origen. El primer operando de origen ser siempre el registroseleccionado en la instruccin, el segundo, en caso de existir, ser el registro W. El destino, es decir donde se guardara elresultado, ser el registro seleccionado o el W, segn se seleccione con un bit de la instruccin.

    El indicador de destino denominado d, permite especificar donde se almacenar el resultado de una operacin.Si d = 1 el resultado se guardara en el registro seleccionado. Si d = 0 el resultado se guardara en W.

    Las instrucciones siguientes son las tres operaciones lgicas de doble operando :

    ANDWF f,d ;operacin AND lgica IORWF f,d ;operacin OR lgica XORWF f,d ;operacin XOR lgica

    Los nombres mnemnicos de estas instrucciones provienen de:

    AND W con FInclusive OR W con FExclusive OR W con F.

    Las que siguen son las cuatro operaciones aritmticas y lgicas sencillas de simple operando :

    MOVF f,d ;movimiento de datosCOMF f,d ;complemento lgicoINCF f,d ;incremento aritmticoDECF f,d ;decremento aritmtico

    Los mnemnicos de estas instrucciones provienen de:

    MOVe FileCOMplement FileINCrement FileDECrement File.

    En las siete instrucciones anteriores el nico bit afectado de la palabra de estado del procesador es el Z, qu