PIC16F876A modulo MSSP y memoria I2C 24C256 [ASM]

#1
Estoy perdido, aquí dejo el programa y simulación en PROTEUS, en el archivo .bin estan escritos desde el número 1 al 16 de forma secuencial desde la pagina 0 y posición 0, el cual pretendo sacar por los leds. Se trata de acceder a la memoria externa en modo de sólo lectura mediante el módulo MSSP, y no soy capaz, a ver si alguien me puede iluminar.
 

Adjuntos

#2
Saludos.
Adjunto dos ejemplos para trabajar con el módulo MSSP en un 16F877A (Te sirve para el 16F876A)
En uno escribo la memoria con algún dato, leo el dato guardado y lo mando al puerto B
En el otro, leo la memoria secuencialmente y muestro los datos en el puerto B

Para el segundo ejemplo realice una librería para acceder a las funciones.

Nota:
Los ejemplos son para memorias del tipo Standard (Hasta 2416) No para Smart Serial como la 24256
Pero te pueden servir de base para realizar tu proyecto.

Estuve trabajando sobre un programa para las memorias Smart, pero aún no lo tengo terminado.
Para este tipo de memorias se tienen que enviar dos datos de dirección. El MSB y el LSB para accesarlas.

Espero te sirvan los ejemplos.

Suerte.
 

Adjuntos

Última edición:
#4
D@rkbytes, he estado probando tu simulación en PROTEUS y funciona correctamente, y me ha llamado la atención que cuando quitaba el debbuger, al darle de nuevo al PLAY dejaba de funcionar, ¿a que es debido?.
 
#5
Agradezco tu aporte D@rkbytes, gracias, intentaré adaptarlo para memorias tipo 24C256.
De nada. :apreton:
Para facilitarnos algunas cosas; Microchip tiene a disposición siempre información sobre sus productos.
Con información de la Nota de Aplicación AN976, puedes entender el protocolo y usarlo en tu proyecto.
Esa es la información que pienso usar para realizar mi proyecto pendiente con las memorias Smart. :cool:
D@rkbytes, he estado probando tu simulación en PROTEUS y funciona correctamente, y me ha llamado la atención que cuando quitaba el debbuger, al darle de nuevo al PLAY dejaba de funcionar, ¿a que es debido?.
Eso es debido a que para trabajar con el módulo MSSP se tienen que configurar como entradas RC3 y RC4.
Y al quedar el bus con las líneas en alto, me supongo que la memoria en proteus deja de funcionar.
Para resolver ese detalle de simulación, coloca otras dos resistencias de valor doble hacia VSS (Pull-Down)

Nota:
En las simulaciones hay que establecer la frecuencia del oscilador del PIC a 20MHz,
que se me paso cambiar debido a que use un diseño anterior. :D

Suerte.
 
Última edición:
#6
Hola D@rkbytes! como andas?? Espero que bien. Te cuento que tu programa para conectar la memoria 2416 me vino de lujo. Justo estoy usando el PIC16F877a y por cuestiones de falta de memoria tuve que usar este camino. Tengo la siguiente duda que estaria muy agradecido si me la podes aclarar. Estoy usando un cristal de 4 Mhz, ¿que registros debo modificar y como?¿El de los retardos?
Desde ya MUCHAS GRACIAS:)
 
#7
Hola D@rkbytes! como andas?? Espero que bien. Te cuento que tu programa para conectar la memoria 2416 me vino de lujo.
Hola, saludos.
Me encuentro bien gracias a Dios. Espero que también te encuentres bien.
Tengo la siguiente duda que estaria muy agradecido si me la podes aclarar. Estoy usando un cristal de 4 Mhz, ¿que registros debo modificar y como?
Lo que debes cambiar para que funcione a 4 MHz, es esta parte...
Código:
; Para 4 MHz.
TXMODE    EQU 0x24    ; TXSTA = 00100100
RXMODE    EQU 0x90    ; RCSTA = 10010000
BAUD    EQU 0x19    ; SPBGR = 00011001
Para obtener el valor de BAUD, que se aplicará al registro SPBRG, se usa esta fórmula:

Para ahorrarse el trabajo de la calculadora, diseñe este programa: SPBRG Calc.

Suerte.
 
Arriba