Код
#include <avr/io.h>
#include <avr/pgmspace.h>
typedef struct {
void *FPointerStruct; // указатель на следующую структуру
uint8_t FVariable;
} FData_t;
FData_t FData1, FData2; // объявим структуры
FData_t PROGMEM FData1 = {(void*)&FData2, 0xAA}; // поместим во Flash
FData_t PROGMEM FData2 = {(void*)&FData1, 0xBB};
uint8_t u08_Data1, u08_Data2;
int main(void)
{
FData_t *temp;
temp=(FData_t *)&FData1; // текущая структура FData1
u08_Data1=pgm_read_byte(&(temp->FVariable)); // читаем 0xAA
temp=(FData_t *)pgm_read_word(&temp->FPointerStruct); // текущая структура FData2
u08_Data2=pgm_read_byte(&(temp->FVariable)); // читаем 0xBB
}
#include <avr/pgmspace.h>
typedef struct {
void *FPointerStruct; // указатель на следующую структуру
uint8_t FVariable;
} FData_t;
FData_t FData1, FData2; // объявим структуры
FData_t PROGMEM FData1 = {(void*)&FData2, 0xAA}; // поместим во Flash
FData_t PROGMEM FData2 = {(void*)&FData1, 0xBB};
uint8_t u08_Data1, u08_Data2;
int main(void)
{
FData_t *temp;
temp=(FData_t *)&FData1; // текущая структура FData1
u08_Data1=pgm_read_byte(&(temp->FVariable)); // читаем 0xAA
temp=(FData_t *)pgm_read_word(&temp->FPointerStruct); // текущая структура FData2
u08_Data2=pgm_read_byte(&(temp->FVariable)); // читаем 0xBB
}
а вот в EEPROM у меня так же не получается
Код
#include <avr/io.h>
#include <avr/eeprom.h>
typedef struct {
void *EPointerStruct;
uint8_t EVariable;
} EData_t;
EData_t EData1, EData2; // объявим структуры
EData_t EEMEM EData1 = {(void*)&EData2, 0xAA}; // поместим в EEPROM
EData_t EEMEM EData2 = {(void*)&EData1, 0xBB};
uint8_t u08_Data1, u08_Data2;
int main(void)
{
EData_t *temp;
temp=(EData_t *)&EData1; // текущая структура EData1
u08_Data1=eeprom_read_byte(&(temp->EVariable)); // читаем 0xAA
//temp=(EData_t *)eeprom_read_word(&temp->EPointerStruct); // вот здесь проблема
u08_Data2=eeprom_read_byte(&(temp->EVariable)); // опять читаем 0xAA
}
Конечно можно просто сделать ++temp, но это не подходит, потому что перейдет на структуру после последней.... и попадем в область где уже нет ничего....
Компилятор avr-gcc. Спасибо.