Programación Específica > Microcontroladores

 Memorias Externas

(1/2) > >>

vane_ccs:
Hola a todos....

estoy trabajando con una memoria externa (24AA256) y realice unas rutinas para leer y escribir en dicha memoria (desde el pic 18F4620)... las cuales funcionan perfectamente... ahora mi problema es... que no se que hacer para borrar todo lo que escribi y poner la memoria en blanco  :unsure:  :unsure:  :unsure:

Las rutinas estan hechas en C... y estoy usando el compilador C18.

Gracias de Antemano,

Cualquier ayuda que me puedan prestar... se los agradeceria...  

 :comp:  :comp:  :comp:

© Jonathan ©:
Deberias hacer un bucle while de escritura.. escribes en todas las direcciones el valor 0x00.. porque no tienen segun tengo entendido un modo reset.. me cuentas.. :)

vane_ccs:
Gracias Jonathan un millon....lo voy a intentar y aviso...  ;)

Saludos.  :D

vane_ccs:
Hola!, ya hice la rutina que borra la memoria con un bucle...  :bravo:   :gracias:

Ahora tengo otro problema que resolver  :brickwall:   :ouch: .... Como conte en el post inicial ya hice la rutina que lee, pero esta solo lee una pagina dandole la direccion.  

Estoy tratando de leer una serie de paginas de memoria seguidas. Mediante un bucle hago que se pongan automaticamente las direcciones de paginas de manera consecutiva, en orden......

El problema es que cuando corro la simulacion en proteus, me lee nada mas la primera pagina y de la segunda solo muestra la condicion de start....

No se que pueda estar pasando...lo esta haciendo nada mas para la primera pagina.

Lo de las direcciones automaticas consecutivas lo uso tambien para la escritura y funciona bien, por eso me extrana esto.  :think:

Esta es la rutina que estoy usando...


--- Código: Text --- void leerTodoMem(void){   signed char i,contador=0;  unsigned char addressH = 0x00;  unsigned char addressL = 0x00;     for(i=0;i<16;i++){                ReadSQMem(0xA0,addressH,addressL,data_rd,5);      putsXLCD(data_rd);                     if(contador==3){      contador = 0;      addressH = AddH(addressH);             addressL = AddL(contador,addressL);    }    else{      contador++;        addressL = AddL(contador,addressL);      }    }  }  
Y estas son las rutinas que uso


--- Código: Text --- unsigned char AddH(unsigned char addHActual){  return(addHActual+1);} unsigned char AddL(signed char cont,unsigned char addLActual){   switch(cont){        case 0: addLActual = 0b00000000;          break;    case 1: addLActual = 0b01000000;          break;    case 2: addLActual = 0b10000000;          break;    case 3: addLActual = 0b11000000;          break;            }   return (addLActual);}  
Ojala me puedan ayudar  :ayuda:

Saludos.

vane_ccs:
Hola, acabo de hacer una prueba leyendo dos paginas de la memoria, una lectura despues de la otra y pasa lo mismo....


--- Código: Text ---                 ReadSQMem(0xA0,0x02,0xC0,data_rd,5);  SetDDRamAddr(0x00);  putsXLCD(data_rd);   ReadSQMem(0xA0,0x03,0x80,data_rd,5);  SetDDRamAddr(0x00);  putsXLCD(data_rd);  
Pense que podria ser que necesito esperar un tiempo antes de volver a leer pero nop hace lo mismo. <_<

Que puede estar pasando????  :huh:

Por favor, si a alguien se le ocurre algo y tiene mas experiencias con memorias de este tipo....ayudenme un poquito.  ;)

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa