Цитата(Сергей Борщ @ Sep 27 2006, 12:30)

Цитата(Serg79 @ Sep 27 2006, 10:21)

Как разместить глобальную переменную по определенному адресу в памяти, при использовании WinAVR.
Например:
Код
/*
* Нужно разместить по адресу 0x0110
*/
char flag;
Как мне это сделать?
Посмотреть в заголовочных файлах из комплекта компилятора как там по абсолютным адресам размещаются переменные портов, таймеров и другой периферии.
Нет, так точно не прокатит. Вот что там есть:
Код
#define _MMIO_BYTE(mem_addr) (*(volatile uint8_t *)(mem_addr))
#define _MMIO_WORD(mem_addr) (*(volatile uint16_t *)(mem_addr))
#define _SFR_MEM8(mem_addr) _MMIO_BYTE(mem_addr)
#define _SFR_MEM16(mem_addr) _MMIO_WORD(mem_addr)
Данные макросы просто грамотно формируют указатель на соответствуюфий адрес. И данный диапозон адресов не используется компилятором под глобальные переменные.
А мне именно надо разместить переменную по адресу начинающемуся с 0x0100.