To ElectroMechaniC
Доброго времени суток. попробую ответить на Ваш вопрос исходя из следующего -
1 вам надо перегрузить модем при этом связь с контроллером есть -
путей решения два:
1.1 корявый (ниже объясню почему) управлять питанием через схему коммутации от выхода контроллера (включаем выключаем реле или полевой транзистор через который идет питание на модем)
Алгоритм модем завис - выключили\включили заработало.
1.2 правильный у модема есть вход PWRKEY (он внутри модема подтянут к + питания) подача 0 на этот вход длительностью
1.1сек либо включит модем либо выключит.
контроллеру назначаем ПИН выход с подтяжкой для управления модемом, соединяем его через транзистор с PWRKEY модема.
Алгоритм проги - контроллер стартовал - ПИН на 1.1 сек в "1"
затем в "0" модем включился работаем...
Повис или не отвечает ПИН на 1.1 сек в "1" затем в "0" модем вЫключился, подождали немного включили таким же порядком.
1.3 если не помогло штатное вкл\выкл - аварийный NRESET (он внутри модема подтянут к + питания) подача 0 на этот вход длительностью 50мс приведет модем к
полному сбросу, затем через 1.2 сек модем вернется в рабочее состояние (управляем отдельным пином)
Почему плохо выключать питание - модем постоянно что то пишет во внутреннею энергонезависимую память, если вырубить питание можно получить кучу мусора в этой памяти и неработоспособный модем.
ВСЕ ЭТО описано в даташите на модем, не поленитесь прочитайте, там же есть и схемы управления питанием и резетом.
ссыль на даташит -
https://www.elecfreaks.com/estore.....00.pdf
2 Повесился контроллер - можно использовать внутренний вачдог контролера (включается в настройках проекта) можно использовать внешний (что предпочтительней) например микруху
ADM705 (5v питание) или ADM703 (3Vпитание)
это супервизор питания и вачдог в одном флаконе
даташит -
http://www.analog.com/media....708.pdf
Ну и до кучи коротко о выборе скорости порта для общения контроллера с компом и другими устройствами. При передаче данных через порт очень важны правильные тайминги, от этого зависит количество ошибок при передаче и приеме данных.
Тайминги в свою очередь зависят от частоты тактирования контроллера.
Ардуинки как правило тактируются кварцем либо 8мг либо 16мг, так вот при Частоте 8мг наименьшее количество ошибок передачи данных будет на скорости 7200
при Частоте 16мг наименьшее количество ошибок передачи данных будет на скорости 9600
причем 16\9600 наименьшее из двух вариантов.
P\s может где не прав звиняйте
С уважением к Сообществу Andre