Lilypad отправляет поврежденные данные по последовательному порту

У меня есть Arduino Lilypad с этим простым кодом, где я пытаюсь написать простое сообщение на последовательную консоль. Скорость передачи данных установлена на 9600 как в коде, так и в последовательной консоли, и я использую инструмент FTDI UART. Однако вывод, который я получаю, поврежден, и я не уверен, в чем может быть причина. Любые идеи и предложения приветствуются. Спасибо!


void setup() {
  pinMode(LED_BUILTIN, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  digitalWrite(LED_BUILTIN, HIGH);
  delay(1000);
  digitalWrite(LED_BUILTIN, LOW);
  delay(3000);
  Serial.write("Hello World");
}

Arduino подключен к инструменту FTDI, как показано здесь

, 👍-1

Обсуждение

@jsotola У меня это подключено, как показано на картинке здесь https://i.stack.imgur.com/axOsO.png, @Jozef Cipa

@jsotola обновлено, но это не отвечает на мой вопрос, @Jozef Cipa

В качестве эксперимента попробуйте изменить код, чтобы последовательный порт был 4800, а если это не сработает, попробуйте 119200. Альтернативно измените скорость в окне «Монитор терминала», чтобы удвоить или уменьшить скорость вдвое., @Nick Gammon

Я говорю это потому, что похоже, что скорость передачи данных неправильная. Не меняйте обе настройки одновременно., @Nick Gammon

Светодиод мигает с задержкой в 3 секунды?, @Nick Gammon

@NickGammon, изменив скорость передачи данных на 4800, сохранив при этом 9600 в терминале, решил эту проблему. Теперь я вижу в консоли правильно написанное «Hello World». Можете ли вы опубликовать это как ответ здесь, и я отмечу его как решенное? И еще, не могли бы вы объяснить, почему так? Большое спасибо, @Jozef Cipa

Он не должен. Ответ должен следовать из вопроса. То, что он вам предложил, было очень хорошим диагностическим советом. По крайней мере, он это понял и на этот раз написал это в комментарии. То, что вы добавили в свой комментарий, — это информация, которую можно включить в вопрос. *Реальный* ответ на вопрос, почему (или «что» следует из того, что вы спросили) до сих пор неизвестен., @timemage

То, что мы имеем сейчас, — это просто необъяснимый обходной путь. Нам все еще нужно выяснить причину, _почему_ вам нужны разные скорости передачи данных для вашего Lilypad и ПК. Возможно ли, что IDE думает, что у Lilypad тактовая частота 16 МГц?, @the busybee

@timemage Мой ответ (сейчас опубликованный) **вытекал** из вопроса. Из чего еще это следует?, @Nick Gammon

Все три платы Lilypad имеют частоту 8 МГц. Из двух версий, отличных от USB, которые используют заголовок в стиле FTDI, только соответствующее определение платы будет успешно загружено, поскольку они имеют разные скорости передачи данных загрузчика. Как сказал занятой человек, у вас есть обходной путь. Фактическая причина и потенциальная проблема все еще существуют. Неправильные фьюзы, неправильный загрузчик, boards.txt изменен, ядро изменено на установку CLKPR, кто знает? И мы, и будущие читатели не будем знать, как обстоят дела. Я ценю, что вы рады видеть свое сообщение напечатанным., @timemage

@timemage Я согласен, что мы не решили основную проблему, но, не зная точно, какую плату они выбрали, был ли изменен файл boards.txt, предохранители на Lilypad и т. д., тогда решение остается обходным путем. Однако вполне возможно, что ни у кого больше не возникнет такой проблемы. Даже если бы они это сделали, как бы мы могли знать наверняка, что это та же самая проблема?, @Nick Gammon


1 ответ


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

1

Похоже, неправильная скорость передачи данных. Это часто приводит к появлению мусорных символов. В комментарии вы сказали, что уменьшение вдвое скорости передачи данных на стороне Arduino, по-видимому, синхронизирует скорости передачи данных, и вы могли видеть правильные символы.

Я немного озадачен этим, потому что вы, очевидно, вообще смогли загрузить скетч. Следовательно, скорость передачи данных во время процесса загрузки была правильной.

Посмотрев файл boards.txt, который вы должны найти где-то в вашей установке Arduino, вы обнаружите несколько вариантов Lilypad. Возможно, вы случайно выбрали не тот вариант в «Плате». меню в IDE?

Похоже, что для загрузки использовалась правильная скорость передачи данных, но код, сгенерированный компилятором (из-за настроек, переданных IDE), считал, что плата работает на половине скорости, которая была на самом деле (поэтому он установил часы со скоростью передачи данных будут работать быстрее), поэтому, уменьшив скорость передачи данных в Serial.begin, они стали синхронизироваться.

Вы можете просто смириться с этой разницей или попробовать поэкспериментировать с выбором разных типов плат Lilypad.

Если скорость передачи данных неправильная, возможно, задержки тоже будут неправильными, независимо от того, имеет ли это значение, зависит от вас.

,