Всем привет. Есть клон arduino UNO с мегой 328pb и затертой 16-ногой микрухой преобразователем usb-uart. В плату через usbasp зашит GRBL (пробовал и с загрузчиком ардуиновским, и без него, на сиитуацию ниже это не влияет).
Наблюдаю следующее поведение:
При подключении кабеля usb к плате можно подцепиться только на скорости 9600. В порт ардуина возвращает один ascii символ и ощущение такое, что он что-то означает, т.к. если одинаково мучить плату, возвращаются одинаковые символы (то есть, ситуация воспроизводимая).
Если закрыть порт, то теперь можно его открыть только на 115200 и теперь в порт отзовется grbl.
Если теперь закрыть порт, то откроется он только на 9600 с символом мусора в возврате.
И так по кругу, то 9600, то 115200.
При этом, Terminal byBray (такая софтина для работы с портами) с первого раза открывает порт на 115200 всегда, сколько угодно раз подряд.
При этом, UGS (сендер кодов g-code в ардуину) может достучаться до grbl только через раз.
При этом Candle (другой сендер gcode) вообще не может достучаться до ардуины.
Ардуино IDE пишет в плату тоже через раз, нужно вне её подключиться/отключиться на 9600 и затем IDE откроет порт и прошьет плату.
Распиновка затертой микрухи отличается от распиновки ch340. Несовпадение по ногам полное. Но рядом с этой микрухой есть колодка под её uart (4 контакта), видимо, она тоже программируется. Но никакой инфы об этом в интернете нет.
Не то чтобы я на что-то рассчитывал, просто хотелось понять, в чем прикол открытия порта только попеременно на 9600 или 115200 бит/сек , вдруг какая-то связь все-таки была
Порт просто открывается. Скорость передачи/считывания определяют конечные устройства. В мониторе порта нужно устанавливать именно ту скорость, которая задана в прошивке.
Если есть внешний USB-UART конвертор, попробуйте подключиться через него к пинам 0 и 1 платы
Возможно я неправильно сформулировал вопрос выше.
Так вот. Есть ардуина, в неё зашит grbl , в его настройках забита скорость 115200. Но софт в ПК не коннектится сразу после подключения ардуины на скорости 115200. Сначала нужно подцепиться на 9600, разорвать соединение, и затем порт откроется на 115200. Мне хотелось, чтобы предварительного открытия/закрытия на 9600 не было, чтобы работало сразу на 115200. Без внешних конверторов, просто через шнур usb в ардуину.
В общем, чтобы всё работало так, как оно работает в 99% случаев
Тогда ищите ардуину с беспроблемным конвертером. А чтобы убедиться, что у вас проблема именно с затертой микрухой, попробуйте подключиться внешним конвертером
нет, только если сторонним софтом откроешь/закроешь порт на 9600. После этого один раз можно прошить через ардуино ide.
После прошивки, нужно снова открыть/закрыть порт на 9600.
Вообще, сейчас подумал, что возможно это какая-то специализированная плата от какого-то конструктора, в которой usb-uart интерфейс прошит специально под нужный ПК софт этого конструктора, чтобы плату было максимально сложно использовать без него. Иначе этот гемор сложно объяснить
А, ну да, так я ещё не пробовал. Но, уверен, работать будет. Т.к. есть ровно одна пк-софтина, которая всегда открывает порт на 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.
Вот такая сложная для понимания история, я и сам долго не мог понять, что происходит - рандомно плата то шьется то нет, то коннектится то нет.