Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
04.03.2010, 19:48
|
|
Гражданин KAZUS.RU
Регистрация: 08.07.2006
Сообщений: 583
Сказал спасибо: 76
Сказали Спасибо 90 раз(а) в 66 сообщении(ях)
|
AVR Watchdog
Долго уже авр программировал, использовал watchdog только для "экстренного" ресета в случае зависания. Теперь вот хочу, чтоб он просто будил мк из слипа. (пока только протеус) Не фурычит.
(чип mega48 ) два бита есть в контрольном ватчдоговом регистре (ну два, про которые сейчас речь) - WDE и WDIE, которые соответсвенно отвечают за ресет или преоывание по переполнению этого самого ватчдога (или же и то и то). Так вот. Ресет мне не нужен, значит нужно прерывание, потому устанавливаю WDIE, как в даташите.
Протеус материццо:
Сообщение от Proteus
|
WDCE is set but WDE is not. Do nothing
|
А когда таймаут истекает
Сообщение от Proteus
|
Watchdog setup sequence is timed out. Do nothing
|
Что ж это получаеццо, без установленого WDE работать не будет? Но с ним только ресет. Глупость какая-то...
Народ что скажете, я или протеус?
__________________
Sex, Druggs, Rock&Roll
Последний раз редактировалось alberio; 04.03.2010 в 19:49.
Причина: из знаков пунктуации сделался смайлик неуместный
|
|
|
|
04.03.2010, 19:56
|
|
Гражданин KAZUS.RU
Регистрация: 08.07.2006
Сообщений: 583
Сказал спасибо: 76
Сказали Спасибо 90 раз(а) в 66 сообщении(ях)
|
Re: AVR Watchdog
С настройками разобрался, я сглупил. Сначала должны быть установлены оба бита WDE и WDCE, а потом уже то, что нужно.
Но проблема осталась - ватчдог (его прерывание) не будит мк....
__________________
Sex, Druggs, Rock&Roll
|
|
|
|
04.03.2010, 21:01
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
|
Re: AVR Watchdog
$18 в WDTCSR
$C2 в WDTCSR
железно работает на всех АВРках с которыми я его юзал
перед отключением вачдога надо сбрасывать ВДРФ иначе игнор
|
|
|
|
19.08.2010, 10:41
|
|
Частый гость
Регистрация: 17.04.2008
Сообщений: 34
Сказал спасибо: 300
Сказали Спасибо 8 раз(а) в 8 сообщении(ях)
|
Re: AVR Watchdog
А можно ли отследить или посмотреть место срабатывания Watchdog? а то в Proteus все работает прекрасно, а в плате постоянно идет сброс по Watchdog.
вот включение/выключение
void WD_ON(void)
{
#asm ("cli")
MCUCSR&=0‹‹WDRF;
#asm ("wdr")
WDTCR|=(1‹‹WDCE)|(1‹‹WDE);
WDTCR&=(0‹‹WDCE);
WDTCR|=(1‹‹WDE)|(1‹‹WDP2)|(1‹‹WDP1)|(1‹‹WDP0); //2c
#asm ("sei")
}
void WD_OFF(void)
{
#asm ("cli")
MCUCSR&=0‹‹WDRF;
#asm ("wdr")
WDTCR|=(1‹‹WDCE)|(1‹‹WDE);
WDTCR=0x00;
#asm ("sei")
}
постоянно индицируется сброс на экране
if(MCUCSR››WDRF==1) //сброс от watchdog был v 1.4.3.4.1f
{
lcd_gotoxy(0,0);
lcd_putsf("Zavisanie MC:");
delay_ms(1000);
#asm ("wdr")
}
Последний раз редактировалось grbizly; 19.08.2010 в 10:54.
|
|
|
|
19.08.2010, 11:28
|
|
Прописка
Регистрация: 28.09.2006
Сообщений: 144
Сказал спасибо: 11
Сказали Спасибо 95 раз(а) в 51 сообщении(ях)
|
Re: AVR Watchdog
WDRF: Флаг индикации сброса сторожевым таймером
Данный бит устанавливается после сброса сторожевым таймером. Данный бит сбрасывается при подаче питания или путем записи лог. 0 в данный флаг.
if(MCUCSR››WDRF==1) //сброс от watchdog был v 1.4.3.4.1f
{
MCUCSR &=~(1‹‹WDRF);
lcd_gotoxy(0,0);
lcd_putsf("Zavisanie MC:");
delay_ms(1000);
#asm ("wdr")
}
На IAR я делал так:
#define WDTO_15MS 0
#define WDTO_30MS 1
#define WDTO_60MS 2
#define WDTO_120MS 3
#define WDTO_250MS 4
#define WDTO_500MS 5
#define WDTO_1S 6
#define WDTO_2S 7
void WDT_ON(void)
{
WDTCR = (1‹‹WDTOE)|(1‹‹WDE)|WDTO_2S;// установка и запуск сторожевого таймера
SREG_I = 1; //разрешение всех прерываний
}
Последний раз редактировалось harchenko_pavel; 19.08.2010 в 14:30.
|
|
|
|
19.08.2010, 11:57
|
|
Частый гость
Регистрация: 17.04.2008
Сообщений: 34
Сказал спасибо: 300
Сказали Спасибо 8 раз(а) в 8 сообщении(ях)
|
Re: AVR Watchdog
у меня в Proteus все работает, и регистры и флаги все как надо устанавливается и сбрасывается, а в плате висит на экране lcd_putsf("Zavisanie MC:"); и не могу понять почему? вот и хотелось бы узнать возможно ли отследить место сброса!!!
|
|
|
|
19.08.2010, 12:05
|
|
Заблокирован
Регистрация: 26.12.2009
Сообщений: 3,124
Сказал спасибо: 116
Сказали Спасибо 867 раз(а) в 614 сообщении(ях)
|
Re: AVR Watchdog
Обычными тестовыми светодиодами (или даже одним). По ходу проги включаешь их по одному, там где не включился глюк и надо искать.
|
|
|
|
19.08.2010, 14:26
|
|
Частый гость
Регистрация: 17.04.2008
Сообщений: 34
Сказал спасибо: 300
Сказали Спасибо 8 раз(а) в 8 сообщении(ях)
|
Re: AVR Watchdog
Спасибо, но похоже нужно пробовать в proteus 7.7sp2, потому как в 7.2 уж очень подозрительно как то работает.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 17:35.
|
|