TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: grid en 17 de Septiembre de 2007, 15:07:41
-
Hola a todos
Llevo un buen rato investigando sobre la memorias y el pic y bueno ya heche a andar 1 memoria ya la leo y escribo datos y todo va bien hasta ahora (pero es muy importante mecnionar que todo ha sido con la ayuda del foro, es muy bueno :)) pero tengo un pequeño problema tengo que trabajar con mas de 4 memorias pero no se como hacer para trabajar con las 4, lo que entiendo es que es con un par de for el primero que barra todos los datos hasta la ultima localidad que en mi caso es la 65535 ya que es un 24c512 y el otro for es para cambiar a cada memoria pero tal vez mi duda es un poco tonta pero como le digo en este for como que pase a la siguiente memoria y no sobreescriba en la primera. Alguien me puede ayudar??? por favor
-
Buenas Grid
Si aportas el esquematico que usas y el código que estas implementando se te podrá ayudar mejor.
Pero de todas maneras pásate por la magnifica web de RedPIC (Saludos tocayo ;) )
http://picmania.garcia-cuervo.net/Proyectos_AUX_EEPROM_1.php
Saludos!
Diego J.
-
Gracias Diego y creo que si olvide poner el esquematico y el codigo ya revise el link y en cuestion de cableado asi lo tengo apenas estoy revisando el codigo porque no le entiendo muy bien pero aun asi les envio el diagrama y el codigo lo tengo sencillo solo para una memoria ya que no se como meterlo para las 4 espero y me puedan guiar un poquito. En realidad la duda es como direcciono o bien como le digo que tome una y despues otra y despues otra
y el codigo es el siguiente solo es la parte donde borro toda la memoria porque es un poco largo pero puedo escribir todo de todos modos este codigo es parecido a uno que encontre en el foro :lol:
case 'b':
printf("Borrando memoria...\n\r");
//output_high(PIN_B0);
datomem=read_ext_eeprom(0);
//output_low(PIN_B0);
if(datomem!=255);
{
datomem=read_ext_eeprom(1);
if(datomem!=255)
{
for(i=0;i<65535;i++)
{
write_ext_eeprom(i,0xFF);
}
output_high(PIN_B0);
}
}
yo pienso que deberia de quedar algo asi
case 'b':
printf("Borrando memoria...\n\r");
//output_high(PIN_B0);
datomem=read_ext_eeprom(0);
//output_low(PIN_B0);
if(datomem!=255);
{
datomem=read_ext_eeprom(1);
if(datomem!=255)
{
for (a=0;a<4;a++) :-)
pero no se que instruccion debe ir aqui para decirle que es la segunda memoria[/font]
for(i=0;i<65535;i++)
{
write_ext_eeprom(i,0xFF);
}
output_high(PIN_B0);
}
}
El driver es el de la 24c256 pero solo esta adaptado para la 512
-
No se si estoy equivocado pero no necesitas manejar las memorias por comando i2c si es mas de 1? es decir i2c_write(0xA(direccion_de_la_memoria)), de todas maneras grid lee el link que puso djpalas es sumamente util, al principio uno cree que manejar el bus i2c es dificil pero despues resulta extremadamente facil
-
Grid: El hilo completo, y depurado, en el foro es Circuito y Driver C para 4 Memorias EEPROM 24AA1025 con un total de 512 Kbytes (http://www.todopic.com.ar/foros/index.php?topic=14328.0)