Watchdog. Не дадим контроллеру зависнуть.
Приветствую, уважаемые!
Научите пользоваться этим механизмом. Крайне простая задача: при зависании МК - перезагрузить оный.
Рытие просторов глобальной сети привело к каше в голове.
Регистр WDTCR вроде понятен, но общая схема применения не очень.
Если можно в двух вариантах: при вшитом WDTON и не вшитом.
Заранее спасибо!
Re: Watchdog. Не дадим контроллеру зависнуть.
WDT это не зависимый от основного генератора таймер.
У него есть делитель частоты, с этой выбранной частотой происходит сброс контроллера. И ключевой момент, Основная программа контроллера должна всегда успевать сбрасывать WDT что бы он не успел ресетнуть контроллер.Для чего это нужно? Для того если вдруг контроллер повиснет , то WDT его реанимирует
Вот вроде и все
Re: Watchdog. Не дадим контроллеру зависнуть.
Меня программная реализация интересует.
Так правильно?
PHP код:
void setup() {
cli();// wdr
WDTCR=(1<<WDCE) | (1<<WDE);
WDTCR=(1<<WDE) | (1<<WDP2) | (1<<WDP1) | (1<<WDP0);
sei();
...
}
void loop()
{
__asm__ __volatile__ ("wdr");
...
}
sei();
Re: Watchdog. Не дадим контроллеру зависнуть.
Честно говоря на AVR никогда не пробывал WDT, сейчас посмотрю
Re: Watchdog. Не дадим контроллеру зависнуть.
Внедрил этот код в мегу8. Сижу туплю, как ее заставить зависнуть, но так, чтобы это было понятно.
Re: Watchdog. Не дадим контроллеру зависнуть.
Сделай бесконечный цикл, в цикле включи светодиод D13
Re: Watchdog. Не дадим контроллеру зависнуть.
да очень просто - при резете шлешь в uart символ, дальше можешь зажечь светодиод и загнать МК в бесконечный цикл. И слушаешь терминалку. Можно при старте мигнуть светодиодом и дальше бесконечный цикл...
Re: Watchdog. Не дадим контроллеру зависнуть.
Вот пример скетча
ардуино через 8сек. должен сбросится , или попасть в ступор
Скорее всего второе так как основная масса Arduino прошиты старой версией bootloader
PHP код:
#include <avr/wdt.h>
int n = 0;
void setup()
{
Serial.begin(115200);
wdt_enable (WDTO_8S);
}
void loop()
{
Serial.println(n, DEC);
++n;
delay(1000);
//wdt_reset();
}
Re: Watchdog. Не дадим контроллеру зависнуть.
Re: Watchdog. Не дадим контроллеру зависнуть.
Попробовал. Работает. Спасибо!
Кстати, тот код, что запостил я, тоже работает :)
Re: Watchdog. Не дадим контроллеру зависнуть.
А bootloader какой использовал?
Re: Watchdog. Не дадим контроллеру зависнуть.
Мне нужно было использовать данный механизм на меге8а.
Он отлично работает :)
Попробую намедни на нормальных *дуинах. Они у меня в ассортименте :D
Re: Watchdog. Не дадим контроллеру зависнуть.
Меня под Nano duo интересует
Re: Watchdog. Не дадим контроллеру зависнуть.
Залил твой скетч. "Нана" впадает в кому.
Сейчас попробую свой.
Аналогично.
Что делать? Нужен модифицированный бутлоадер? Есть такой?
Оно как бы полезная штука. Особенно в условиях машины...
зы: nano v.5 (328)
Re: Watchdog. Не дадим контроллеру зависнуть.
ORduino nano 1.1
Craftduino 1.0
Ведут себя аналогично. Впадают в кому.
Может надо ft232 перезапускать?
Re: Watchdog. Не дадим контроллеру зависнуть.
Залит бутлоадер отсюда http://wulfden.org/TheShoppe/freeduino/ADABOOT.shtml
Крафтдуина заработала как положено. Щас нану попробую.
Вложений: 1
Re: Watchdog. Не дадим контроллеру зависнуть.
nano тоже нормально сбрасывается с этим бутом.
Re: Watchdog. Не дадим контроллеру зависнуть.
Спасибо!
Завтра попробую на работе , а дома нет программатора
Re: Watchdog. Не дадим контроллеру зависнуть.
Этот код http://www.compcar.ru/forum/showpost...82&postcount=8
через 8 сек работы подвешивает ардуину (мега2560), светодиод начинает часто мигать...
Нужно перепрошивать bootloader?
Где найти последний?
Для прошивки нужен программатор?
Re: Watchdog. Не дадим контроллеру зависнуть.
Если есть еще один Arduino, то можно из него сделать программатор
Re: Watchdog. Не дадим контроллеру зависнуть.
Есть Seeeduino Mega (ATmega 1280 ), http://www.chipdip.ru/product/seeedu...mega-1280.aspx
Куда сунуться по этому поводу?
Re: Watchdog. Не дадим контроллеру зависнуть.
Re: Watchdog. Не дадим контроллеру зависнуть.
Спасибо!
А что bootloader под Мегу 2560 где найти новый и рабочий...
Re: Watchdog. Не дадим контроллеру зависнуть.
Погугли ADABootLoader
Не факт, что поедет на 2560, но попробуй.
Re: Watchdog. Не дадим контроллеру зависнуть.
Вот этот http://www.diydrones.com/forum/topic...oader-for-2560 подошел для моей меги.
Прошил.
Теперь код http://www.compcar.ru/forum/showpost...82&postcount=8
работает стабильно.
Контроллер перегружается через 8с и не виснет.
Теперь вот как-то надо воспользоваться этим преимуществом.
Спасибо, люди добрые за подсказки.