proyectos electronicos con PIC

PIC16f84A: Estructura

¿QUE ES UN MICROCONTROLADOR? Es un dispositivo electronico compuesto de partes internas como memorias (RAM, EEPROM) registros, ALU(unidad logica arimetica) buses de entrada y salida, etc.

Un microcontrolador se puede programar para realizar distintas funciones controlar sistemas para la industria, ascensores, control motores DC, AC , PAP, alarmas etc, etc.  y lo que su imaginacion pueda crear para aplicarlo en cualquier campo de la industria.

 

¿QUE ES UN PIC? Un pic (circuito integrado programable) es un microcontrolador.

 

ESTRUCTURA BASICA DE UN PIC16f84a

El PIC 16F84 !!

 

Por fin llegamos a la parte interesante :-p. Ahora estudiaremos la estructura del PIC con el fin de entender mejor su funcionamiento. Empezaremos por lo más importante y luego iremos por partes.
El PIC puede presentarse en varios formatos:
- En encapsulado DIL (“Dual In Line” ó Doble En Línea), es el encapsulado tradicional, de toda la vida, y también el más grande y manejable. (Véase Figura 12).
- En encapsulado SOIC, para montaje superficial SMD, una tecnología de mayor integración que ocupa muy poco espacio, pero con un proceso de soldadura más difícil.

Figura 12. Formatos disponibles del PIC16F84

Ambos formatos disponen del mismo número de patillas: 18, y la disposición en ambos encapsulados es la misma (Véase Figura 13).


Figura 13. Disposición de las patillas

Vale, esto nos suena a chino, pues no hemos visto un chip de estos en nuestra vida, pero no te agobies, que pronto comprenderás su funcionamiento, y verás que es más fácil de lo que parece.

Una cosa más antes de seguir, que seguramente os inquiete a muchos: ¿Qué diferencias hay entre el PIC16F84 y el PIC16C84? La respuesta es que la diferencia radica en que el primero tiene memoria EEPROM, y el segundo en que es OTP.

 

5.1 MAPA DE MEMORIA

Anteriormente ya hemos explicado los tipos de memoria que existen. Es necesario que hayamos entendido su funcionamiento a la perfección en las lecciones dadas en el apéndice. Doy por hecho que ya te lo has mirado, y si no es así, retrocede, o de lo contrario no te vas a enterar de nada.
En el PIC se han implementado dos tipos de memoria RAM y EEPROM, la cual se divide en dos bloques, según los cánones de la arquitectura Harvard. No cuento más y pasamos a detallar cada una

 

MEMORIA RAM:

El microcontrolador PIC16F84 puede direccionar 128 posiciones diferentes de memoria RAM; pero Microchip Tecnologies solamente ha implementado 80 posiciones para este PIC. Donde digo que puede direccionar significa que puede acceder a ellas, pero si no se ha implementado más memoria, no se puede acceder?.
A partir de ahora, en el mundo del microcontrolador, a estas posiciones de memoria con una función concreta las llamaremos registros.
Esta memoria está dividida en dos partes o bancos, que a la vez están divididas en otras dos partes:
- Banco 0. Este banco está formado por 80 bytes. Si sabemos hexadecimal (código imprescindible para comprender el funcionamiento de la memoria y de los datos que almacenaremos), podemos decir que este banco está situado desde la posición 00 hasta la 4Fh, lo cual en cristiano viene a decir que ocupa desde la 0 a la 79 (el cero también cuenta ;-)).
• La primera parte consta de 12 registros que serán utilizados por funciones especiales del microcontrolador. Comienza en la dirección 00h y termina en la 0Bh, es decir, de la 0 a la 11. Es la sección de registros especiales.
• La segunda parte consta de 68 registros de memoria RAM que serán utilizados para almacenar datos temporales requeridos por los programas. Comienza en la dirección 0Ch y termina en la posición 4Fh (de la 12 a la 79). Esta parte es la memoria de registros de propósito general.
- Banco 1. Este banco tiene las mismas dimensiones que el anterior, pero su uso es menor, ya que no tiene banco para registros de propósito general. Solamente tiene una sección de registros especiales que van de la posición 80h a la 8Bh ( de la 128 a la 139). Por si no lo sabías o no te acordabas, la h minúscula se usa para indicar que estamos usando una numeración de base hexadecimal.
Este tipo de memoria (RAM), se caracteriza por perder los datos almacenados cuando desconectamos el microcontrolador o la tensión baja por debajo de los límites mínimos. Al igual que nuestro ordenador personal pierde los datos cargados en memoria, y cada vez que lo encendemos tiene que leerlos del disco duro.
La memoria RAM así como algunos registros especiales son los mismos en los dos bancos del mapa de memoria del PIC. La anchura de los bytes en la memoria es de 8 bis. En la Figura 14 nos podemos hacer una idea de cómo están distribuidos.

Figura 14. Mapa de registros. Veremos el funcionamiento de los registros especiales más adelante. De momento sólo nos preocupa saber cómo están distribuidos y qué posición ocupan.

MEMORIA DE PROGRAMA TIPO EEPROM (Electrical Erasable Programmable Read Only Memory)

Esta memoria tiene 1 K x 14 Bits de memoria tipo Flash. Esta memoria es la que utilizaremos para almacenar nuestro programa dentro del microcontrolador PIC16F84.
El tipo de memoria utilizada en este microcontrolador, podrá ser grabada o borrada eléctricamente a nuestro antojo desde el programador. La memoria tipo Flash tiene la característica de poderse borrar en bloques completos y no podrán borrarse posiciones concretas o específicas. Este tipo de memoria no es volátil, es decir, no pierde los datos si se interrumpe la energía (faltaría más;)).
La memoria para almacenar el programa nos resultará perfecta para realizar pruebas y experimentos, además de para la programación on-board (actualización del programa interno de chip sin necesidad de retirarlo del circuito de prueba).
En la Figura 15 se muestra como está organizada la memoria dentro del microcontrolador.

 

Figura 15. Figura 15. Mapa de memoria de programa


La memoria del programa comienza en la posición 000h y termina en la posición 03FFh. Esto es 1Kbyte, es decir, 1024 bytes (2¹º). Es este esquema aparece más elementos que no estaban en mapa de memoria RAM. Vamos a ver un poco por encima qué significan.
Donde pone PC es el Contador de Programa (o Program Counter, para los yankees). Este es el motor que hace que el programa avance, y que después de ejecutarse una instrucción, vaya a la siguiente, o a la que la instrucción anterior indica.
Hemos visto demasiadas veces la palabra instrucción y creo que ha llegado el momento de decir que significa. Para hacernos una idea podemos pensar en palabras sinónimas de instrucción, como orden o comando. Pues bien, si en la memoria RAM el programa guarda los registros, en la memoria EEPROM somos nosotros los que grabamos las instrucciones. Estas instrucciones son muy sencillas, ya que el procesador por sí sólo no es capaz de interpretarlas. Son del tipo “copia esto de aquí a allí” o “suma esto y lo otro”, de manera que con la combinación de varias instrucciones hagamos un proceso complejo.
Como vemos al principio de la tabla, en la posición 0000h está el vector de reset. Un vector es “algo que apunta a algo”, es decir, un comando que apunta a una posición de memoria, y que accede a ella ordenándoselo al PC. Como es el vector de reset, es lógico que apunte al principio de la memoria después de encenderse o resetearse.
Más arriba está la pila o stack. Su funcionamiento es algo complicado de entender a simple vista sin habernos introducido en el funcionamiento de las instrucciones que hacen uso de ella, pero fácilmente nos podremos hacer una idea. Podemos ver que hay varios niveles, en concreto 8 (Stack Level 1… Stack Level 8). Hay ocasiones en que, a través de una instrucción, ejecutamos un subproceso o subrutina, es decir, un conjunto de instrucciones que hemos aislado de las demás para simplificar (divide y vencerás, dicen). En este caso el contador de programa (PC) dejará de contar en su curso habitual e irá a la posición de memoria de programa donde empieza esta subrutina; en el primer nivel de la pila se almacenará esta llamada, hasta que se acaben de ejecutar las instrucciones que contiene, momento en el cual se seguirá con las instrucciones normales donde ha sido llamada. Es por que necesitamos saber donde se quedó, por lo que lo almacenamos en la pila. Podemos hacer hasta 8 llamadas a subrutinas una dentro de otra, como si de muñecas rusas se tratase. A esto se le llaman subrutinas anidadas.
Si seguimos sin entender como funcionan las subrutinas, y hemos tenido la oportunidad de programar en un lenguaje de alto nivel, como el C o el Pascal, he de decir que en el ensamblador las rutinas son como en C o en Pascal las funciones. Cuando llamamos a una función también consumimos un nivel de pila de nuestro ordenador. Todo esto suena bastante lioso, pero más adelante veremos que es más sencillo de lo que lo pintan (o de lo que yo lo pinto) y entonces miraremos atrás y nos reiremos de esto:p.

Una última cosa acerca de las instrucciones y de la memoria de programa, es que como las instrucciones son de 14 bits, los bytes de cada posición serán lógicamente de 14 bits.

Comentarios

me puden enviar proyectos en pic basic

Añadir un Comentario: