TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: carmalcoz en 16 de Febrero de 2004, 22:23:00
-
Saludos, alguien ha trabajado con memorias (I2C) Microchip 24aa512 con un 877a? Me gustaria saber que problemas tuvieron al implementar la escritura en estas memos.
La cuestion es que yo escribo/leo de maravillas en las 24lc64 que son mas pequeñas, pero en las grandes solo BASURA
....
Cualquier consejo o pista seria de gran ayuda.
-
Yo uso las 24LC256. Te sirven las mismas rutinas, ya que el direccionamiento está dentro del rango en ambas.
Lo único es que las AA son mas lentas que las LC, por lo que tendrás que usar I2C en modo slow (100KHz). Con eso casi te aseguras que haya tiempo para escribir-leer.
Otra cosa, asegurate de que tienes bien la dirección del dispositivo.
Las rutinas que uso son para C.
Saludos!!
-
Saludos y gracias por atender mi pregunta,
Utilizo las mismas rutinas en la grande y en la pequeña. En el PCB cambio una memo por otra en el mismo puesto.
PERO no he logrado escribir ni un solo caracter y menos una pagina en la grande. Tu utilizas algun tipo de retardo para la escritura?
He estado leyendo el pdf de la 24aa512 y lo unico diferente que encontre con respecto a la pequeña (24lc64) es que recomiendan conectar el WP (a Vcc o Vss). Sera que por ahi es?
pd: en este preciso momento estoy sin cautin!
-
Hola carmalcoz si tus rutinas escriben paginas enteras , ten en cuenta que la 24C64 tiene 32 bytes y la 24C512 128bytes por pagina .
saludos.
-
Mis rutinas para la 24lc64 escriben paginas de 32 bytes perfectas y estas mismas no deberian presentar ningun conflicto con la 24aa512. Ahi esta lo extraño
.... Quisera saber si alguno de ustedes han experimentado con la memos 512.
pd: aun no he soldado el pin WP a Vss a ver que pasa, espero sea eso....
-
Pues te cuento que yo la estoy usando con el pin WP al aire. Se puede poner a Vss, Vcc o flotante. Si lo dejas flotante es lo mismo que si lo llevas a Vss, osea desprotegida. No creo que sea eso. Aunque es cierto que no se recomienda para algunas aplicaciones, según he leído en el data.
Y por todo lo demás es igual que la 64, la 128, la 256. Todas se direccionan con dos bytes, aunque en las inferiores a 512 se desprecien algunos bit, los más altos del MSB, como es lógico. Pero las rutinas son las mismas. Lo único que varía son el tamaño de las páginas.
La verdad es que no entiendo por que no te funciona, si dices que para la 64 lo hacía.
Suerte!
-
Mis rutinas para la 24lc64 escriben paginas de 32 bytes perfectas y estas mismas no deberian presentar ningun conflicto con la 24aa512.
-----------------------------------------------------------------------------------
Si usas la 24aa512 tienes que olvidarte de las paginas de 32 bytes
y mandarle 128 bytes antes de cualquier bit de stop (en el caso de que programes paginas enteras).
START - CONTROL BYTE - ADDRESS HIGH BYTE - ADDRESS LOW BYTE - DATA BYTE 0 ...................DATA BYTE 127 - STOP
suerte.
-
Gracias a todos por sus aportes
. Ya conecte WP a Vss pero el problema persiste (me estoy desesperando
). Quiero aclarar esto: Para poder escribir una pagina debe ser del tamaño permitido por la memo, ni + ni -. POR FAVOR podrian darle un vistazo a mi codigo (es simple y pequeño) para ver si es que estoy descuidando algun detalle del proceso. Gracias de antemano.
http://correo.puj.edu.co/cmuriel/linux/memoi2c.asm
pd: este el codigo que uso para la 24lc64
-
aqui esta la solucion .....
modifique tu codigo en donde estan los ateriscos estaba el error asi como esta me funciono
saludos
CALL SEND_BYTE
MOVF I,W ;Se envia la direccion del registro de ontrol
CALL SEND_BYTE
** call SEND_NACK ;ojo ojo ojo
** CALL SEND_STOP ;ojo ojo ojo CALL SEND_START ;Comienza MOVLW b"10100011" ;Se CALL SEND_BYTE
CALL READ_BYTE ;lee byte de la MOVWF TEMPW
....... !!QUE BUEN PEZ!! (buscando a nemo?
)
-
aqui esta el codigo
#$#$#$ pff el maldito cuadrito de abajo que dice fichero adjunto no me perimte subir el codigo lla modificado para mejor comprencion
en fin espero y se aclare tu duda ...
-
el foro está ya sin espacio para adjuntar. Hay unos almacenes creados para eso... Pero para dejar un código mejor pégalo aquí.
Para que al pegarlo no pierda el formato y salgan los molestos caretos por similitud con el codigo, pulsa sobre la almohadilla (#) y aceptas. Luego pega el código en medio del la secuencia que crea eso. Y ya saldrá el código con formato.
La almohadilla está arriba justo de donde escribes el mensaje cuando contestas.
Saludos!!
-
Bueno ahi ba :
bajen el codigo del link de por alla arriba
y en donde estan las linias del la parte de el ciclo de lectura (BUCLA2)
Codigo:
CALL SEND_BYTE
Codigo:
MOVF I,W
Codigo:
CALL SEND_BYTE
incerta lo siguiente y listo el codigo funciona ....
Codigo:
call SEND_NACK
Codigo:
CALL SEND_STOP
eso era todo creo que era por que la eeprom debia de escbibir la direccion que querias leer antes de poder leer el dato de la localidad
QUE BUEN PEZ!! (FINDInG NEMO)
-
Les cuento que habia dejado de lado las memorias 512 y estaba trabajando con las 256 que el codigo del link SI les funciona. Ahora intentare de nuevo probar con la ultima recomendacion de al303576 a ver que logro y estare informandoles.
Gracias por su interes...
-
chekalo ... si no te jala por aca estare.... OK