Я при инициализации всегда прописываю.
(«Телесистемы»: Конференция 'Микроконтроллеры и их применение')

миниатюрный аудио-видеорекордер mAVR

Отправлено Alex03 08 декабря 2004 г. 12:41
В ответ на: Alex03, еще на пару вопросов глупых не ответишь? отправлено Sergey 08 декабря 2004 г. 10:01

Но по сути это ОЗУ поэтому можно наверное много раз писать, у меня
такой необходимости не было.

Для AVR и GCC это дело у меня выглядит примерно так:


static quadlet_t configROM[] PROGMEM =
{
#include "cfg_rom.inc"
};

#define __LPM_quadlet_enhanced__(addr) \
({ \
uint16_t __addr16 = (uint16_t)(addr); \
quadlet_t __result; \
__asm__ \
( \
"lpm %A0, Z+" "\n\t" \
"lpm %B0, Z+" "\n\t" \
"lpm %C0, Z+" "\n\t" \
"lpm %D0, Z" "\n\t" \
: "=r" (__result), "=z" (__addr16) \
: "1" (__addr16) \
); \
__result; \
})
#define pgm_quadlet_word_near(address_short) __LPM_quadlet_enhanced__((uint16_t)(address_short))


#define ROM_SIZE (sizeof(configROM)/sizeof(configROM[0]))
#define ROM_SIZELL ((unsigned long long) ROM_SIZE)

void saveConfigROM()
{
uchar uc;
tsbRegConfigurationRomControl = (ROM_SIZELL<<18) | (ROM_SIZELL<<2);

tsbRegLogRomControl = 0x00008000;

for(uc=0; uc {
tsbRegLogRomData = pgm_quadlet_word_near(&configROM[uc]);
}
tsbRegLogRomControl = 0x00004000;
}

Где tsbRegХХХХХХХ - регистры TSB43AA82A отображённые во внешнюю память AVR-а.

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru