Две арудины - одна watchdog для другой
- Войдите на сайт для отправки комментариев
Пт, 15/09/2017 - 11:51
Добрый день
Имеется две Nano, связаны по софтсериалу.
Нужно чтобы одна перезагружала другую, если перестает получать от неё данные.
Достаточно ли подключить RST одной Nano к цифровому выходу другой, держать HIGH если всё ок и давать LOW, если перестали приходить данные?
Нужны ли резисторы или конденсаторы?
Заранее спасибо!
а, что будет перезагружать первую?
Конденсаторы не нужны (зачем?), а так между цифровым выходом и ресетом другой можно поставить 1к резистор, чтобы не коротить HIGH на землю. И ещё нужно не забывать, что при включении все цифровые пины становятся LOW. Работать это будет, но подход к архитектуре в целом - неверный.
И ещё нужно не забывать, что при включении все цифровые пины становятся LOW.
я забыл - напомни мне, где почитать о всех цифровых пинах в состоянии LOW при включении.
а, то мне только это читается:
Выводы Arduino (Atmega) стандартно настроены как порты ввода, таким образом, не требуется явной декларации в функции pinMode(). Сконфигурированные порты ввода находятся в высокоимпедансном состоянии. Это означает то, что порт ввода дает слишком малую нагрузки на схему, в которую он включен. Эквивалентом внутреннему сопротивлению будет резистор 100 МОм подключенный к выводу микросхемы. Таким образом, для перевода порта ввода из одного состояния в другое требуется маленькое значение тока. Это позволяет применять выводы микросхемы для подключения емкостного датчика касания, фотодиода, аналогового датчика со схемой, похожей на RC-цепь.
С другой стороны, если к данному выводу ничего не подключено, то значения на нем будут принимать случайные величины, наводимые электрическими помехами или емкостной взаимосвязью с соседним выводом.
http://arduino.ru/Tutorial/DigitalPins
У меня две ардуины включаются одновременно.
Основная (контролируемая) делает паузу в 1 сек сразу в начале сетапа, watchdog грузится сразу и в начале сетапа выставляет HIGH на ногу, подключенную к RST контролируемой Арудины.
Это ок?
Перезагружать вторую? Гм, надо подумать.
В принципе можно сделать, чтобы они друг друга контролировали. Если только вместе не зависнут.
Да, всё правильно, я слошил, перепутал с pinMode output. Ну, короче, я к тому, что сперва пишем в PORTx high, и только потом в DDRx, чтобы не выдавался low кратковременный.
Если спользуются голые микроконтроллеры, я бы ещё ресет ведомой микросхемы притянул к питанию резистором килоом на 10-30. В Ардуине, если склероз не изменяет, это уже без меня сделано.
И зачем этот геморой? А если обе зависнут? Есть специальные мониторы питания, например DS1232.
И зачем этот геморой? А если обе зависнут? Есть специальные мониторы питания, например DS1232.
Большое спасибо, изучу и наверное приму на вооружение.
"Этот геморой" всегда возникает по одной причине - надо сделать быстро и из того, что есть :)
Есть специальные мониторы питания, например DS1232.
Использовать специализированную микросхему вместо говна и палок???? Это же не наш метод!
Ну для прототипирования пойдут говно и палки.
Дело в том, что вторая Nano в любом случае будет (для другого функционала).
Ну если делать "по нашенски", то тогда обязательно три Дуни. )))
Будут перезагружать друг друга по кругу? :)
Не, будут играть в игру "кто-кого первый перезагрузит". Победителю - особо чистое питание от дорогущего ИБП по стандарту Евро-121.
wdt_enable(WDTO_2S); в конце setup(), wdt_reset(); внутри loop(). Инклуд avr/wdt.h
Ибо отсутствие передачи не есть критерий зависания. AVR имеет специальный таймер для этого, используйте его.
А вообще - резистор 10k на плюс, конденсатор 47uF на минус.
А вообще - резистор 10k на плюс, конденсатор 47uF на минус.
И в 220 вольт - красота будет.
И в 220 вольт - красота будет.
Только в качественную, хорошо стабилизированную и проИБПшенную розетку!