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

 
 
 
Reply to this topicStart new topic
> dsPIC30f5011 и WDT, WDT не сбрасывает МК
Nebel
сообщение Nov 12 2009, 15:12
Сообщение #1





Группа: Участник
Сообщений: 14
Регистрация: 16-06-08
Из: Москва
Пользователь №: 38 319



Собственно проблема в том, что при симуляции (и на железке) 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;
}


Сообщение отредактировал Nebel - Nov 12 2009, 15:16
Go to the top of the page
 
+Quote Post
Vlad27
сообщение Nov 13 2009, 07:53
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 95
Регистрация: 31-07-05
Из: Полоцк Беларусь
Пользователь №: 7 227



Проверил ваш пример на симуляторе - все нормально. Через 10мсек. (F = 120МГц)
сработала собака. Да и в сообщении, что вы привели, собака сбрасывается и процессор ресетится.
Выведите на какую-нибудь ногу сигнал при старте программы - убедитесь.
В Sleep и Idle процессор переводится командой PWRSAV.
Go to the top of the page
 
+Quote Post
Nebel
сообщение Nov 13 2009, 07:58
Сообщение #3





Группа: Участник
Сообщений: 14
Регистрация: 16-06-08
Из: Москва
Пользователь №: 38 319



Цитата(Vlad27 @ Nov 13 2009, 10:53) *
Проверил ваш пример на симуляторе - все нормально. Через 10мсек. (F = 120МГц)
сработала собака. Да и в сообщении, что вы привели, собака сбрасывается и процессор ресетится.
Выведите на какую-нибудь ногу сигнал при старте программы - убедитесь.
В Sleep и Idle процессор переводится командой PWRSAV.

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

P.S.
про Sleep и Idle написал чтобы не было предположений что МК был в этих режимах и не сбросился, а проснулся по WDTO.
Go to the top of the page
 
+Quote Post
Vlad27
сообщение Nov 13 2009, 08:06
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 95
Регистрация: 31-07-05
Из: Полоцк Беларусь
Пользователь №: 7 227



Ну, да. А с какой ему еще начинать, если он (МК) ресетится?
Go to the top of the page
 
+Quote Post
Nebel
сообщение Nov 13 2009, 08:12
Сообщение #5





Группа: Участник
Сообщений: 14
Регистрация: 16-06-08
Из: Москва
Пользователь №: 38 319



Цитата(Vlad27 @ Nov 13 2009, 11:06) *
Ну, да. А с какой ему еще начинать, если он (МК) ресетится?

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

упс... нашел в чем косяк....
идем в MPLAB'е в Debugger->Settings, выбираем закладку "Break Options" и для "WDT Timeout" ставим "Reset" (а у меня было "Break").
Сейчас на железке проверю.
Go to the top of the page
 
+Quote Post
Vlad27
сообщение Nov 13 2009, 08:25
Сообщение #6


Частый гость
**

Группа: Свой
Сообщений: 95
Регистрация: 31-07-05
Из: Полоцк Беларусь
Пользователь №: 7 227



Цитата(Nebel @ Nov 13 2009, 10:12) *
smile.gif
в том-то и дело что у меня не начинает, а висит в цикле...

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


Лучше устанавливать опцию "Break+Warn", тогда не будет таких ситуаций, когда непонятно
почему МК ресетится, или, наоборот. Сам на этом когда-то обжегся.
Go to the top of the page
 
+Quote Post

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

 


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


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