Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: перенос таблицы прерываний в секцию бутрома
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
SpiritDance
Люди! Насколько я понимаю эта функция существует для возможности использовать прерывания в загрузчике. Как потом запусить корректно программу, то есть сделать так чтобы запускались обработчики самой программы. Где вообще про это все почитать поподробнее, никак немогу найти , помню просто что такое было что-то??
IEC
Атмеловский док - AVR109: Self Programming.
На форуме эту тему рассматривают часто!

В загрузчике вектора устанавливаются следующим образом:
/* Разрешение изменения векторов прерываний */
/* Перемещение векторов в загрузочной сектор флэш-памяти */
MCUCR = 0x01; // MCUCR |= (1<<IVCE);
MCUCR = 0x02; // MCUCR |= (1<<IVSEL);

Переход из загрузчика в тело программы: JMPCODE(0x0000);

В теле программы возврат векторов:
/* Разрешение изменения векторов прерываний */
/* Перемещение векторов ив загрузочного сектора флэш-памяти */
MCUCR = 0x01; // MCUCR |= (1<<IVCE);
MCUCR = 0x00; // MCUCR |= (1<<IVSEL);

Еще один момент: В процессе программирования FLASH обязательно отключать прерывания и WDтаймер.
Сергей Борщ
Цитата(IEC @ Dec 28 2006, 12:13) *
Переход из загрузчика в тело программы: JMPCODE(0x0000);

В теле программы возврат векторов:
/* Разрешение изменения векторов прерываний */
/* Перемещение векторов ив загрузочного сектора флэш-памяти */
MCUCR = 0x01; // MCUCR |= (1<<IVCE);
MCUCR = 0x00; // MCUCR |= (1<<IVSEL);
Такой подход имеет один недостаток - "основная" программа должна знать, что работает совместно с загрузчиком. Если же обратное переключение таблицы мы перенесем в загрузчик, то единственой особенностью "основной" программы останется огнраничение по размеру:
Код
  __disable_interrupt();
  MCUCR = 0x01; // MCUCR |= (1<<IVCE);
  MCUCR = 0x00; // MCUCR |= (1<<IVSEL);
  (void (*)())0x0000();
IEC
Можно рассматривать и такой вариант реализации! Наверное он лучше!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.