domingo, 21 de septiembre de 2014

8051 : Interfase at89S51 con eeprom 24C512

Los micros de la familia 8051/8052 no incluyen memoria eeprom; en el caso de los micros Atmega si se dispone de este tipo de memoria.
En el mercado hay disponibles memorias eeprom de interfase serial. Son chips muy económicos con capacidades de hasta 128KB y cuya conexión con el micro es a través del protocolo IC2 (serial basado en dos lineas de comunicación).
La memoria eeprom es útil cuando necesitamos guardar información y que la misma perdure aunque no tengamos conectada la fuente de alimentación al circuito. Un ejemplo muy conocido es un medidor de temperatura que registra las medidas durante un período de tiempo para luego realizar las observaciones pertinentes. La desventaja de estos chips es que la velocidad de escritura/lectura está en el orden de los milisegundos.
En nuestro ejemplo deseamos conectar una memoria Atmel 24C512 (64KB) con un micro at89s51.
En la imagen tenemos tres mini-protobroard . De izquierda a derecha:
  • Micro atmega644 funcionando como programador ISP (pueden observarse los cuatro cables) conectado a un ordenador a través del puerto serial (primera interfase serial/USB)
  • Micro at89S51 a 20MHz conectado mediante el puerto serie a un ordenador (segunda interfase serial/USB)
  • eeprom 24C512 con la dirección A0H (todos los pines a tierra).


La conexión de la memoria con el micro es la siguiente:
  1. Pines 1,2,3,4 y 7 a tierra (GND)
  2. Pin 8 a 5Voltios (Vcc)
  3. Pin 5 a puerto P2.1 del micro ( se requiere una resistencia pullup de 10KOhms a Vcc)
  4. Pin 6 a puerto P2.0 del micro ( se requiere una resistencia pullup de 10KOhms a Vcc)
A continuación un ejemplo de código en pascal que nos permite leer la memoria eeprom (el programa utiliza las unidades I2C y eeprom de Igor Funa Turbo51)

A continuación la unidad I2C:

A continuación la unidad eeprom:

Ambas unidades deben ser compiladas y los archivos con extensión .u51 deben copiarse en la misma carpeta donde se encuentra el ejecutable turbo51.exe

En la imagen un ejemplo de lectura de los posiciones 100 a 400 (decimal) mostrado en el terminal:

No hay comentarios:

Publicar un comentario