Суть, сначала вкратце, чтоб понять, стоит ли вникать в дальнейшую кучу букв
Есть два одинаковых устройства, на каждом по три Атмеги, одна из них передает другой по uart инфу о состоянии контролируемых ею цепей. На одном из устройств вышел из строя этот первый МК(следящий), пытаюсь вместо него прикошачить свой и транслировать с него, то что нужно второму МК.(родные меги залочены)
Теперь подробнее: МК2 (атмега88-20au) управляет релюхами(включает/выключает) по сигналу, приходящему в него с МК3(168-20AU) (это своего рода просто таймер с выбором длительности работы реле и ручного выключения реле. МК1(48-20AU) своими аналоговыми входами мониторит 6 синусоид, взятых с контактной группы(2 контакта) каждого из трех реле и определяет залило оно или нет.
После подачи питания МК1 начинает отправлять во второй МК по uart посылку, из которой видно, что например, на 1ом контакте реле1 есть напр.сети а на 2ом нет, считает его разомкнутым (не залипшим), соответ. МК2 предает третьему инфу (как и какую не изучал, назовем сигнал sig_hz) и третий не моргает индикаторами ошибку и позволяет выставить время/включить реле. Питание организованно так, что предполагается, что если на МК1 есть питание, то и на 1ом контакте реле1 есть сетевое. Поэтому если обрезать сигнал от этого контакта до МК1, МК3 уже будет видеть ошибку. На и залипшее реле тоже сразу после проверяется/определяется и будет ошибка. Ошибка пропадает только после передергивания питания(даже если "на горячую" устранить причину, ее вызвавшую). *усталый мяу*
С помощью usb-ttl, Putty и осцилла на рабочем устройстве подобрал скорость и формат (21000, 8N2) uart при котором посылка удобоваримо читается, далее подавая сигнал на пин, которым МК1 мониторит состояние первого контакта реле, примерно понял часть смысла посылки.
Далее на ардуинке пробовал посылать воссозданную посылку (ардуина 328pb вместо утраченного атмега48) - ошибку начинало моргать сразу. Методом тыка с помощью логического анализатора, наблюдая одновременно сигналы с оригинального МК и клона, подбирая скорость передачи с клона и одновременно подбирая паузу между этими однотипными посылками, добился какой-то, видимо, достаточной для МК2 идентичности сигналов, что устройство заработало и можно было выставлять таймер/включать реле. Т.к эксперименты проводились на инвалидной ардуине(часть аналоговых входов сожжены), а в устройстве использовались именно они, поэтому в скетче ноги были переназначены ввиду чего я не мог впаять именно этот экземпляр в устройство.
...Заказал ардуинки, прошил скетчем, к которому пришел, впаял МК в плату и все как бы как и раньше - заработало, но тестировал я раньше по минуте максимум, так вот если поставить таймер на большее время, допустим 27минут, то за это время какое-то рандомное кол-во раз буквально на секунды 2-3 релюхи размыкаются и снова срабатываю. Полагаю, что в это время МК2 почему-то ресетится, сужу по тому что он на эти 2-3 сек перестает слать sig_hz в адрес МК3 (таймеру). Что интересно таймер продолжает считать (МК не ресетится и не фиксирует никакую ошибку).
В устройстве для МК1 питается от бестрансформаторного БП (топология с гасящим кондером), а для питания обмоток реле, драйвера реле и (через 78L05) микроконтроллеров 1,2 использован линейный трансформатор. Поэтому передача заветного сигнала "ОК" от МК1 к МК2 осуществляется через быструю оптопару. Чтобы подтыкаться анализатором или ttl-преобразователем в целях безопасности(да и удобней так) применяю две таких оптопары включ. последовательно, получается отвязка от обоих частей схемы. Попробовал взять объединить два устройства, сигнал (полностью правильный, оригинальный сигнал) с МК1 одного устройства, подавал на МК2 второго, так вот второе устройство тоже начинает глючить так же непрогнозируемо. Это наводит на мысль, что дело не в формате, скорости, кадре или какой-то частично неправильной информации в посылке, а типа контроллеры толи как-то синхронизированы что-ли. Уже после этого заметил, после пониж. трансформатора, до диодного моста, через резистор идет дорожка к аналоговому пину 168меги. Собственно, я продолжу эксперименты так и так, но раз уж тут закралось подозрение о наличии синхронизации, корректировки хз как назвать. Вот и решил задать некоторые вопросы, возможно кто-то с опытом работы с контроллерами и протоколами общения увидит что-то очевидное, подскажет на что обратить внимание.
Ну и пара вопросов: у меня получилась странная скорость uart, в ходе подгонки длительности байт в кадре. При 21053 почти одинаковая длина - расхождение длины пакета из 40 символов 1-2mS (расхождение оригинального и сигнала-клона). - Эта скорость похожа не близка ни к какому стандарту/протоколу случайно?)
Ну и какое-нибудь предположение почему МК2 не сразу после включения таймера начинает глючить, а может и на 3ей и на 10ой минуте начать. У самого подозрение что я отлаживал сигнал на ардуине, где питание камня было 4,9в, а впаяв сюда с питанием 4,3 может уже частота изменилась и длительность байта. Но почему тогда глюк проявляется не каждый относительно одинаковый промежуток времени(по накоплении критической погрешности)?
Спасибо за внимание


