Autor Tema: Leer/Escribir en memoria eeprom de 1Mb con PIC BASIC PRO  (Leído 3502 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado loperibaracrifex

  • PIC10
  • *
  • Mensajes: 1
Leer/Escribir en memoria eeprom de 1Mb con PIC BASIC PRO
« en: 05 de Julio de 2015, 23:41:57 »
Muy buenas. Soy nuevo en el foro y estoy tratando de hacer la consulta completa de la memoria EEprom externa 24FC1025 de 1Mb con Pic basic Pro y proteus como simulador.
Sin embargo el pic basic pro solo soporta hasta la variable tipo WORD (desde 0 hasta 65535 o desde 0000h hasta FFFFh), lo cual no me permite hacer la lectura/escritura  COMPLETA de la memoria externa recién mencionada.

El código para leer o escribir con el protocolo I2C en Pic basic pro es:

I2CWRITE SDA, SCK, Control, Dirección, [datos]            (escribir en la eeprom)
I2CREAD   SDA, SCK, Control, Dirección, [datos]            (Leer en la eeprom)

Se que la variable "Control" es tipo byte y es igual a $A0 en mi caso, por otro lado la variable "Dirección" (Que es la variable que direcciona al PIC al lugar de la eeprom para Lectura y/o escritura) debe ser del tipo WORD  y es ALLI donde tengo el problema porque como llega hasta  65535 (FFFFh) me quedo corto y no hallo la forma de seguir con lectura/escritura en la memoria y/o direcciones restantes.

Ante este problema quiero preguntar:

Necesariamente tendré que cambiarme de lenguaje que soporte una variable mas grande como tipo LONG para hacer la consulta completa?? o

 ¿Hay algún método con Pic Basic pro para hacer la consulta completa?

Espero que me ayuden

De antemano muchas Gracias

Saludos :(

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1297
Re:Leer/Escribir en memoria eeprom de 1Mb con PIC BASIC PRO
« Respuesta #1 en: 17 de Noviembre de 2015, 15:49:15 »
Que tal loperibaracrifex,

Lograste resolver el problema de acceso para la memoria en cuestion?
Si no en realidad no tienes que cambiar de compilador para tener acceso a variables de tipo long.
Si te fijas bien en el datasheet, el bit que necesitas para accesar la segunda mitad de la memoria se encuentra en el byte de control.
La palabra de control esta dividida de la siguiente manera: 1 0 1 0 B0 A1 A0 R/W
El bit B0 sirve para seleccionar el bloque 0 o el bloque 1. Es como si tuvieras dos memorias de 512K, entonces cuando ese bit es cero estas accesando la primera mitad o el bloque cero. Y cuando ese bit lo pones en 1 entonces accesas la segunda mitad o el bloque 1. En otras palabras, es como si la meoria tuviera dos palabras de control, para la primera mitad es: 0XA0, y para la segunda mitad es: 0XA8.

Espero que esto te ayudo y no haber llegado tarde a la respuesta.

Saludos.

Elreypic.