Будет ли загрузчик обмениваться данными через TX0 / RX0

Я новичок в программировании на Arduino, но у меня большой опыт низкоуровневого программирования ранних процессоров, так как я начал работать с Z80, 8088 и т. д. Я рассматриваю возможность разработки крупного проекта с использованием Mega 2560. В проекте довольно много внешней логики, светодиодов и RPi. Таким образом, я не хочу перегружать регулятор напряжения 2560 и действительно хочу использовать питание 5 В Common Rail с импульсным источником питания. Тем не менее, мне также нужен доступ к отладке/консоли, так что это дает мне непосредственную проблему прямого питания 5 В, в то время как плата питается 5 В от порта USB, что является нет-нет. Решение оказалось довольно простым — использовать преобразователь USB в последовательный порт на базе CH340 и подключить его к RX0, TX0 и Reset (выход DTR подключен через блокировочный конденсатор), но с отключенным выходом 5 В. С этой настройкой Arduino вполне успешно взаимодействует с последовательным монитором на основе IDE (скетч был загружен через встроенный USB-порт), но при попытке загрузить новый скетч по этому маршруту AVRDude терпит неудачу с тайм-аутом. В начале загрузки процессор сбрасывается, но загрузчик не качается с помощью AVRDude (правильно). Это известная функция или я что-то пропустил?

, 👍1

Обсуждение

загрузчик слушает RX0/TX0. встроенный USB-чип подключен к этим контактам, @Juraj


2 ответа


Лучший ответ:

1

Проблема решена. Автономный преобразователь на базе CH340 по какой-то причине не достаточно человечен, чтобы надежно отключить линию RX0 при подключении к Mega 2560 (также с преобразователем CH340 на борту). Я видел предложения, опубликованные в разных местах, что это может быть проблемой в отношении DTR (хотя у меня нет с этим проблем). Мое решение состоит в том, чтобы вставить неинвертирующий буфер с открытым коллектором 7417 между выходом автономного преобразователя и входом RX0 на плате 2560. Мне не удалось найти схему платы Mega 2560, чтобы определить размер подтягивающего резистора, но представьте, что он должен быть относительно небольшим. Спасибо тем, кто внес предложения.

,

0

Похоже, вы не соединили земли вместе. Попробуйте подключить землю от преобразователя USB в последовательный порт к Arduino.

,

Поскольку связь с последовательным монитором работает, это, вероятно, не ошибка., @the busybee

Хотел бы, чтобы это было так просто. Основания подключены, и, как предполагает @busybee, связь с последовательным монитором не работала бы, если бы они не были, @Davidas

@Davidas - я не видел заземления, упомянутого в вашем вопросе, поэтому я и взял эту идею. Есть ли на Меге кнопка сброса? Если это так, вы можете попробовать перезагрузить Arduino в нужный момент при загрузке скетча. Еще одно предложение — попробовать другой тип преобразователя USB в последовательный порт (тот, в котором не используется микросхема CH340)., @VE7JRO

@ VE7JRO Извините, что не упомянул GND - я упомянул все остальное. Да, на плате есть кнопка перезагрузки, и я тоже пробовал, но безрезультатно (т.е. она сбрасывает процессор, но загрузчик не взаимодействует с IDE). Возможно, мне действительно придется попробовать конвертер на основе FTDI - я полагаю, что перед тем, как я это сделаю, нужно задать вопросы: «Должна ли эта конфигурация работать?» и «Включает ли рукопожатие манипулирование CTS (который не отображается на плате 2560 и постоянно находится на высоком уровне на преобразователе)?», @Davidas