07.02.2014, 12:23
|
|
Вид на жительство
Регистрация: 29.04.2007
Адрес: Иркутск
Сообщений: 311
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 12 сообщении(ях)
|
wdt не работает
Всем привет!
Ни разу не использовал сторожевой таймер.
И вот всё-таки МК завис.
Поэтому дальше без него никак.
Делаю так:
Код:
|
/////MPLAB_8 + CCS_4
#include ‹16F628A.h›
#use delay(clock=48000)
#fuses INTRC_IO, NOMCLR, PUT, NOLVP, WDT, NOBROWNOUT
#byte PORTA =5
void main(void)
{
setup_comparator(NC_NC_NC_NC);
setup_oscillator(OSC_48KHZ);
PORT_B_PULLUPS(TRUE);
SETUP_WDT(WDT_2304MS);
SET_TRIS_A(0);
PORTA=15;
delay_ms(2000);
do {
porta=1;
delay_ms(255);
porta=2;
delay_ms(255);
porta=4;
delay_ms(255);
porta=8;
delay_ms(255);
}WHILE(TRUE);
} |
Но сброса не происходит.
Светодиодики переключаются по очереди. То есть бегущий огонь работает стабильно, а как я понимаю, до третьего светодиодика дело не должно было дойти никогда.
|
|
|
|
07.02.2014, 12:36
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: wdt не работает
Нам самим угадать, что здесь происходит, да?
SETUP_WDT(WDT_2304MS);
|
|
|
|
10.02.2014, 02:47
|
|
Вид на жительство
Регистрация: 29.04.2007
Адрес: Иркутск
Сообщений: 311
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 12 сообщении(ях)
|
Re: wdt не работает
я так думаю в этой строчке мы настраиваем вдт таким образом, чтобы он каждые 2,3секунды переполнялся. А переполнение вызовет сброс МС.
Ведь это внутренняя функция компилятора- байты конфигурации нужные в ней устанавливаются. Не моя это функция.
По расчёту во время второго delay(255); должен быть сброс - и всё по новой.
Но сброса не происходит. Может я что-то ещё забыл.
Где-то я видел такую конструкцию
#use delay(clock=48000, reset_wdt)
Пробовал и так, но ничего не изменилось
|
|
|
|
10.02.2014, 02:53
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.11.2008
Адрес: г.Смоленск
Сообщений: 2,018
Сказал спасибо: 348
Сказали Спасибо 1,024 раз(а) в 552 сообщении(ях)
|
Re: wdt не работает
Сообщение от yellow87
|
Может я что-то ещё забыл.
|
фьюз например?
|
|
|
|
10.02.2014, 03:12
|
|
Вид на жительство
Регистрация: 29.04.2007
Адрес: Иркутск
Сообщений: 311
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 12 сообщении(ях)
|
Re: wdt не работает
какой ещё к фьюз к уже имеющемуся
#fuses WDT ?
|
|
|
|
10.02.2014, 10:42
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: wdt не работает
Тут ничем не помочь. Это тяжелый случай.
|
|
|
|
10.02.2014, 11:06
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.02.2008
Адрес: Днепр. Украина
Сообщений: 3,294
Сказал спасибо: 442
Сказали Спасибо 1,048 раз(а) в 706 сообщении(ях)
|
Re: wdt не работает
Внимательно читаем первую строчку помощи.
Цитата:
|
For PCB/PCM parts: WDT_18MS, WDT_36MS, WDT_72MS, WDT_144MS,WDT_288MS, WDT_576MS, WDT_1152MS, WDT_2304MS
|
И чуть ниже
Цитата:
|
For PIC®16 parts with software controlled WDT enabled: WDT_ON, WDT_OFF, WDT_TIMES_32, WDT_TIMES_64, WDT_TIMES_128, WDT_TIMES_256, WDT_TIMES_512, WDT_TIMES_1024, WDT_TIMES_2048, WDT_TIMES_4096, WDT_TIMES_8192, WDT_TIMES_16384, WDT_TIMES_32768, WDT_TIMES_65536.
|
__________________
misterdi<@>i.ua
|
|
|
|
10.02.2014, 12:55
|
|
Почётный гражданин KAZUS.RU
Регистрация: 22.02.2008
Адрес: Ukraine, рядом с Полтавой
Сообщений: 9,774
Сказал спасибо: 5,556
Сказали Спасибо 25,340 раз(а) в 5,693 сообщении(ях)
|
Re: wdt не работает
Не, всё проще. Надо строчку подправить:
#use delay(clock=48000,RESTART_WDT)
..только тактовая 48 кГц не маловато? Может там цифра должна быть 4000000?
__________________
«Совершенство — это не тогда, когда уже нечего больше добавить, а тогда, когда уже нечего отнять.»
/Эйнштейн/
моя домашняя страничка: http://www.eddy.com.ua/
|
|
|
|
11.02.2014, 04:10
|
|
Вид на жительство
Регистрация: 29.04.2007
Адрес: Иркутск
Сообщений: 311
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 12 сообщении(ях)
|
Re: wdt не работает
easyrider83, после того как вы не смогли угадать что происходит в стандартной библиотечной функции компилятора SETUP_WDT(), я от вас уже не жду никакой помощи.
MisterDi, я внимательно прочитал первую строчку помощи и использовал константу WDT_2304MS
а чуть ниже - вообще не для моего PICa
Eddy71, 48кГц - стандартная внутренняя частота
RESTART_WDT из #use delay(clock=48000) убрал
жду помощи
|
|
|
|
11.02.2014, 05:28
|
|
Гуру портала
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 19,058
Сказал спасибо: 2,563
Сказали Спасибо 11,890 раз(а) в 5,964 сообщении(ях)
|
Re: wdt не работает
Сообщение от yellow87
|
а как я понимаю, до третьего светодиодика дело не должно было дойти никогда.
|
А если 2304 разделить на 255 - сколько будет? Что-то мне подсказывает, что гораздо больше трех...
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 07:28.
|
|