Buenos días a todos!
Estoy tratando de realizar la comunicación con el protocolo I2C.
Maestro: PIC16F88.
Esclavo: Memoria externa EEPROM 24C256.
Como el 16F88 tiene incorporado en su hardware el módulo I2C el caso sólo es configurarlo para que trabaje con este protocolo. Pero es aquí donde tropecé, ya que por mas que leo el datasheet del 16F88 y he buscado información en el foro, no he podido hacerle trabajar al micro en este modo.
Configuré los siguientes registros de la siguiente manera:
SSPCON = 0011 1011
(los 4 bits menos significativos indican al micro que trabaje como maestro según su datasheet).
SSPSTAT = 0000 0000
(los 6 bits menos significativos son banderas y por lo tanto son sólo de lectura).
SSPADD (no configuro, mantiene la dirección a la cual queremos acceder en el esclavo; pero en su modo de 10 bits ya no sé como trabajar con él ).
SSPBUF (no configuro, registro donde se almacena un dato que se va a transmitir)
La EEPROM externa ya la tengo grabada, ya que el grabador que tengo tiene este hardware y sólo tuve que escribir el byte que quiero comunicar. Estoy programando en ensamblador.
Me podría alguien decir cuál es la manera correcta de configurar este PIC para este protocolo?? Tal vez algún pequeño ejemplo?
Adjunto el esquema para explicarme mejor en mi problema.
Gracias y muchos saludos!
Para explicarme mejor he hecho un programa como ejemplo.
En este ejemplo no utilizo la memoria externa (ya que no pude hacerla trabajar), pero sí envío datos serialmente desde una TABLA que tengo en el código.
Es lo mismo que quiero hacer, sólo que con la memoria externa.
En el archivo adjunto está el circuito en PROTEUS y el archivo.HEX
Alguna sugerencia? Estaré atento a cualquier comentario al respecto.
Chau.
Estoy tratando de realizar la comunicación con el protocolo I2C.
Maestro: PIC16F88.
Esclavo: Memoria externa EEPROM 24C256.
Como el 16F88 tiene incorporado en su hardware el módulo I2C el caso sólo es configurarlo para que trabaje con este protocolo. Pero es aquí donde tropecé, ya que por mas que leo el datasheet del 16F88 y he buscado información en el foro, no he podido hacerle trabajar al micro en este modo.
Configuré los siguientes registros de la siguiente manera:
SSPCON = 0011 1011
(los 4 bits menos significativos indican al micro que trabaje como maestro según su datasheet).
SSPSTAT = 0000 0000
(los 6 bits menos significativos son banderas y por lo tanto son sólo de lectura).
SSPADD (no configuro, mantiene la dirección a la cual queremos acceder en el esclavo; pero en su modo de 10 bits ya no sé como trabajar con él ).
SSPBUF (no configuro, registro donde se almacena un dato que se va a transmitir)
La EEPROM externa ya la tengo grabada, ya que el grabador que tengo tiene este hardware y sólo tuve que escribir el byte que quiero comunicar. Estoy programando en ensamblador.
Me podría alguien decir cuál es la manera correcta de configurar este PIC para este protocolo?? Tal vez algún pequeño ejemplo?
Adjunto el esquema para explicarme mejor en mi problema.
Gracias y muchos saludos!
Para explicarme mejor he hecho un programa como ejemplo.
En este ejemplo no utilizo la memoria externa (ya que no pude hacerla trabajar), pero sí envío datos serialmente desde una TABLA que tengo en el código.
Es lo mismo que quiero hacer, sólo que con la memoria externa.
En el archivo adjunto está el circuito en PROTEUS y el archivo.HEX
Alguna sugerencia? Estaré atento a cualquier comentario al respecto.
Chau.
Adjuntos
Última edición: