¿Cómo pasar la cadena para la escritura EEPROM para ATMega32? (en el siguiente código)

3

¿Cómo puedo pasar una cadena para escribir primero en EEPROM y leer el código como:

int main() 
{ 
    char display[30];    
    EEPROM_writedata(display); 
    LCD_senddata(0,EEPROM_print(1));//this wont work 
    LCD_senddata(0,display); //this works fine 
    return 1; 
} 

void EEPROM_writedata(char* name) 
{ 
    eeprom_update_block((const void *)name,(void*)1,20);    
}

char* EEPROM_print(int i) 
{ 
    char* send; 
    eeprom_read_block((void*)send,(const void*)1,10); 
    return send; 
} 

LCD_sendata(int, char*) 
{ 
    //codes for LCD initialize upto print 
} 

Es posible que tenga muchos errores aquí debido a un menor conocimiento. Por favor especifique si los obtiene. Mi problema es principalmente pasar la cadena a EEPROM_write () y pasarla a main desde EEPROM_print (). Cualquier ayuda es apreciada.

    
pregunta Bishal Paudel

2 respuestas

1

Las variables almacenadas en la EEPROM en los AVR en C deben colocarse en la sección .eeprom .

(De enlace avr _eeprom.html )

#define     EEMEM   __attribute__((section(".eeprom")))
void        eeprom_write_block (const void *__src, void *__dst, size_t __n)

Para almacenar una variable en EEPROM y acceder a ella, desea algo como:

char EEMEM myVar;

void writeMyVal(char c)
{
  eeprom_write_block(&c, &myVar, sizeof(myVar));
}

void readMyVal(char *c)
{
  eeprom_read_block((void*)c, &myVar, sizeof(myVar));
}

Aquí hay un tutorial.

    
respondido por el Toby Jaffey
1

Gracias a todos por su excelente ayuda. Realmente obtuve mi solución de:
enlace Edité el código como

 int main()
 {
 char display[30],write[]="write something inside EEPROM";
 EEPROM_writedata(&write); //initially, EEPROM_writedata(write);
 LCD_senddata(0,EEPROM_print(1));
 LCD_senddata(0,&display); //initially, LCD_senddata(0,display);
 return 1;
 }
    
respondido por el Bishal Paudel

Lea otras preguntas en las etiquetas