Страница 5 из 5

не срабатывает watchdog при симуляции в протеусе

СообщениеДобавлено: 26 июл 2016, 17:42
Андрей
Здравствуйте!
Возникла необходимость проверить работу ватчдога в проекте сенсорная кнопка на attiny13, и обнаружилась проблема, при проверке в протеусе его срабатывания не происходит... при проверке в железе все работает нормально. Хотя при составлении программы, я не помню каким образом делал задержку, но ватчдог срабатывал в протеусе.
Подскажите в чем может быть проблема :hlp:
ps: проверял работу ватчдога путем вставки пустого цикла перед основным циклом.
дублирую файлы проекта, если кому нужно, его описание в "готовые решения и примеры"

Re: не срабатывает watchdog при симуляции в протеусе

СообщениеДобавлено: 26 июл 2016, 19:06
pav13
andrewproffi писал(а):Здравствуйте!
Возникла необходимость проверить работу ватчдога в проекте сенсорная кнопка на attiny13, и обнаружилась проблема, при проверке в протеусе его срабатывания не происходит... при проверке в железе все работает нормально. Хотя при составлении программы, я не помню каким образом делал задержку, но ватчдог срабатывал в протеусе.

выставил в debug - attiny13 - watch dog timer - full trace. всё сбрасывает. скрин приложил. это оно или я не понял вопроса?

Re: WatchDog Timer

СообщениеДобавлено: 26 июл 2016, 19:08
Андрей
это нормальный режим работы программы. а мне надо заставить собаку сработать в протеусе.
для этого я перед основным циклом СТАВИЛ ПУСТОЙ БЕСКОНЕЧНЫЙ ЦИКЛ. В протеусе сброса не произошло.

Re: WatchDog Timer

СообщениеДобавлено: 26 июл 2016, 21:27
pav13
andrewproffi писал(а):это нормальный режим работы программы. а мне надо заставить собаку сработать в протеусе.
для этого я перед основным циклом СТАВИЛ ПУСТОЙ БЕСКОНЕЧНЫЙ ЦИКЛ. В протеусе сброса не произошло.

по ходу дела это какой-то косяк протеуса 8. если выполнилась хоть одна команда обнуления WDT, тогда сброса МК в бесконечном цикле не произойдёт, а если установить бесконечный цикл перед первой командой обнуления WDT , тогда МК перезагружается раз в секунду.

пробовал свои проекты (которые были созданы в седьмом протеусе):
в протеус 7.1(нормально работает WDT, но не работает вывод отладки), в 8.4 (не работает перезагрузка от WDT, но работает вывод отладки).

Re: WatchDog Timer

СообщениеДобавлено: 01 янв 2017, 14:34
livrena
--- Watchdog_clear pic12f675
пример срабатывания WDT

Re: WatchDog Timer

СообщениеДобавлено: 30 янв 2020, 21:07
livrena
Заметил интересную особенность на Atmega 328P.
Активировал WDT на 4 секунды и в настройках проекта установил самоочищать watchdog, в теле программы сброса WDT вообще нигде нет.
С такими настройками всё работает и программа занимает 9086 bytes.

Без установки (самоочищать WDT) размер программы увеличился до 10152 bytes и естественно произошёл reset через 4 сек.

Re: WatchDog Timer

СообщениеДобавлено: 31 янв 2020, 07:25
WiseOwl
livrena писал(а):в настройках проекта установил самоочищать watchdog, в теле программы сброса WDT вообще нигде нет

Вот здесь описан механизм работы Auto Clear Watchdog и указано где вставлена команда Clear WDT.
Замена пауз Delay на паузы Wdt_Delay в AVR_CAL_Delay.c...
И как мне думается, если в программе не будет Пауз, то Auto Clear Watchdog работать не будет, - не будут вставлены команды Clear WDT (MX_CLEAR_WATCHDOG;), которые прописаны в Wdt_Delay... в частности в подпрограмме static void Wdt_Delay_Ms(char delay)..
livrena писал(а):Без установки (самоочищать WDT) размер программы увеличился

Непонятно, все должно было быть наоборот...

Re: WatchDog Timer

СообщениеДобавлено: 31 янв 2020, 07:38
livrena
Да, должно быть наоборот но есть так как есть. Вечером гляну какой размер получится на другом проекте.

Минимальная задержка при которой работает самоочиститель WDT
1ms.
Если нет в программе ЗАДЕРЖКИ и установлен самоочиститель произойдёт сброс по WDT.

Re: WatchDog Timer

СообщениеДобавлено: 31 янв 2020, 08:45
WiseOwl
livrena писал(а):так как есть. Вечером гляну какой размер получится на другом проекте.
Можешь не торопиться... :D Я уже глянул... так и есть, все это спрятано в AVR_CAL_Delay.c, именно там по разному описаны паузы. Процедуры Wdt_Delay_X в которых вставлено MX_CLEAR_WATCHDOG отличаются от Delay_X ну и так далее... Выявлять что и как не вижу смысла, - паузы зло... их не нужно применять, работать с WDT нужно непосредственно...
При желании можешь изменить написание пауз и проверить, - я проверил, и мне все стало понятно...

PS Конечно от пауз которые вставлены в программные драйвера и протоколы обмена с периферией никуда не деться (например, для LCD), но там они короткие...