Последовательный шлейф не работает с подключенными перемычками

Я новичок в программировании Arduino. Прежде чем приступить к чему-то более сложному, я сначала пытаюсь получить некоторые очень базовые функции, поэтому, используя некоторые примеры из альбома для рисования, я пытаюсь заставить работать самую базовую последовательную петлю. Я использовал скетч SerialEvent как точку отсчета, чтобы придумать это:

String inputString = "";
bool stringComplete = false;
int inByte = 0;

void setup() {
  // инициализируем сериал:
  Serial.begin(9600);
  // ждем подключения последовательного порта. Требуется только для родного порта USB
  while (!Serial) {
    ;
  }
  // резервируем 200 байт для inputString:
  inputString.reserve(200);
  Serial.println("Hello world\n");
}

void loop() {
  while (Serial.available()) {
    char inChar = (char)Serial.read();
    inputString += inChar;
    if (inChar == '\n') {
      stringComplete = true;
    }
  }
  if (stringComplete) {
    Serial.println(inputString);
    inputString = "";
    stringComplete = false;
  }
}

Когда я прошиваю этот образ на Arduino, а затем открываю последовательный монитор, все работает нормально. Как показано ниже, все, что я печатаю, возвращается ко мне после нажатия Enter:

успешная петля

Однако, когда я соединяю контакты TX и RX на плате, как показано здесь, все обстоит иначе:

arduino

Как только я это сделаю, последовательная связь полностью перестанет отвечать. Он по-прежнему печатает «Hello world» в начале, но больше не возвращает отправленные сообщения, как вы можете видеть здесь:

неотзывчивая петля

Я должен сказать, что даже когда он больше не возвращает сообщения, желтый индикатор «RX» на плате все еще ненадолго загорается, когда я нажимаю Enter. Но индикатор «TX» не горит. Обратите внимание, что оба индикатора загораются, если я отсоединяю перемычку.

Мне кажется, что то, что я пытаюсь сделать здесь, очень простое, и это не должно быть так сложно. Есть ли что-то очевидное, что я упускаю? Есть совет?

, 👍1

Обсуждение

поставь ATmega328p в сброс для проверки шлейфа или хотя бы залей скетч без Serial.begin. RX/TX 328p подключается к RX/TX чипа USB и к контактам RX, TX на разъеме. соединение контактов на разъеме вместе нарушает связь между 328p и чипом USB, @Juraj


2 ответа


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

0

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

  • к встроенному последовательному/USB-мосту, который обеспечивает связь с вашим компьютер
  • какое-то неопределенное внешнее последовательное устройство.

Подключение передатчика (передающий контакт) к двум приемникам — это нормально. запись будет получена обоими.

Подключение вашего RX к двум передатчикам не работает, вы можете читать данные, отправленные одним передатчиком.

На плате Uno вдоль последовательного соединения установлены резисторы. между основным MCU и последовательным/USB-мостом. Благодаря резистору на линии RX вы можете подключить внешнее устройство к последовательному порту MCU. порт: TX устройства имеет приоритет над мостом USB. Это означает, что основной MCU больше не может получать то, что вы отправляете с последовательного монитора.

,

2

Не могу комментировать, получается, что этот пример, который вы работаете, не очень подходит, так как RX и TX подключены напрямую к USB-подключению (для Arduino UNO), то есть вы можете использовать только эти пины Пока он загружается из Sketch, используется внешний источник питания для подключения Arduino, я рекомендую работать, если у вас есть датчик для проверки передачи данных через последовательный порт. Приветствую

,