Полная версия этой страницы:
Проблема с ATMega1281
kiv121
Nov 12 2009, 16:13
Писал проект не меге 128.
Использую графику и оперативки стало мало.
Сдул 128 - поставил 1281.
Использую IAR 5.3
Отличия поправил.
Как не пытался через собаку сделать перезагрузку 1281 - голяк.
Решил только через jmp 0x0000.
Размер прог достаточно большой - теряю extern переменные.
В настройке проекта вроде все перекрутил.
Помогите дельным советом.
kiv121
Nov 12 2009, 16:58
Проц. ATMega1281
Прог. достаточно большая.
Дописался до того, что теряю extern переменные.
Помогите!
На 1281 собака после сброса по ней останется включена. Выключать надо, если не нужна.
Злодей
Nov 12 2009, 23:35
Цитата(kiv121 @ Nov 12 2009, 19:13)

... теряю extern переменные.
Ошибки линкера?
kiv121
Nov 14 2009, 21:32
Хочу перезагрузить МК:
__disable_interrupt();
__watchdog_reset();
WDTCSR = (1<<WDCE) | (1<<WDE);
WDTCSR = (1<<WDE) | (1<<WDP0) | (1<<WDP3);
__enable_interrupt();
while(1) {}
Результат - темный экран LCD и
дальше - только через выключение питания
???
После перезагрузки watchdog остаётся включен, и, если вы его не сбрасываете в программе, будет ещё раз перезагрузка, и потом ещё раз, и ещё, и ещё.... пока питание не снимете.
Впишите выключение watchdog'а в начало своей прогроаммы.
defunct
Nov 15 2009, 04:41
Цитата(SysRq @ Nov 15 2009, 04:03)

Впишите выключение watchdog'а в начало своей прогроаммы.
Может лучше просто поддержу WDT сделать - __watchdog_reset(); вставить где следует.
WDRF сбрасываете ?
Цитата
Bit 3 - WDE: Watchdog System Reset Enable
WDE is overridden by WDRF in MCUSR. This means that WDE is always set when WDRF is
set. To clear WDE, WDRF must be cleared first. This feature ensures multiple resets during conditions
causing failure, and a safe start-up after the failure.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.