avr & eeprom_update_block()

Обсуждаем контроллеры компании Atmel.
Ответить
Аватара пользователя
sunjob
Вымогатель припоя
Сообщения: 615
Зарегистрирован: Ср дек 08, 2010 19:03:17

avr & eeprom_update_block()

Сообщение sunjob »

день добрый, товарищи колдуны!

Код: Выделить всё

#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)?
Енот - это кот, только инкогнито!
p.s. держитесь обоими руками, а то прорвет...
Реклама
OKF
Это не хвост, это антенна
Сообщения: 1393
Зарегистрирован: Вт июн 07, 2011 08:03:18

Re: avr & eeprom_update_block()

Сообщение OKF »

[uquote="sunjob",url="/forum/viewtopic.php?p=4559994#p4559994"]если с 1м набором функций все понятно:
- обновление/запись "области eeprom"/кастомного типа происходит, если данные не совпадают

по поводу 2го типа - не совсем понятно.[/uquote]
Боюсь, что и с 1-м не понятно. Обновление ТОЛЬКО побайтовое. Во всех случаях.
Реклама
Ответить

Вернуться в «AVR»