Помочь клонировать посылку uart между atmega-ми

Обсуждаем контроллеры компании Atmel.
Ответить
Example
Родился
Сообщения: 6
Зарегистрирован: Чт июл 06, 2023 01:23:56

Помочь клонировать посылку uart между atmega-ми

Сообщение Example »

Всем привет, пришел просить совета/ов, ибо свего опыта не имею.
Суть, сначала вкратце, чтоб понять, стоит ли вникать в дальнейшую кучу букв :lol:
Есть два одинаковых устройства, на каждом по три Атмеги, одна из них передает другой по 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 может уже частота изменилась и длительность байта. Но почему тогда глюк проявляется не каждый относительно одинаковый промежуток времени(по накоплении критической погрешности)?
Спасибо за внимание :tea:
Реклама
24Natan
Держит паяльник хвостом
Сообщения: 974
Зарегистрирован: Пн май 27, 2024 14:45:54

Re: Помочь клонировать посылку uart между atmega-ми

Сообщение 24Natan »

в свете вашего описания вы рискуете стать вечным исследователем этой "чужой" системы...тут или покупать другую или делать заново свою...
--------
в пока несгоревшей системе надо принять меры к недопущению повторения сгорания входов (вы выяснили причину этого ?)
с минусами в моей карме список тех, кого народная мудрость рекомендует обходить стороной...)))
Реклама
Example
Родился
Сообщения: 6
Зарегистрирован: Чт июл 06, 2023 01:23:56

Re: Помочь клонировать посылку uart между atmega-ми

Сообщение Example »

От этих вариантов меня пока удерживает, что я получаю удовольствие, когда продвигаюсь ближе к цели)) Просто сейчас понимаю, что скорей всего уткнулся во что-то что считается очевидным в кругах проектировщиков таких устройств.
-
Да, характеристики конденсатора меняются от старости, а он там задает величину напряжения, питающего этот самый МК.
24Natan
Держит паяльник хвостом
Сообщения: 974
Зарегистрирован: Пн май 27, 2024 14:45:54

Re: Помочь клонировать посылку uart между atmega-ми

Сообщение 24Natan »

Example писал(а):характеристики конденсатора меняются от старости, а он там задает величину напряжения
какое интересное объяснение...ладно, без схемы всё равно не понять... :)
с минусами в моей карме список тех, кого народная мудрость рекомендует обходить стороной...)))
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
Energizer-A
Вымогатель припоя
Сообщения: 617
Зарегистрирован: Вт мар 03, 2015 20:13:46
Откуда: рядом с "не резиновой" живу в деревне

Re: Помочь клонировать посылку uart между atmega-ми

Сообщение Energizer-A »

Не все буквы удалось понять .. да и читать такое очень сложно - много их..
Скорость порта однозначно говорит что разработчик упоротый поклонник теории заговора и от такого придурка ожидать гадостей стоит не только каждые 27 минут, а ещё и зависимость будет от фаз Луны..
Стать вечным исследователем этой поебени у вас действитель все шансы.
Без понимания что это за комплекс или устройство у меня не хватило таланта телепатии хотя всегда был уверен в его наличии.
Бросьте изучение укуренного и разработайте заново нормальное если это не какой-то ядерный секретные техпроцесс- точно будет быстрее и лучше, или купите если это возможно - быстрее и явно дешевле чем ходить по граблям
Реклама
roman.com
Друг Кота
Сообщения: 9153
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: Помочь клонировать посылку uart между atmega-ми

Сообщение roman.com »

Не все буквы удалось понять ..))
Example писал(а):При 21053 почти одинаковая длина
что за скорость такая... нет такой скорости в списке скоростей ATmega48PA/88PA/168PA/328P...
:dont_know:
Screenshot_1.jpg
(86.66 КБ) 56 скачиваний
Example писал(а):Эта скорость похожа не близка ни к какому стандарту/протоколу случайно?)
не близка ни к какому стандарту...
:dont_know:
Example писал(а):У самого подозрение что я отлаживал сигнал на ардуине, где питание камня было 4,9в, а впаяв сюда с питанием 4,3 может уже частота изменилась и длительность байта.
на ардуине стоит кварц - 16 мгц.
скорость зависит от этого кварца...
когда работает кварц напряжение питания значения не имеет... от 2,5 V до 5 V скорость будет одинаковой...
Screenshot_2.jpg
(84.77 КБ) 63 скачивания
скорее всего там скорость 19200... просто вы не правильно посчитали))
это стандартная скорость многих устройств...

Добавлено after 3 minutes 5 seconds:
[uquote="24Natan",url="/forum/viewtopic.php?p=4587098#p4587098"]
Example писал(а):характеристики конденсатора меняются от старости, а он там задает величину напряжения
какое интересное объяснение...ладно, без схемы всё равно не понять... :)[/uquote]
что не понять ?
обычный бестрансформаторный блок питания с гасящим конденсатором...
типа такого...
они все одинаковые))
Screenshot_3.jpg
(39.17 КБ) 64 скачивания
в таких блоках питания напряжение зависит не только от гасящего конденсатора , но и от тока нагрузки...
короче... фиговые они по своей природе))
:?
Реклама
24Natan
Держит паяльник хвостом
Сообщения: 974
Зарегистрирован: Пн май 27, 2024 14:45:54

Re: Помочь клонировать посылку uart между atmega-ми

Сообщение 24Natan »

так как этот блок питания привёл к отгоранию входов ???...напряжение задаётся стабилитроном, а не конденсатором...
----
меня, если и интересовал ответ (и то - не сильно), то от ТС, а не от всех, кто умеет гадать...))))
Последний раз редактировалось 24Natan Вт июн 04, 2024 13:38:33, всего редактировалось 1 раз.
с минусами в моей карме список тех, кого народная мудрость рекомендует обходить стороной...)))
roman.com
Друг Кота
Сообщения: 9153
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: Помочь клонировать посылку uart между atmega-ми

Сообщение roman.com »

напряжение задаётся стабилитроном, а максимальный выходной ток конденсатором...
если ток больше допустимого... напряжение падает...
поэтому напряжение ещё зависит от конденсатора... который (по версии ТС) мог высохнуть)) хотя бумажные конденсаторы не сохнут...
и об этом и написал ТС... в своей манере правда))
но смысл и так всем ясен... всем кто в этом хоть чуть-чуть разбирается))

а дальше...
сгорел МК... надо менять МК... надо сливать прошивку... а прошивка залочена...
а дальше...
Приключения Шерлока Холмса и доктора Ватсона...
:tea:
[uquote="Example",url="/forum/viewtopic.php?p=4586993#p4586993"]С помощью usb-ttl, Putty и осцилла на рабочем устройстве подобрал скорость и формат (21000, 8N2) uart при котором посылка удобоваримо читается[/uquote]
вообще какая-то не стандартная тема...

может правильней (19200, 8N1) uart - во стандартная тема))
стандарт.jpg
(34.11 КБ) 66 скачиваний
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25261
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: Помочь клонировать посылку uart между atmega-ми

Сообщение КРАМ »

[uquote="roman.com",url="/forum/viewtopic.php?p=4587329#p4587329"]что за скорость такая... нет такой скорости в списке скоростей ATmega48PA/88PA/168PA/328P...[/uquote]
Никакого "списка скоростей" в даташите нет и быть не может.
Это таблица ПРИМЕРОВ для некоего ряда рейтов, которые принято называть "стандартными". Но выбрать коэффициент деления можно любой из доступного ряда. Лишь бы рейт второго МК был в пределах допустимой ошибки по отношению к первому. Это зависит от количества захватов каждого бита и может быть примерно от 2 до 5%.
Аватара пользователя
Energizer-A
Вымогатель припоя
Сообщения: 617
Зарегистрирован: Вт мар 03, 2015 20:13:46
Откуда: рядом с "не резиновой" живу в деревне

Re: Помочь клонировать посылку uart между atmega-ми

Сообщение Energizer-A »

Есть плияда редкостных 3,14 которые шифруются с извращениями в том числе вочдогами и зависалками..
Такое наблюдается в оборудовании за которое хотят бешбабла уверяя что внутри сакральный новхав.
И если это именно тот случай - лучше купить запчасть чем потратить время на декод Энигмы.
roman.com
Друг Кота
Сообщения: 9153
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: Помочь клонировать посылку uart между atmega-ми

Сообщение roman.com »

Если нужна нестандартная скорость UART, то вместо кварца подключаем внешний генератор и устанавливаем любую скорость UART от 0 до 2 мбит/c.
Причём меняем скорость UART плавно, с помощью внешнего генератора ))

Вопрос: а кому нужна нестандартная скорость UART ?
Ответ: никому.
:tea:
Example
Родился
Сообщения: 6
Зарегистрирован: Чт июл 06, 2023 01:23:56

Re: Помочь клонировать посылку uart между atmega-ми

Сообщение Example »

24Natan, не стал вас поправлять :write: Входа отгорели - это я про свою 328-ю мегу с которой начал эксперименты, типа была под рукой. И у нее как раз были отгоревшими входа, которыми, если ее припаять в устройство, она должна считывать состояния реле. А в устройстве 48-я по питанию ушла в мир иной.
Насчет этого ущербного бестрансформаторного ист.питания: вот выше написал кто-то что напруга в них задается стабилитроном на выходе, а гасящим кондером ток. Я же пытался поднять напряжение с 4.3в до 4.9в , заменив стаб, установив на 4.9 но напруга по прежнему была 4.3. Кста, в моменте я даже забыл его впаять, включил без стаба, при этом напруга была те же 4.3в. Никогда не вникал в работу такой схемы, т.к. редко встречал.
roman.com, утаил тот факт, что свою 328-ю тоже перевел на внутренний генератор 8MHz(т.к. на плате устройства кварца у 48-го нет). Ниже выложу скрины с фьюзами 48,88-го. Один из них, судя по включенному делителю, работает на 1MHz, хотя в данном контексте это возм. не важно. И да, сейчас рабочую плату закинул на стол, чекнул анализатором. В общем 19200 не канает - не понимает ни одного символа, прога считает, что в каждом байте ошибки фреймов и тд.(для 19200 пробовал 8n1 и 8n2). А вот 21000 8n1 читает также отлично как и 21000 8n2 (спасибо за наводку, может в этом трабл, нужно будет сравнивать что это меняет :tea: ).
Еще соврал в первом посте, что добился расхождения ширины пакета в 1-2мС, на самом деле там ~0.2мС (скрин тоже приложу, нижний сигнал оригинальный, верхний клон).
За инфу с внешним генератором спасибо, пригодится как теоретическое знание.
Кстати, мое предположение насчет зависимости частоты от питания, наверное, отпадает, т.к. устройство работает десятилетие, там и электролит на выходе сохнет и с гасящим (хз что он делает), крч питание может плавать и уйти за десятилетие от задуманного, но контроллеры продолжают безошибочно понимать друг друга (видимо это учтено, может в 2-5% укладывается, про которые сказал КРАМ). Но мне конечно стоит перепроверить/сравнить длительности посылок, т. к. я пересадил 328-ю с ардуины где 4.9-5в на питание 4.3в. Разгребу стол, выведу одновременно на экран сигналы с обоих устройств...
Вложения
fuses48.png
(129.11 КБ) 57 скачиваний
fuses88.png
(142.16 КБ) 66 скачиваний
nijniy-original.jpg
(208.92 КБ) 68 скачиваний
Аватара пользователя
Energizer-A
Вымогатель припоя
Сообщения: 617
Зарегистрирован: Вт мар 03, 2015 20:13:46
Откуда: рядом с "не резиновой" живу в деревне

Re: Помочь клонировать посылку uart между atmega-ми

Сообщение Energizer-A »

Удивительная толерантность к битам четности может говорить что для уарта написали свой обработчик регистров состояний на асме - по этому попытки ардуинить могут быть провальными.. могли использовать полностью самописный протокол или диковинный для большинства человеков типа dmx
Example
Родился
Сообщения: 6
Зарегистрирован: Чт июл 06, 2023 01:23:56

Re: Помочь клонировать посылку uart между atmega-ми

Сообщение Example »

Разобрался, глюк в итоге происходил из-за плохого контакта одного из сигналов между 168 и 88 мегами (они на разных платах, соединены кабелем).
А состав и формат посылки-клона в итоге устраивали 88-ю. Разве что подправил скорость на 20000, с такой длительность бит одинаковая. Длительности посылок получились разные ввиду того, что в оригинале используется 1,5 стоп-бита или 1 стоп-бит и меж-байтный интервал примерно пол-бита. Я не нашел, как на ардуино 1,5 стопа реализовать. Energizer-A, вы правы насчет толерантности, в данном случае мега88 понимает и 1 и 2 стоп-бита. Всем спасибо за помощь :love:
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25261
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: Помочь клонировать посылку uart между atmega-ми

Сообщение КРАМ »

[uquote="Example",url="/forum/viewtopic.php?p=4593790#p4593790"]в данном случае мега88 понимает и 1 и 2 стоп-бита.[/uquote]
Стоп-бит - это всего лишь пассивная пауза между сплошным потоком байт. Поэтому при неавтоматической (без ДМА или ожидания свободного буфера) отправке никакой разницы между 1 и 2 стоп-битами не будет.
Важно лишь обнаружение пассивного уровня приемником в точке контроля стоп-бита.
Ответить

Вернуться в «AVR»