Как я могу передать строку для записи EEPROM сначала и прочитать в коде как:
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
}
У меня может быть много ошибок здесь из-за меньшего количества знаний. Уточните, получили ли вы их. Моя проблема в основном состоит в том, чтобы передать строку в EEPROM_write() и передать ее в main из EEPROM_print(). Любая помощь приветствуется.
Переменные, хранящиеся в EEPROM на AVR на C, должны быть помещены в .eeprom
секцию.
( Из 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)
Чтобы сохранить переменную в EEPROM и получить к ней доступ, вам нужно что-то вроде:
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));
}
Вот учебник.
Спасибо всем за вашу большую помощь. На самом деле я получил свое решение от:
http://mainframe.cx/~ckuethe/avr-c-tutorial/lesson11.c . Я отредактировал код как
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
того, что не является локальным для метода. Прочитайте вопрос и ответ здесь: stackoverflow.com/questions/6441218/…
Маженко
Бишал Паудель
Тоби Джеффи
Бишал Паудель
Маженко
Бишал Паудель
Бишал Паудель
Маженко