Клон платы UNO с затертой микрухой usb-uart и странным коннектом из ПК (то 9600 то 115200)

Всем привет. Есть клон arduino UNO с мегой 328pb и затертой 16-ногой микрухой преобразователем usb-uart. В плату через usbasp зашит GRBL (пробовал и с загрузчиком ардуиновским, и без него, на сиитуацию ниже это не влияет).

Наблюдаю следующее поведение:

  1. При подключении кабеля usb к плате можно подцепиться только на скорости 9600. В порт ардуина возвращает один ascii символ и ощущение такое, что он что-то означает, т.к. если одинаково мучить плату, возвращаются одинаковые символы (то есть, ситуация воспроизводимая).
  2. Если закрыть порт, то теперь можно его открыть только на 115200 и теперь в порт отзовется grbl.
  3. Если теперь закрыть порт, то откроется он только на 9600 с символом мусора в возврате.
    И так по кругу, то 9600, то 115200.

При этом, Terminal byBray (такая софтина для работы с портами) с первого раза открывает порт на 115200 всегда, сколько угодно раз подряд.
При этом, UGS (сендер кодов g-code в ардуину) может достучаться до grbl только через раз.
При этом Candle (другой сендер gcode) вообще не может достучаться до ардуины.
Ардуино IDE пишет в плату тоже через раз, нужно вне её подключиться/отключиться на 9600 и затем IDE откроет порт и прошьет плату.

Распиновка затертой микрухи отличается от распиновки ch340. Несовпадение по ногам полное. Но рядом с этой микрухой есть колодка под её uart (4 контакта), видимо, она тоже программируется. Но никакой инфы об этом в интернете нет.

Плата вот такая, разъем “для программирования” интерфейса usb/uart - Х1, сам интерфейс затерт, это и здесь видно. Атмега в мелком корпусе.

Вопрос: встречался ли кто-то из вас с этой ситуацией? Что делать, выкидывать ардуину? Или есть какой-то способ привести её поведение к нормальному?

Присмотрелся к иллюстрации, и оказалось, что на моей разводка интерфейса отличается. То есть, их ещё и разные ревизии были.


(на провод вместо С8 не обращайте внимания, это я пытался понять, как интерфейс делает сброс Атмеги, но в ту сторону копать оказалось бесполезно)

Как то непонятно. Что пробовал?

ардуино ide генерит хекс как просто программы, так и программы с ардуиновским бутлоадером. Так вот я зашивал UsbAsp’ом оба варианта, разницы не дало

А на какую разницу вы расчитывали?

Не то чтобы я на что-то рассчитывал, просто хотелось понять, в чем прикол открытия порта только попеременно на 9600 или 115200 бит/сек , вдруг какая-то связь все-таки была

Порт просто открывается. Скорость передачи/считывания определяют конечные устройства. В мониторе порта нужно устанавливать именно ту скорость, которая задана в прошивке.

Если есть внешний USB-UART конвертор, попробуйте подключиться через него к пинам 0 и 1 платы

Возможно я неправильно сформулировал вопрос выше.
Так вот. Есть ардуина, в неё зашит grbl , в его настройках забита скорость 115200. Но софт в ПК не коннектится сразу после подключения ардуины на скорости 115200. Сначала нужно подцепиться на 9600, разорвать соединение, и затем порт откроется на 115200. Мне хотелось, чтобы предварительного открытия/закрытия на 9600 не было, чтобы работало сразу на 115200. Без внешних конверторов, просто через шнур usb в ардуину.

В общем, чтобы всё работало так, как оно работает в 99% случаев

Тогда ищите ардуину с беспроблемным конвертером. А чтобы убедиться, что у вас проблема именно с затертой микрухой, попробуйте подключиться внешним конвертером

Как я понимаю, вас не устраивает обмен с grbl? Сама Ардуино скетчи грузит нормально?

Залейте простой скетч с выводом пары строк на 115200.
Попробуйте соединиться с ПК.
Это поможет исключить влияние вашей прошивки.

нет, только если сторонним софтом откроешь/закроешь порт на 9600. После этого один раз можно прошить через ардуино ide.
После прошивки, нужно снова открыть/закрыть порт на 9600.

Вообще, сейчас подумал, что возможно это какая-то специализированная плата от какого-то конструктора, в которой usb-uart интерфейс прошит специально под нужный ПК софт этого конструктора, чтобы плату было максимально сложно использовать без него. Иначе этот гемор сложно объяснить

именно так я и делал: шил ардуину через UsbAsp, это внешний программатор, который подключается через 6пин колодку

Я говорил не про программатор, а про USB-TTL конвертер. Это разные приборы

И назначение у них разное

А, ну да, так я ещё не пробовал. Но, уверен, работать будет. Т.к. есть ровно одна пк-софтина, которая всегда открывает порт на 115200 и GRBL всегда в неё отвечает штатно. Видимо как-то она умеет работать с портом лучше всех. Это Terminal by Bray.

А вот любой другой софт работает с разными наборами причуд.

Собссно, вопрос то изначально был простой: встречался ли кто-то ещё с подобным поведением ардуины?

Что с этим поведением делать, плюс-минус ясно: либо привыкать к старту “через раз”, либо менять ардуину, потому что даже ch340 на эту плату не подкинешь - плата разведена не под неё.

Что проще-то?

Хорошо бы понять твои формулировки… Как именно ты “открываешь/закрываешь” порт? С помощью чего?
Что значить “прошить” по твоему? Загрузить скетч или прошить программатором?

Так не бывает. Если ИД оборудования не меняется, то порт будет конектится всегда на скорости определённой в настройках системы. Посмотреть можно в диспетчере устройств. Там же можно установить сторость порта по умолчанию. Менять скорость порта можно пользовательской программой. К тому же при использовании USB соединения понятия скорости для ПК теряет смысл, т.к. обмен по USB каналу всегда идёт на максимальной скорости режима USB. В этом случае тайминг последовательного канала целиком определяется пользовательской программой.

Объясняю: Беру Putty, тип соединения Serial, порт ардуины, скорость 9600. Кнопка Open, открывавется окно консоли, я получаю в него один символ от ардуины. Всё, окно можно закрывать (порт закроется). Следующее соединение Putty на 9600 не откроет, заругается. А на 115200 откроет.

Это когда берешь UsbAsp, цепляешь его к колодке ICSP, на компе открываешь например AVRdude (сто лет назад именно им и шил в основном всё ATMELовское, оно и сейчас работает) и заливаешь в ардуину хекс, собранный в arduino IDE. Этот способ работает всегда.

Можно прошить и через Arduino IDE, но нужно подгадать и шить именно тогда, когда usb/uart интерфейс на ардуине ждёт подключения именно по 115200. А если не ждет, то при помощи Putty открыть/закрыть порт на 9600.

Вот такая сложная для понимания история, я и сам долго не мог понять, что происходит - рандомно плата то шьется то нет, то коннектится то нет.

Ладно.