ELECTRONICA Y COMPUTACION - UN PIC POR DENTRO - DIAGRAMA EN BLOQUES DEL 16F84
   
  Muchas veces hemos hablado de los microcontroladores de Microchip, de su unidad aritmética y lógica (ALU), de sus memorias, registros y temporizadores pero ¿cómo es realmente por dentro un PIC? En esta nota describiremos la función que cumple cada bloque interior de estos chips, lo que nos permitirá familiarizarnos aún más con ellos.
   
  - DESARROLLO
   
  El diagrama en bloques de un PIC típico (usamos como ejemplo nuestro viejo y querido PIC16F84) se muestra en la figura 1.

En la parte inferior izquierda del dibujo, podemos observar el bloque correspondiente al juego de temporizadores de nuestro microcontrolador, el que se amplía en la figura 2.
   
 
 
   
 
Note que existe un circuito generador de tiempos que está comandado por las patas externas del microcontrolador correspondiente al oscilador que son OSC1 y OSC2.

Observamos también un juego de temporizadores que tienen que ver con el encendido del sistema: el arranque, el reset, el circuito de referencia y el circuito de vigilancia o watchdog (perro guardián). El temporizador de encendido (figura 3), actúa de forma tal que cuando se detecta una tensión de alimentación, se espera un determinado tiempo antes de que empiece a funcionar a pleno el microcontrolador para evitar los rebotes que se producen por chispas en el interruptor de encendido. De la misma manera cuando uno aplica un reset externo por algún motivo, el temporizador de arranque hace que el sistema aguarde un tiempo, por razones similares a las que explicamos también con el temporizador de encendido, el circuito de reset (figura 4) es quien lleva a "0" a todos los registros correspondientes a nustros microcontroladores.

Por último, el circuito de vigilancia o watchdog (figura 5), es el encargado de avisarnos cada vez que el programador ha realizado una operación no válida, es decir que ha programado una línea de memoria que está prohibida aunque también nos dice que por algún motivo se tarda un tiempo mayor al estipulado por el programa. En ese caso se establece un reset automático.

Cabe aclarar que estoy "simplificando" la explicación de modo que pueda ser comprendido por quienes recién se inician en el tema y que en rigor de la verdad "los bloques no realizan estas tareas tan simplemente".

Este tema lo he extraído del video: "Todo Sobre PICs Volumen 1" en la versión que hemos editado este año, razón por la cual, si desea conocer más en detalle lo que digo puede recurrir a esta cinta, la cual también se encuentra disponible en formato VCD y DVD para que pueda ser reproducido por una computadora o por un reproductor de DVD hogareño.

Siguiendo con la explicación del diagrama en bloques de la figura 1, en la parte superior observamos la memoria del programa, es una EEPROM que es recargable por tensión hasta 1.000.000 de veces y que contenga palabras de 14 bits (figura 6). Estos 14 bits se corresponden a los 6 bits de direccionamiento y a los 8 bits de datos, la capacidad de esta memoria es de 1024 palabras que posee una comprensión de 14 bits (los que están en tema saben que uno de los bits de los que llamamos de direccionamiento es en realidad un bit de control).

También se puede analizar el registro de instrucciones que es el que "desglosa" las instrucciones propiamente dichas, para saber qué es lo que se debe hacer con la línea de programa que se está analizando en un determinado ciclo (figura 7) y si debe enviar los datos al multiflexor que será el encargado de cargar a nuestra unidad aritmética lógica.
   
 
   
 

El contador de programa (figura 8) es el que sigue los pasos lógicos de programación, cuanta de 1 en 1 cada vez que se detecta un ciclo de reloj.

La pila o stack (figura 9) es la encargada de mantener la información del paso del programa en el que se encontraba en ese momento el operador, en caso de que sea llamado a una subrutina o que el programa sea interrumpido por alguna causa preestablecida por programa. De tal manera de que cuando se vuelva de la subrutina o la interrupción, el contador de programa irá a buscar la dirección de prosecución del programa a nuestra stack (pila).

   
 
   
  Cada vez que estemos realizando una operación de suma, por ejemplo, en forma lógica ingresan el contenido del registro de trabajo y el contenido del multiplexor, que tiene cargado el valor (o apunta) de una dirección de memoria en específico; de esta manera se realiza la operación y se mandará el resultado hacia donde lo indique la instrucción del paso de programa que se está ejecutando.

Vemos en la parte superior de la figura 1, una serie de registros y multiplexores especiales que se utilizan para funciones especiales, como por ejemplo, trabajos encadenados entre microcontroladores, o cuando se está procesando posiciones de memoria adicionales entre los cuales puedo utilizar las 32 posiciones que corresponden a una memoria ID RAM de este microcontrolador (figura 11).
   
 
 
  En la parte derecha tenemos una serie de registros y temporizadores libres, que pueden ser utilizados para funciones específicas y pueden ser comandados por una línea externa. La memoria de datos, que en este caso es muy particular, es una EPROM.

Por último, nos encontramos con la interface que permite que el microcontrolador se comunique con el exterior, esta interface consta de 2 puertos A y B, el port A posee 5 patas y el port (puerto) B tiene 8 patas. Cada una de estas 13 patas en total, puede servir como entrada o salida de datos (figura 13).
   
 
 
 
   
  Ya conocemos el diagrama en bloques del PIC 16F84, ahora vamos a ver a qué corresponde cada uno de los bloques internos en correlación a los patas de nuestro microcontrolador (vea la figura 14). Entre las patas 5 y 14 se coloca la tensión de alimentación, en la pata 5 se conecta el potencial de masas y VDD que corresponde a una tensión de 5V se conecta en la pata 14. Esta es la tensión que hay que aplicarle al PIC para que el circuito funcione correctamente, en realidad se puede aplicar una tensión comrpendida entre 4 y 6V.

La pata 4 corresponde al Master Clear, es decir, al reset externo (maestro) del microcontrolador, pero "es un master clear mentiroso" porque además de ser reset nos permite cargar o leer la memoria de programa. Cuando tiene en la pata 4 una tensión de nivel de masa el sistema está reseteado, cuando está a un nivel de VDD funciona correctamente, y cuando en la pata 4 aplicamos una tensión comprendida entre 13 y 14V, estamos preparando al microcontrolador para que pueda ser leída o se pueda escribir su memoria de programa.

Entre las patas 15 y 16 se coloca la señal correspondiente para que funcione el temporizador interno, es decir la señal de reloj. Esa señal puede estar establecida por un cristal, un circuito RC o una señal externa. En cuanto a las patas correspondientes a los puertos de entrada y salida de datos en la pata 17 tenemos el correspondiente al bit menos significativo del puerto A, es decir A0, en la pata 18 tenemos el bit A1.

En la pata 1 del microcontrolador tenemos el bit de entrada o salida A2 y en la pata 2 está el bit A3 que es el bit más significativo del port A.

En cuanto a la puerta B en las patas 7, 8, 9, 10, 11, 12 y 13 tenemos los bits correspondientes a dicho pórtico.

De esta manera, hemos dado una explicación simplificada de los bloquesa que constituyen un PIC16F84. Si desea bibliografía más extensa la puede encontrar en nuestra web, en la página de contenidos especiales, con la clave: aiwa15.
   
 
Autor: Ing. Horacio Daniel Vallejo - e-mail: hvquark@ar.inter.net