Здрасте всем. Щас в отпуске, но меня не отпускает мысль о решении загадки, которая возникла за день до отъезда.
Далее по тексту "Arduino" читать как "плата Arduino". Ни какой арду-зависимости тут нет. Прошики написаны на ассемблере.
Значит, имею полетный контроллер, на базе меги_2560. В полетнике есть несколько UART. назовем их условно uart1, uart2 и тп..
Имеется устройство на базе платы arduino mini (это, та у которой нет на борту USB) в связке с платой преобразователем на базе rs232, и второй вариант на базе arduino nano (эта с USB ch 340)
Прошивка написана мной собственноручно на ассемлере. Задача контроллера читать поток данных с полетного контроллера и перекодировать его в собственный формат. (Обе арду-платы прошиты одинаковой прошивкой)
Сперва работал с первым вариантом ( тот что без usb ) и проблем не возникало, но ради удобства перешел на ардуино_нано ( который с usb ) и оказалось, что этот вариант не читает uart1 с полетного контроллера, но при этом нормально читает uart2 ( и uart3 )
Хотя uart1 полетника не отличается от uart2! Даже осциллографом глянул, чтоб на всякий случай убедится.. Амплитуда одинаковая - 5 Вольт. Записал семплы с обоих портов - они идиентичны!
Ну и самое смешное: первый вариант ( arduino mini без usb ) читает нормально все порты на полетнике!
Ну, думаю, "значит" проблема в arduino nano... ( это которая с usb )...
Смотрю на плату, а там на tx-rx светодиодики есть... Отпаял их - ничего не изменилось..
Думаю, может проблема в TTL конверторе ch340, установленном на arduino nano.. Подключился к tx-rx на arduino nano ( которая с usb ) преобразователем rs232 из первого варианта, не отпаивая родной TTL конвертор ch340. Все равно не читает. Еще раз подчерну, родной (ch340) TTL не отпаивал...
Загадка заключается в том, что uart2 полетника arduino nano читает без проблем. А uart1 не отличается от uart2. Как такое возможно?
П.С. предположу, что uart1 на плате полетника разведен не совсем корректо, но замечу, что первый вариант ( arduino mini ) работает нормально со всеми портами.
еще под подозрением TTLконвертор на плате arduino nano ch340 - ведь я его не отпаивал. Хотя с uart2 оно работает.
П.П.С. отличие в прошивках все же есть: это наличие ватчдога и залоченная прошивка на arduino nano
_________________ не зная броду не лезь к вольтмоду
УАРТы софтовые или аппаратные? И в чем заключается это "не читает"? Не распознает старт-бит, выдаёт ошибку кадра, не соответствует скорость связи, приходят неверные данные, не та полярность сигнала?
Видимо Вы не внимательно читали. Связка Ардуино_Мини + rs232 читает любой из uart. А тот же самый код, но на плате Ардуино_Нано не читает uart1, но читает uart2 и 3...
все настройки uart-ов естественно одинаковые. говорю же: даже осциллографом посмотрел на всякий случай. ( записанные семплы идиентичны )
Если я ничего не путаю, то на полетнике все uart хардварные. Вот только uart1 подключен через мультиплексор.... Может в этом дело ? (но ардуино мини работает исправно, значит не в этом)
Неисправность проявляется так: на плате ардуино нано есть мега328, внутри нее программа, которая использует арпаратный уарт микроконтроллера. Она читает поток по Rx и перекодирует его в собственный формат и отправляет в Tx. Через встроенный в arduino nano конвертор на базе ch340 микроконтроллер подключен к ПК, на котором крутится терминалка. Так вот на экране ПК я не наблюдаю буковок и циферок в случае подключения к uart1 полетника.. Правда осциллографом не смотрел что на выходе у Меги 328 в этом случае...
_________________ не зная броду не лезь к вольтмоду
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Помнится, была такая шутка, мол, если не учить физику, то жизнь будет полна загадок ☺ Вот и здесь похоже: если не читать мануалы…
_________________ Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда. Я на гитхабе, в ЖЖ
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Читал внимательно и перечитывал несколько раз, и даже сейчас трижды перечитал. Но не увидел главного - поведения самой программы в микроконтроллере. Можно в Протеусе создать проект, закинуть прошивку, эмулировать УАРТ и пошагово просмотреть поведение кода. Потомучто так гадать можно сколько угодно. Может, просто с компом нет связи или не тот порт уарта настроен. Я не спец в ардуинах, но на разных платах стоят одинаковые ли микроконтроллер и пины совпадают ли? Щас загуглил - есть разные версии ардуино нано с разными контроллерами.
микроконтроллеры одинаковые - мега 328п с распиновкой проблемы нет. в коде я не сомневаюсь на другой платке все работает как часы. проверено годом эксплуатации.
думаю, что гальваническая связь не такая как должна быть. может ch340 голову делает может еще чего.. ( может мега328 подделка китайская )
В протеус код сунуть не могу. в отпуске я. за день перед отъездом столкнулся с этим. А сейчас мысли не отпускают. Вот и гадаю, что же это может быть... Хотя бы теоретически. Куда копать.
Добавлено after 2 minutes 48 seconds: как работает ch340 ? линии tx rx обрабатываются парраллельно одновременно или по осереди ? он ведь подключен обеими линиями к микроконтроллеру
а в случае ардуино мини и rs232, последняя подключена только к линии TX.
хотя тоже не клеится эта версия, так как с uart2 и uarr3 оно работает нормально.
_________________ не зная броду не лезь к вольтмоду
В китайской Arduino Nano между CH340G/C и ATmega328, вместе со светодиодами и их резисторами на +, стоят два резистора 1 kOhm, smd. Отпаяйте их. А я бы ничего не отпаивал по хардуер, а конструкцию перенес бы на Arduino Mini, они без CH340G/C.
конструкцию перенес бы на Arduino Mini, они без CH340G/C.
Ну я с нее и переехал. Я же писал об этом. Придется городить еще одну плату с rs232, так как данные нужно толкать в USB. Надо не костылями проблему решать, а кардинально. Про резисторы понял, но мне кажется это проблему не решит. Не может от резистора зависеть с каким портом будет работать микроконтроллер... Хотя натолкнуло на мысль. Может там ток недостаточный в линиях tx rx uart1. Это уже похоже на правду.
_________________ не зная броду не лезь к вольтмоду
Далее по тексту "Arduino" читать как "плата Arduino". Значит, имею полетный контроллер, на базе меги_2560. В полетнике есть несколько UART. назовем их условно uart1, uart2 и тп..
Насколько я помню, у Ардуины всего один UART. Откуда берутся ещё UARTы?
У меня такого не было, часто посылаю сигнал через другой преобразователь RX/X и с много модулей проблем не было. Предположил, что выполнили программного проверку, поэтому и предположил аппаратную проблему. Задайте статический режим пинов или очень медленную скорость и посмотрите уровни по крайней мере: с вольтметром. Проверить легко: мешает или нет апаратно CH340G/C (+ г. транслейт БГ->РУ).
На сколько я помню Arduino это проект. Это как сравнивать яблоки и килограммы. Если вы говорите про конкретную плату, то называйте её и не забудьте озвучить МК установленный на оную, а то всякие китайские версии существуют. А если Вы пытались меня упрекнуть в неграмотности, то гляньте сперва датащит на 2560, а потом продолжим (нет) этот бесполезный диалог.
посмотрите уровни по крайней мере: с вольтметром. Проверить легко: мешает или нет апаратно CH340G/C (+ г. транслейт БГ->РУ).
Уровни смотрел сперва мультиметром, а потом и осциллографом - все в норме. А вот ток на линиях tx rx не проверял. Возможно даже что то не согласованно...
с микрухи ch340 отрежу линию RX микроконтроллера ( прям дорожку перережу..) В этом проекте она не нужна, а в случае чего восстановить дело двух минут..
_________________ не зная броду не лезь к вольтмоду
Если на нанке остался неудаленный бутлоадер - будут проблемы первые 2-5 секунд. И ... всегда помним, что CH340 (на ардуинке нано) еще и выводом reset управляет.
По умолчанию во всех адуринках установлен бутлоадер. Если его не удалить общим стиранием кристалла - он там и останется. Писать на ассемблере всю программу под мегу 328Р (32 килобайта памяти программ).... Это таки садомазохизьм... Даже для меня...
В то же время использовать нанку или про-мини для "малых" прожек (до 4 килобайт кода) как-то ЖАБО давит... Но тут уж у кого чего больше залежалось.
По умолчанию во всех адуринках установлен бутлоадер. Если его не удалить общим стиранием кристалла - он там и останется. Писать на ассемблере всю программу под мегу 328Р (32 килобайта памяти программ).... Это таки садомазохизьм... Даже для меня...
В то же время использовать нанку или про-мини для "малых" прожек (до 4 килобайт кода) как-то ЖАБО давит... Но тут уж у кого чего больше залежалось.
Вы не правы. Изучите вопрос.
_________________ не зная броду не лезь к вольтмоду
Сейчас этот форум просматривают: Paktok и гости: 27
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения