Две арудины - одна watchdog для другой

ivpo
Offline
Зарегистрирован: 07.01.2014

Добрый день

Имеется две Nano, связаны по софтсериалу.

Нужно чтобы одна перезагружала другую, если перестает получать от неё данные.

Достаточно ли подключить RST одной Nano к цифровому выходу другой, держать HIGH если всё ок и давать LOW, если перестали приходить данные?

Нужны ли резисторы или конденсаторы?

Заранее спасибо!

 

Клапауций 112
Клапауций 112 аватар
Offline
Зарегистрирован: 01.03.2017

а, что будет перезагружать первую?

negavoid
Offline
Зарегистрирован: 09.07.2016

Конденсаторы не нужны (зачем?), а так между цифровым выходом и ресетом другой можно поставить 1к резистор, чтобы не коротить HIGH на землю. И ещё нужно не забывать, что при включении все цифровые пины становятся LOW. Работать это будет, но подход к архитектуре в целом - неверный.

Клапауций 112
Клапауций 112 аватар
Offline
Зарегистрирован: 01.03.2017

negavoid пишет:

И ещё нужно не забывать, что при включении все цифровые пины становятся LOW.

я забыл - напомни мне, где почитать о всех цифровых пинах в состоянии LOW при включении.

а, то мне только это читается:

Выводы Arduino (Atmega) стандартно настроены как порты ввода, таким образом, не требуется явной декларации в функции pinMode(). Сконфигурированные порты ввода находятся в высокоимпедансном состоянии. Это означает то, что порт ввода дает слишком малую нагрузки на схему, в которую он включен. Эквивалентом внутреннему сопротивлению будет резистор 100 МОм подключенный к выводу микросхемы. Таким образом, для перевода порта ввода из одного состояния в другое требуется маленькое значение тока. Это позволяет применять выводы микросхемы для подключения емкостного датчика касания, фотодиода, аналогового датчика со схемой, похожей на RC-цепь.

С другой стороны, если к данному выводу ничего не подключено, то значения на нем будут принимать случайные величины, наводимые электрическими помехами или емкостной взаимосвязью с соседним выводом.

http://arduino.ru/Tutorial/DigitalPins

ivpo
Offline
Зарегистрирован: 07.01.2014

У меня две ардуины включаются одновременно.

Основная (контролируемая) делает паузу в 1 сек сразу в начале сетапа, watchdog грузится сразу и в начале сетапа выставляет HIGH на ногу, подключенную к RST контролируемой Арудины.

Это ок?

Перезагружать вторую? Гм, надо подумать.

В принципе можно сделать, чтобы они друг друга контролировали. Если только вместе не зависнут.

 

negavoid
Offline
Зарегистрирован: 09.07.2016

Да, всё правильно, я слошил, перепутал с pinMode output. Ну, короче, я к тому, что сперва пишем в PORTx high, и только потом в DDRx, чтобы не выдавался low кратковременный.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Если спользуются голые микроконтроллеры, я бы ещё ресет ведомой микросхемы притянул к питанию резистором килоом на 10-30. В Ардуине, если склероз не изменяет, это уже без меня сделано.

alex_r61
Offline
Зарегистрирован: 20.06.2012

И зачем этот геморой? А если обе зависнут? Есть специальные мониторы питания, например DS1232.

ivpo
Offline
Зарегистрирован: 07.01.2014

alex_r61 пишет:

И зачем этот геморой? А если обе зависнут? Есть специальные мониторы питания, например DS1232.

 

Большое спасибо, изучу и наверное приму на вооружение.

"Этот геморой" всегда возникает по одной причине - надо сделать быстро и из того, что есть :)

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

alex_r61 пишет:

Есть специальные мониторы питания, например DS1232.

Использовать специализированную микросхему вместо говна и палок???? Это же не наш метод!

ivpo
Offline
Зарегистрирован: 07.01.2014

Ну для прототипирования пойдут говно и палки.

Дело в том, что вторая Nano в любом случае будет (для другого функционала).

alex_r61
Offline
Зарегистрирован: 20.06.2012

Ну если делать "по нашенски", то тогда обязательно три Дуни. )))

ivpo
Offline
Зарегистрирован: 07.01.2014

Будут перезагружать друг друга по кругу? :)

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Не, будут играть в игру "кто-кого первый перезагрузит". Победителю - особо чистое питание от дорогущего ИБП по стандарту Евро-121.

Voodoo Doll
Voodoo Doll аватар
Offline
Зарегистрирован: 18.09.2016

wdt_enable(WDTO_2S); в конце setup(), wdt_reset(); внутри loop(). Инклуд avr/wdt.h

Ибо отсутствие передачи не есть критерий зависания. AVR имеет специальный таймер для этого, используйте его.

А вообще - резистор 10k на плюс, конденсатор 47uF на минус.

alex_r61
Offline
Зарегистрирован: 20.06.2012

Voodoo Doll пишет:

А вообще - резистор 10k на плюс, конденсатор 47uF на минус.

И в 220 вольт - красота будет.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

alex_r61 пишет:

И в 220 вольт - красота будет.

Только в качественную, хорошо стабилизированную и проИБПшенную розетку!