реклама на сайте
подробности

 
 
> watchdog
thorium
сообщение Sep 7 2007, 06:34
Сообщение #1





Группа: Новичок
Сообщений: 10
Регистрация: 3-04-07
Пользователь №: 26 733



процессор атмега128. при попытке перезагрузке из основной программы по ватчдогу(активирован фузами), типа:
WDTCR = (1<<WDCE)|(1<<WDE);
WDTCR = (1<<WDP0)|(1<<WDP1)|(1<<WDP2)|(1<<WDE);
while(1);
перезагрузка происходит, но фузами включен еще бутлодер. и выполнение должно по идее передаться на него, но этого не происходит. пробшлема номер раз! по кнопке ресета перезагрузка переходит в бутлодер.

при такой же перезагрузке из из бутлодера переходи происходит так же, видимо, на нулевой адрес, однако программа не работает, но при этом не запускается и бутлодер. проблема номер два!

при переходе из бутлодера типа:
MCUCR = 0x01; // Enable interrupt vector select
MCUCR = 0x00; // Move interrupt vector to flash
asm("jmp 0x0000");
ПОСЛЕ ПЕРЕПРОШИВКИ не программа запускается, но прерывания не включаются. проблема три!
в этом же случае, но после ресета по кнопке все равботает.

кто может что посоветовать? первое сообщение проигнорировали!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 1)
defunct
сообщение Sep 8 2007, 20:56
Сообщение #2


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Сформулируйте вопрос точнее.

Если запрограммирован Fuse "Boot reset vector", то при любом сбросе (PowerOn, Reset, Wdt) управление будет передано в секцию загрузчика, заданную фузами BOOTSZ.

Загрузчик первым делом должен запретить прерывания и переопределить таблицу векторов прерываний в BOOT секцию. Перед выходом из загрузчика надо опять же запретить все прерывания и переопределить таблицу прерываний в область основной программы, также по возможности отключить всю используемую загрузчиком периферию, после чего делать JMP 0x00.

Цитата
при попытке перезагрузке из основной программы по ватчдогу(активирован фузами), типа:
WDTCR = (1<<WDCE)|(1<<WDE);
WDTCR = (1<<WDP0)|(1<<WDP1)|(1<<WDP2)|(1<<WDE);

Он у вас не фузами активирован.
Фуз отвечающий за работу WDT называется WDTON.

Цитата
кто может что посоветовать?

Внимательно курить ДШ, и привести в порядок bootloader. Проблема на мой взгляд здесь с бутлоадером.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 07:29
Рейтинг@Mail.ru


Страница сгенерированна за 0.02212 секунд с 7
ELECTRONIX ©2004-2016