день добрый, товарищи колдуны!
- Код:
#include <avr/eeprom.h>
eeprom_update_xxx() // - набор функций для типов byte,dword,float,word
eeprom_update_block() // - работа с "блоком памяти"
если с 1м набором функций все понятно:
- обновление/запись "области eeprom"/кастомного типа происходит, если данные не совпадают
по поводу 2го типа - не совсем понятно.
допустим имеется структура
- Код:
typedef struct
{
uint8_t a;
uint16_t b;
uint32_t c;
} TSet;
то при вызове "апдейта", в случае неравенства одного из полей структуры - будет обнавлен только "одно" поле, или вся структура?!
судя по описанию - обновиться/будет перезаписана вся структура.
за удобство загрузки/сохранения одним махом целой структуры - я не говорю, реально удобно!
НО...получается, что если есть необходимость поотдельно работать с полями структуры, и менять периодически значения (не все сразу), то в данном случае
eeprom_update_block() является не очень эфективным (в плане циклов перезаписи ячеек памяти)?!
обычно я сам составляю карту EEPROM, сам расчитываю указатели к переменным и, следовательно, не имею "указанных" проблем, обращаюсь напрямую, читаю/пишу/обновляю переменные "персонально".
сейчас решил разобраться более детально, ну и "удобства - скопом за раз" читать/сохранять структуры очень заманчиво!
какие будут мнения по этому поводу?!
спасибо.
p.s.
уточнение: чтени/перезапись идет во внутр. цикле побайтно! тут все понятно!
URLчто по поводу оптимального доступа к отдельным полям структуры (имеется в виду - запись/обновление в eeprom)?