Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: dsPIC30f5011 и WDT
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры > PIC
Nebel
Собственно проблема в том, что при симуляции (и на железке) WDT не reset-ит МК.
в Output выводится сообщение
Цитата
CORE-W0003: Watchdog Timer event occurred. Break in execution requested

WDTO (RCON<4>) устанавливается в "1" но МК продолжает висеть в бесконечном цикле.
SLEEP (RCON<3>) и IDLE (RCON<2>) равны "0", т.е. МК ни в Idle ни в Sleep mode не был

Как заставить МК сбрасываться по WDT?

Код
#include <p30f5011.h>

_FOSC(XT_PLL4 & CSW_FSCM_ON);
_FWDT(WDT_ON & WDTPSA_1 & WDTPSB_5);

int main(void)
{
    ClrWdt();
    int a=1;
    while (a)
    {
        Nop();
    }    
    return 0;
}
Vlad27
Проверил ваш пример на симуляторе - все нормально. Через 10мсек. (F = 120МГц)
сработала собака. Да и в сообщении, что вы привели, собака сбрасывается и процессор ресетится.
Выведите на какую-нибудь ногу сигнал при старте программы - убедитесь.
В Sleep и Idle процессор переводится командой PWRSAV.
Nebel
Цитата(Vlad27 @ Nov 13 2009, 10:53) *
Проверил ваш пример на симуляторе - все нормально. Через 10мсек. (F = 120МГц)
сработала собака. Да и в сообщении, что вы привели, собака сбрасывается и процессор ресетится.
Выведите на какую-нибудь ногу сигнал при старте программы - убедитесь.
В Sleep и Idle процессор переводится командой PWRSAV.

т.е. после срабатывания WDT в симуляторе процессор начал работу с 1-й команды в main() (в моем случае это ClrWdt()) ?

P.S.
про Sleep и Idle написал чтобы не было предположений что МК был в этих режимах и не сбросился, а проснулся по WDTO.
Vlad27
Ну, да. А с какой ему еще начинать, если он (МК) ресетится?
Nebel
Цитата(Vlad27 @ Nov 13 2009, 11:06) *
Ну, да. А с какой ему еще начинать, если он (МК) ресетится?

smile.gif
в том-то и дело что у меня не начинает, а висит в цикле...

упс... нашел в чем косяк....
идем в MPLAB'е в Debugger->Settings, выбираем закладку "Break Options" и для "WDT Timeout" ставим "Reset" (а у меня было "Break").
Сейчас на железке проверю.
Vlad27
Цитата(Nebel @ Nov 13 2009, 10:12) *
smile.gif
в том-то и дело что у меня не начинает, а висит в цикле...

упс... нашел в чем косяк....
идем в MPLAB'е в Debugger->Settings, выбираем закладку "Break Options" и для "WDT Timeout" ставим "Reset" (а у меня было "Break").
Сейчас на железке проверю.


Лучше устанавливать опцию "Break+Warn", тогда не будет таких ситуаций, когда непонятно
почему МК ресетится, или, наоборот. Сам на этом когда-то обжегся.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.