TODOPIC
Bienvenido(a), Visitante. Por favor, ingresa o regístrate.
¿Perdiste tu email de activación?
26 de Octubre de 2014, 02:56:30

Ingresar con nombre de usuario, contraseña y duración de la sesión
Buscar:     Búsqueda Avanzada
350320 Mensajes en 39301 Temas por 41053 Usuarios
Último usuario: jlondono
* Inicio Ayuda Buscar Calendario Ingresar Registrarse
Buscar en TodoPIC
+  TODOPIC
|-+  Microcontroladores PIC
| |-+  Todo en microcontroladores PIC (Moderadores: marmatar, maunix, MGLSOFT, Modulay, pocher, Sasián, Suky)
| | |-+  Grabar y Leer una Eeprom 24lc256
0 Usuarios y 1 Visitante están viendo este tema. « anterior próximo »
Páginas: [1] Marcar como favorito Imprimir
Autor Tema: Grabar y Leer una Eeprom 24lc256  (Leído 5684 veces)
avefenix586
PIC10
*
Desconectado Desconectado

Peru Peru

Mensajes: 9


« : 15 de Diciembre de 2009, 21:41:49 »

Hola a todos quisiera solicitar una ayuda para poder grabar y leer una memoria i2c 24c256, estoy aprendiendo a programar pics en Basic de Pic simulator ide , el cual me parece muy practico y sencillo de utilizar , aunque he visto ejemplos para programar esta memoria al ponerlos en practica no me programa mas que solo las 255 primeras posiciones de memoria a travez de un 16f628, cuando quiero grabar por encima de los 255 no se si el programa se planta o la memoria deja de responder, estoy tratando de manejar la capacidad completa de esta memoria para un proyecto que implica un editor de texto portatil soportado en un pic , una pantalla lcd de 16 x2 lineas y un teclado matricial de unas 40 teclas miniaturas, un acceso serial  y hacerlo trabajar con una bateria recargable de tal modo que sea un equipo portatil,  el uso que quiero darle a este equipo es para utilizarlo por ejemplo en la calle , en el auto en el transporte (largas distancias) podria por ejemplo un estudiante tomar el equipo portatil y traspasar sus apuntes del papel al equipo, a travez de un teclado cuasi/qwerty simplificado , mas que en estudiantes lo haba pensado para mi para ir escribiendo mis borradores en ese tiempo muerto de casa al trabajo, para cuando llegue a mi computadora poder volcar el contenido de la 24ls256 como un archivo de texto y hacer el respectivo copy paste y agregados ya en la pc, este equipo deberia ser compacto, economico mas adelante podria agregarsele mas funcionalidades como una calculadora , agenda etc, por lo pronto que sirva para poder ingresar texto de corridoy almacenarlo en la eeprom.
 asi que nesesitaria alguna forma de poder grabar y leer estra memoria de preferencia en basic de pic simulator ide, pero si alguien quiere tomar este proyecto y hacerlo en c seria tambien excelente .
« Última modificación: 15 de Diciembre de 2009, 21:45:28 por avefenix586 » En línea
Suky
Moderador Local
DsPIC33
*****
Desconectado Desconectado

Sexo: Masculino
Argentina Argentina

Mensajes: 6774


Con Qt...


WWW
« Respuesta #1 : 15 de Diciembre de 2009, 21:47:14 »

Seria interesante ver el código que has desarrollado para ver donde falla  Confused

Saludos!
En línea

septiembre_negro
PIC18
****
Desconectado Desconectado

Sexo: Masculino
Mexico Mexico

Mensajes: 310


La vida es aquello que te va sucediendo mientras e


« Respuesta #2 : 15 de Diciembre de 2009, 21:58:11 »

Deberías de colocar el código con el que estas probando para que alguien te pueda ayudar aquí hay grandes mentes pero asta donde yo se nadie es bidente o tiene poderes síquicos Mr. Green lol lol lol lol
Me parece curioso que solo te grave asta 255 ya que este es el valor máximo de una variable tipo byte.  Si para gravar la memoria lo estas asiendo dentro de un bucle for y el incremento lo haces con una variable tipo byte ya tienes tu respuesta.
Saludos
En línea
avefenix586
PIC10
*
Desconectado Desconectado

Peru Peru

Mensajes: 9


« Respuesta #3 : 16 de Diciembre de 2009, 00:00:13 »

Hola gracias por responder , aqui les pego el codigo que encontre y estube probando para grabar y leer la memoria es para un pic16f628a

AllDigital

Dim addr As Word
Dim data As Byte

Symbol sda = PORTA.2
Symbol scl = PORTA.3

TRISA = %00001100
TRISB = 00000000
PORTB = 00000000

'aqui se escribe en la memoria externa
For addr = 0 To 1023

data =  addr + 1

I2CWrite sda, scl, 0xa0, addr, data
WaitMs 50
PORTB = data

Next addr

WaitMs 50


For addr = 0 To 1023

I2CRead sda, scl, 0xa0, addr, data
WaitMs 50
PORTB = data

Next addr

End


este el codigo con el que he estado probando grabar la memoria, probe con una 24c04, 24c08 y luego una 24c256 con el mismo resultado, se graba numeros consecutivos en la memoria mientras estos se muestran en el portb del 16f628 y luego se lee el contenido dela memoria y tambien se muestra por el portb, pero funciona bien mientras que el bucle es de 0 a 255, en cuanto empieze a probar con valores altos el resultado fue que la salida permanecia todos en nivel alto en el portb,  asi que no entiendo cual es el problema con esas instrucciones de  I2CRead sda, scl, 0xa0, addr, data o es que solo sirven para direcciones de 1 byte?

aunque a pesar de este percance podria seguir continuando con los demas modulos del teclado y el  lcd quizas , pero quiero seguir haciendolo en el codigo basic del pic simulator ide
« Última modificación: 16 de Diciembre de 2009, 00:05:01 por avefenix586 » En línea
septiembre_negro
PIC18
****
Desconectado Desconectado

Sexo: Masculino
Mexico Mexico

Mensajes: 310


La vida es aquello que te va sucediendo mientras e


« Respuesta #4 : 16 de Diciembre de 2009, 17:29:31 »

OK ya así con código es fácil mirar tu error, la  parte de la memoria esta bien tienes una variable tipo Word lo que te permite leer y escribir  asta la dirección de memoria 6000 y tantos no recuerdo bien el valor de la variable.  Tu problema esta en que estas visualizando el dato por el puerto b, el puerto b es un registro de 8 BIT que es un byte cuyo valor máximo es 11111111=255 e aquí  el porque  ya no puedes leer un dato mayor a 255, además de que cada casilla de la memoria es también un byte. Por lo cual es imposible escribir en una casilla de memoria un dato mayor a 255.
 De donde tomaste ese ejemplo en alguna parte debe explicar que esta diseñado para gravar y leer asta 255.
 Así que si quieres gravar datos de más de 8 bits  tienes que direccional de a 2 casillas y escribir y leer la parte alta y baja de tu dato.
Otro punto no puedes cambiar  el tipo de memoria ya que cada memoria tiene una dirección única, por lo cual si cambias el tipo de memoria sin poner su dirección especifica en el código nunca va a funcionar.

En línea
avefenix586
PIC10
*
Desconectado Desconectado

Peru Peru

Mensajes: 9


« Respuesta #5 : 23 de Diciembre de 2009, 18:00:06 »

gracias `por tu respuesta, estube haciendo otras pruebas como por ejemplo usando un lector de memorias 24cxx con ponyprog, cuando el programa trabaja con ADDR dentro del margen de 0 a 255 , puedo leer con el ponyprog que efectivamente la memoria se a grabado correctamente, pero luego vuelvo a las pruebas y aumento el bucle de de ADDR de 0 a 1023 con una memoria 24c08 el puerto B se queda todos en nivel alto , saco la memoria para comprobar el contenido en el ponyprog y resulta que no se grabo mas que los 2 o 3 primeros bytes  de forma incorrecta y el resto no se altero en contenido (todos en FF), luego cambie la linea "data =  addr + 1" por algo asi "data =  55" con lo cual en todas las 1024 posiciones de memoria deberia grabarse un 55 pero igual el puerto B se queda en nivel alto y al nuevamente comprobar con el ponyprog me encuentro que el mismo resultado de solo 3 posiciones grabadas y el resto en FF y todo esto ocurre incluso con "For addr = 0 To 256" basta con atravezar la barrera de los 255 para que se venga abajo el programa, en el manual de instrucciones basic del oshon no es muy completo o del todo claro, habra otra rutina completa ya comprobada para leer y grabar estas memorias en toda su extension?
En línea
ASTROCAR
PIC24F
*****
Desconectado Desconectado

Sexo: Masculino
Venezuela Venezuela

Mensajes: 642


MI NUEVO JUGUETE GPS


« Respuesta #6 : 23 de Diciembre de 2009, 23:30:02 »

hola buenas noches nose a que te refieres con el programador de ponyprog y trabajar en el magen de 0 a 255 pero lo que si estoy claro es que usted tiene la variable data con byte y es logico ya que los datos de las eeprom i2c son de tipo byte pero luego tienes la direccion addr como word es decir 16 bit y en tu bucle o ciclo haces el conteo con esa variable y la vas agregando a data que es byte y hay un momento en que addr sobre para el byte y por eso data no lo soporta y es por eso que ves solo ff porque ya es su maximo valor; mira bien tu proceso de incremento:
data=addr+1, recuerda que addr es word y tu la vas incrementando en el For addr = 0 To 1023 cosa que no es valido ya que hay un momento que addr pasa en valor de byte a word y ese valor ya no lo soporta data porque es byte.

Saludos y dejame sacar un rato de tiempo para hacer una practica con la eeprom i2c 24c256 y simulo en proteus y seria bueno si podemos visualizar lo leido en terminar del compilador yo en mi caso lo hare en proteus que es basic ya que no uso el compilador al cual usted hace referencia o tambien lo puedo hacer en ccs pero siempre simulado en proteus.

Atten. Alexander Santana.
Venezuela-Barcelona.
En línea

EL APRENDER ES NADA; MEJOR ES COMPARTIR EL APRENDIZAJE
avefenix586
PIC10
*
Desconectado Desconectado

Peru Peru

Mensajes: 9


« Respuesta #7 : 27 de Diciembre de 2009, 02:35:00 »

Hola gracias por responder, mira le hize una modificacion al codigo para probar

AllDigital

Dim addr As Word
Dim data As Byte

Symbol sda = PORTA.2
Symbol scl = PORTA.3

TRISA = %00001100
TRISB = 00000000
PORTB = 00000000

'aqui se escribe en la memoria externa
For addr = 0 To 255

data =  55

I2CWrite sda, scl, 0xa0, addr, data
WaitMs 50
PORTB = data

Next addr

WaitMs 50


For addr = 0 To 255

I2CRead sda, scl, 0xa0, addr, data
WaitMs 50
PORTB = data

Next addr

End

quedo asi para probar, efectivamente se graba el valor "55" en todas las 255 posiciones de memoria, pero en cuanto puse el bucle a tan solo For addr = 0 To 256, empezo las sopresas , parecio como que la grabacion terminara y volviera a repasar por la direccion 0 y 1 e incluso de forma erratica pues aparecen otros valores, empiezo a creer que la instruccion "I2CWrite sda, scl, 0xa0, addr, data" solo sirva para grabar hasta 255 direcciones nada mas. espero pronto el resultado de tu practica astrocar
En línea
cict electronic
PIC10
*
Desconectado Desconectado

Colombia Colombia

Mensajes: 2


« Respuesta #8 : 29 de Agosto de 2010, 12:46:31 »

hola soy nuevo en este foro pero me parece muy interesante, estoy interesado en el tema como leer y escribir la  eeprom 24c256 o otra parecida , lo que pasa es qu solo se programar en asm, agradeceria a alguien qu me pueda dar pistas de como hacerlo gracias.
En línea
Suky
Moderador Local
DsPIC33
*****
Desconectado Desconectado

Sexo: Masculino
Argentina Argentina

Mensajes: 6774


Con Qt...


WWW
« Respuesta #9 : 29 de Agosto de 2010, 14:23:28 »

hola soy nuevo en este foro pero me parece muy interesante, estoy interesado en el tema como leer y escribir la  eeprom 24c256 o otra parecida , lo que pasa es qu solo se programar en asm, agradeceria a alguien qu me pueda dar pistas de como hacerlo gracias.

Trabajaras con el módulo MSSP o por software? Utilizando el módulo puede ser más sencillo, en los dos casos necesitas entender que es y como trabajar con el protocolo I2C. Entendido eso pasar a controlar el microcontrolador generando, Start, Stop, Envio de datos, Ack, NAck, ReStart, ect. Y después trabajar con la memoria, junto a su hoja de datos, para escribirla o leerla.


Saludos!
En línea

oscarvg
PIC10
*
Desconectado Desconectado

Peru Peru

Mensajes: 2


« Respuesta #10 : 16 de Julio de 2012, 00:54:26 »

hola a  todos soy relativamente neuvo en el tema de las memorias epron y veo que ya no han seguido respondiendo al tema. Disculpen que les incomode pero tengo unas dudas, el programa de esta lineas arriba se graba en el pic o el la memoria epron (.hex). disculpen mi poco conocimiento.
En línea
Suky
Moderador Local
DsPIC33
*****
Desconectado Desconectado

Sexo: Masculino
Argentina Argentina

Mensajes: 6774


Con Qt...


WWW
« Respuesta #11 : 16 de Julio de 2012, 11:24:42 »

El programa se graba en el micro  wink
En línea

oscarvg
PIC10
*
Desconectado Desconectado

Peru Peru

Mensajes: 2


« Respuesta #12 : 16 de Julio de 2012, 15:26:54 »

en gracias pro al respuesta...en la  memoria se graba algun programa aparte entonces?...o el pic es el que va grabando amedida que va corriendo el programa. si se graba algo en la memoria como seria?
En línea
Suky
Moderador Local
DsPIC33
*****
Desconectado Desconectado

Sexo: Masculino
Argentina Argentina

Mensajes: 6774


Con Qt...


WWW
« Respuesta #13 : 16 de Julio de 2012, 16:33:29 »

en gracias pro al respuesta...en la  memoria se graba algun programa aparte entonces?...o el pic es el que va grabando amedida que va corriendo el programa. si se graba algo en la memoria como seria?

Te recomiendo que busques un tutorial y dediques a leer bastante del tema  wink
En línea

TODOPIC
   

 En línea
Páginas: [1] Imprimir 
« anterior próximo »
Ir a:  

Impulsado por MySQL Impulsado por PHP Powered by SMF 1.1.20 | SMF © 2006-2008, Simple Machines XHTML 1.0 válido! CSS válido!
Página creada en 0.04 segundos con 24 consultas.