Autor Tema: eeprom externa + pic 16f877a  (Leído 5655 veces)

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

Desconectado japifer_22

  • PIC18
  • ****
  • Mensajes: 405
eeprom externa + pic 16f877a
« en: 02 de Diciembre de 2009, 17:40:56 »
hola a todos de nuevo, esta vez acudo a la sabiduría de ustedes por el tema de las memorias eeprom externas del pic. pero el punto de esto es que e leído y leído y leído sobre el tema, sin obtener buenos resultado, no se si será mi comprensión o en realidad es complicado o mas bien medio enredado esto de trabajar con estos dispositivos. bueno estoy asiendo un pequeño programa (una agenda), el cual de él se obtiene unos string de distintas dimensiones pero con un máximo de 40 caracteres, y estos los quiero guardar para poder acceder a ellos en el momento que los solicite, además de poder borrar estos caracteres, si es que ya no me sirven, es por esto que pretendo usar una eeprom externa para guardar estos string que se van generando a petición del usuario. el problema es que no entiendo como guardar los distintos string que se van generando, en la eeprom externa. ahora bien. ¿como puedo ir almacenando los distintos string que genero en la eeprom?, esto sin que ocupe espacian en el pic??
el código que estoy realizando para esto es solo de prueba y lo dejo acá para que lo vean. este solo hace que mediante un teclado matricial 4x4 pueda ingresar números, y esto lo va almacenando en un string denominado clave, el cual tiene como limite máximo de caracteres de 40 números. los valores pulsado como bien dije se guardan en clave pero al presionar la letra 'D' del teclado, el programa copia lo que tiene en ese momento el string clave a un segundo string, llamado string y luego de copiar los datos se borra el string llamado clave dejando solo el contenido en string. donde pretendo que los valores obtenidos por clave se almacenen en la eeprom externa, pero esto formando distintos string para cada ves que se le ingrese valores a clave. la idea es que a medida que ingreso datos al string clave, estos datos guardarlo en una "variable" y almacenarlo en la eeprom externa, para poder ocupar estos datos en el momento X que sea solicitado por el usuario, para así poder ver por una lcd lo que escribió el usuario en el momento X.

Código: [Seleccionar]
char clave[40],string[40],c;
signed char i;
int longitud,a;

///PROGRAMA
void main(void)
{
lcd_init();         //inicializa, o activa lcd
for(i=0;i<40;i++){
      do{               //espera hasta...
         c=kbd_getc();  
         }while(c==0);   //...pulsar una tecla
         if(c=='D'){
                    strcpy( string, clave );//Copia el contenido de cadena2 en cadena1                  
                    strcpy( clave,"                                "); // borra string llamado clave
                    break;
                   }
      clave[i]=c;               /
if(i<20){
lcd_gotoxy(1,1);
printf(lcd_putc,"%s",clave);
}else{
lcd_gotoxy(-19,2);
printf(lcd_putc,"%s",clave);
}
   }

lcd_gotoxy(1,1);
printf(lcd_putc,"separando la cadena ");
delay_ms(800);
printf(lcd_putc,"\f");

longitud=strlen(string); //devuelve el número de caracteres que tiene la cadena (sin contar el '\0').

if(longitud>18){
lcd_gotoxy(1,1);
printf(lcd_putc,"%s",string);
lcd_gotoxy(-19,2);
printf(lcd_putc,"%s",string);
}else{
lcd_gotoxy(1,1);
printf(lcd_putc,"%s",string);
}
}

PD: bueno esto lo estoy haciendo para agregárselo al reloj que hice hace algunos días atrás XD ->un reloj bastante enamoradiso.... para la reconsiliacion esta de lujos XD
« Última modificación: 02 de Diciembre de 2009, 17:46:02 por japifer_22 »

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: eeprom externa + pic 16f877a
« Respuesta #1 en: 02 de Diciembre de 2009, 17:58:52 »
Puedes hacerlo de la siguiente manera suponiendo una memoria externa I2C 24256:

Código: C
  1. #include <24256.c>
  2. char String[20]="pepe pompin";
  3. char i;
  4. long Direccion;
  5.  
  6.  
  7. i=0;
  8. Direccion=0; // Dependerá de otros mensajes ya guardados.-
  9. do{
  10.     write_ext_eeprom(Direccion++,String[ i ]);
  11. }while(String[++i]!='\0');


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado japifer_22

  • PIC18
  • ****
  • Mensajes: 405
Re: eeprom externa + pic 16f877a
« Respuesta #2 en: 02 de Diciembre de 2009, 18:30:15 »
hola suky gracias por la respuesta. entiendo lo que mensionas, pero la dura ahora es ¿con lo que acavas de poner, esta listo el pic para guardar los datos en la eeprom externa?? ademas ahora como puedo leer los datos guardado en la memoria ??
saludos!
« Última modificación: 02 de Diciembre de 2009, 18:32:16 por japifer_22 »

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: eeprom externa + pic 16f877a
« Respuesta #3 en: 02 de Diciembre de 2009, 18:38:59 »
Bueno, por aquí hay algo del bus I2C para que entiendas un poco más de como funcionan estos dispositivos con éste protocolo.

Para leer, la librería de 24256.c (por ejemplo, hay otras) tiene la función read_ext_eeprom(direccion) que devuelve el byte guardado en esa posición.


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado japifer_22

  • PIC18
  • ****
  • Mensajes: 405
Re: eeprom externa + pic 16f877a
« Respuesta #4 en: 02 de Diciembre de 2009, 18:57:49 »
:-/ :-/ :-/ :-/ :-/ :-/ gracias suky, entonces ahora aver que sale de todo esto. gracias :-/ :-/ :-/ :-/ :-/

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: eeprom externa + pic 16f877a
« Respuesta #5 en: 02 de Diciembre de 2009, 23:50:19 »
Hola.

Es recomendable dejar un delay entre escritura y escritura de unos 5mS -el dato exacto esta en la hoja técnica de la memoria-.

Código: C
  1. #include <24256.c>
  2. char String[20]="pepe pompin";
  3. char i;
  4. long Direccion;
  5.  
  6.  
  7. i=0;
  8. Direccion=0; // Dependerá de otros mensajes ya guardados.-
  9. do{
  10.     write_ext_eeprom(Direccion++,String[ i ]);
  11.     delay_ms(5);//Tiempo para que grabe correctamente
  12. }while(String[++i]!='\0');

Saludos

El papel lo aguanta todo

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: eeprom externa + pic 16f877a
« Respuesta #6 en: 02 de Diciembre de 2009, 23:53:12 »
Hola.

Es recomendable dejar un delay entre escritura y escritura de unos 5mS -el dato exacto esta en la hoja técnica de la memoria-.

MLO_, la librería realice el test del estado de la memoria, y no es necesario la demora  ;-)


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: eeprom externa + pic 16f877a
« Respuesta #7 en: 02 de Diciembre de 2009, 23:55:51 »
Sip, recién ahora lo veo.

Buen dato señor Suky  ;-)
El papel lo aguanta todo

Desconectado jamasari

  • PIC10
  • *
  • Mensajes: 32
Re: eeprom externa + pic 16f877a
« Respuesta #8 en: 28 de Noviembre de 2011, 21:38:19 »
y como seria para leer cadenas