день добрый, товарищи колдуны!
#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)?