¿Cómo podría pasar una cadena para escribir EEPROM primero 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
}
Puedo tener muchos errores aquí debido a menos conocimiento. Por favor, especifique si los recibe. Mi problema es principalmente pasar una cadena a EEPROM_write() y pasarla a main desde EEPROM_print(). Cualquier ayuda es apreciada.
Las variables almacenadas en la EEPROM de los AVR en C deben colocarse en la .eeprom
sección.
( De http://www.nongnu.org/avr-libc/user-manual/group_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.
Gracias a todos por su gran ayuda. De hecho, obtuve mi solución de:
http://mainframe.cx/~ckuethe/avr-c-tutorial/lesson11.c 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;
}
char *send
que no sea local para el método. Lea la pregunta y la respuesta aquí: stackoverflow.com/questions/6441218/…
Majenko
Bishal Paudel
toby jaffey
Bishal Paudel
Majenko
Bishal Paudel
Bishal Paudel
Majenko