Цитата(zombi @ Sep 3 2012, 01:18)

Я,к сожалению, в СИ не силён.
к сожалению...но сильным быть-то и не надо, самую малость понимать уже хватило бы.
Цитата(zombi @ Sep 3 2012, 01:18)

Код
#define MAPPED_EEPROM_START 0x1000
#define EEPROM_PAGESIZE 32
#define EEPROM(_pageAddr, _byteAddr) \
((uint8_t *) MAPPED_EEPROM_START)[_pageAddr*EEPROM_PAGESIZE + _byteAddr]
не означает ли что всётаки любой из 0x001000-0x00101F ?
Тут какой-то другой случай - параметров у макроса 2 (номер страницы и намер байта на старнице).
А для доступа как к ОЗУ используется EEPROM(addr):
Код
// из EEPROM_DRIVER.H
#define MAPPED_EEPROM_START 0x1000
#define EEPROM(_address) ((uint8_t *) EEPROM_START)[_address]
EEPROM(TEST_ADDR_1) = TEST_BYTE_1;
EEPROM(TEST_ADDR_1) = TEST_BYTE_1; - это обращение(запись) к EEPROM как к ОЗУ по адресу (0x1000+TEST_ADDR_1)
А запись вот:
Код
EEPROM_AtomicWritePage( TEST_ADDR_1 );
- используется адрес не (0x1000+TEST_ADDR_1), а TEST_ADDR_1 - равный в примере 1
Цитата(zombi @ Sep 3 2012, 01:18)

А на асме случайно нет примеров???
Есть...почти: запускается проект на отладку и открывается окно дисасемблера. Ну, тоже вариант.