miércoles, 16 de mayo de 2012

Memoria del programa

Memoria de programa (PIC)
 
El microcontrolador está diseñado para que en su memoria de programa se almacenen todas las instrucciones del programa de control. Ya que el contenido del programa siempre es el mismo, pues este debe estar grabado en forma "permanente".

Existen algunos tipos de memoria adecuados para soportar estas funciones, de las cuales se citan las siguientes:


- ROM con máscara: se graba mediante el uso de máscaras. Sólo es recomendable para series muy grandes debido a su elevado coste.


- EPROM: se graba eléctricamente con un programador controlador por un PC. Disponen de una ventana en la parte superior para someterla a luz ultravioleta, lo que permite su borrado. Puede usarse en fase de diseño, aunque su coste unitario es elevado.


- OTP: su proceso de grabación es similiar al anterior, pero éstas no pueden borrarse. Su bajo coste las hacen idóneas para productos finales.


- EEPROM: también se graba eléctricamente, pero su borrado es mucho más sencillo, ya que también es eléctrico. No se pueden conseguir grandes capacidades y su tiempo de de escritura y su consumo es elevado.

- FLASH: se trata de una memoria no volátil, de bajo consumo, que se puede escribir y borrar en circuito al igual que las EEPROM, pero que suelen disponer de mayor capacidad que estas últimas.

Son recomendables aplicaciones en las que es necesario modificar el programa a lo largo de la vida del producto. Por sus mejores prestaciones, está sustituyendo a la memoria EEPROM para contener instrucciones.

De esta forma Microchip comercializa dos microcontroladores prácticamente iguales que sólo se diferencian en que la memoria de programa de uno de ellos es tipo EEPROM y la del otro tipo Flash. Se trata del PIC16C84 y el PIC16F84, respectivamente.


En la figura siguiente se observan los tres bloques en los que esta dividido el Mapa de Memoria de programa del PIC, los 8 niveles de stack, los vectores de memoria como el Reset, o el de interrupcion,ademas de cada una de las paginas de la memoria, los vectores El que lleva el control de el uso de la memoria es el PC (Program Counter) de 13 bit capaz de accesar una memoria de 8Kx14 bit.









El Vector de interrupcion es el 0004H, ahi es la parte del programa a donde el micro ira despues de cualquier interrupcion.



Memoria de programa externa


 
En clase comentabamos sobre si había posibilidad de expandir la memoria de programa de los microcontroladores, investigando encontré que se puede conectar una memoria externa para poder realizar el almacenamiento ahí.

Se trata de la memoria 24LC256A fabricada por Microchip.  

El pinout de la memoria es el siguiente:






Esta es una memoria que tiene un tamaño de 32 Kbytes, su estructura está organizada en palabras de 1 byte (8 bits) de longitud, por lo tanto dispondremos en total de 32x8=256 kbits para almacenar información.

La característica principal de esta memoria es que implementa el interfaz I2C para su comunicación serie con otros dispositivos electrónicos.



Protocolo I2C 


El protocolo I2C fue desarrollado por la empresa Philips, ahora llamada NXP, hace ya bastante tiempo impulsado por la necesidad en el mercado de establecer una interfaz que comunicara entre si varios dispositivos electrónicos y que ahorrara el máximo numero de patillas en los componentes, hay mucha información en la red sobre este protocolo por lo que solo voy ha citar a modo de resumen las características que considero mas relevantes acerca de este protocolo. Al final del artículo pondré los enlaces a varias fuentes para el que quiera profundizar en este protocolo de comunicación.



Características básicas del protocolo I2C


  • El bus de comunicación utiliza dos cables. Uno para transmitir los datos (SDA) y otro para la señal de reloj (SCL). Ambas líneas se tienen que conectar a la alimentación (Vcc) a través de resistencias Pull-UP (en el esquema del ejemplo se muestra el conexionado). Además la masa de los componentes que se interconexionan entre si debe de ser común.


  • El protocolo de comunicación es del tipo Maestro-Esclavo, aunque el protocolo permite que haya varios maestros, lo normal es que solo haya uno, el dispositivo que hace de maestro es el que gobierna la comunicación y es el que controla la señal de reloj (SCL). Los dispositivos que hacen de esclavos responden a las peticiones del maestro.



  • Cada dispositivo conectado al bus se identifica por una única dirección, el protocolo admite utilizar 7 ó 10 bits para el direccionamiento, aunque lo normal es que sean siete.


Sería muy buena practica implementar este tipo de memorias externas para almacenar código de nuestros programas (aunque no se ocupe), con fin didáctico.

Les dejo una liga en la que realizan la conexión y comunicación de un PIC con esta memoria, la comunicación la realizan en C, y con el compilador CCS:

http://www.aquihayapuntes.com/indice-practicas-pic-en-c/comunicacion-serie-i2c-entre-pic-y-eeprom-24lc256a.html


También encontré otra página donde realizan la conexión y comunicación de una memoria de esta misma familia, pero con un Arduino, para más detalles pueden visitarla:

http://www.hispavila.com/3ds/atmega/i2c-eeprom.html


Saludos!



1 comentario: