Плата перестает работать при записи serial
Я только начал использовать Arduino IDE для своего XMC1100XMC2Go. Информацию о микроконтроллере можно найти здесь: https://github.com/Infineon/XMC-for -Arduino/wiki/XMC-2Go
Теперь я начал с моих первых кодов и хочу печатать на последовательном мониторе с помощью этого кода:
*/
/* For on board LEDs */
#include <LED.h>
/* Create an LED object */
LED Led;
//#определить SERIAL_DEBUG 1
int p_LED = 5;
int p_Button = 4;
int i_stateButton = 0;
void setup()
{
Led.Add(LED1); // Настраиваем светодиоды
Led.Add(LED2);
pinMode(p_LED, OUTPUT);
pinMode(p_Button, INPUT);
// Установить состояние светодиодов по умолчанию
Led.On(LED2);
Led.Off(LED1);
digitalWrite(p_LED, LOW);
Serial.print("Hello World!");
Serial.begin(9600);
}
void loop()
{
Serial.write("Hello World!");
Serial.println(i_stateButton);
delay(200);
Led.Toggle (LED2);
Led.Toggle(LED1);
i_stateButton = digitalRead(p_Button);
// цифровое переключение (p_LED);
digitalWrite(p_LED, i_stateButton);
}
Я проверил в инструментах, что SerialOutput настроен на ПК (https://github.com/Infineon/XMC-for-Arduino/blob/master/variants/XMC1100/config/XMC1100_XMC2GO/pins_arduino.h#L54)
Есть два порта, COM1 и COM3. Я могу отправлять новые скетчи на микроконтроллер с помощью COM3. Я проверил свой последовательный монитор, и он тоже настроен на COM3.
Скорость передачи одинакова для обоих (код и монитор)
Теперь, когда я отправляю приведенный выше скетч в микроконтроллер, он перестает работать. один светодиод горит, а другой выключен. Но они уже не меняют состояние. На мониторе ничего не появляется.
Когда я удаляю обе строки Serial.write("Hello World!"); Serial.println(i_stateButton);
и отправить скетч, светодиоды снова начнут мигать.
Я почти уверен, что это какая-то проблема с конфигурацией, но я не могу понять, что это такое. У кого-нибудь есть идеи?
@Stack, 👍1
Обсуждение1 ответ
Лучший ответ:
В setup()
у вас есть:
Serial.print("Hello World!");
Serial.begin(9600);
Следует избегать печати на последовательный порт, прежде чем включить его с помощью
Serial.begin()
.
- Как разделить входящую строку?
- Как вывести несколько переменных в строке?
- В чем разница между Serial.write и Serial.print? И когда они используются?
- Загрузка Arduino Nano дает ошибку: avrdude: stk500_recv(): programmer is not responding
- Программы построения последовательных данных
- Как узнать частоту дискретизации?
- Что такое Serial.begin(9600)?
- Очистить существующий массив при получении новой последовательной команды
Возможно, вам следует избегать печати в Serial перед вызовом
Serial.begin()
., @Edgar Bonetserial.begin()
находится в части установки. Или это относится к циклу?, @StackЧто у вас есть право _before_
Serial.begin()
?, @Edgar BonetОй. Спасибо, @Stack
Был
Serial.print("Hello World!");
передSerial.begin(9600);
Спасибо @Edgar Bonet, @Stackна обычном Arduino это не останавливает скетч, @Juraj
@EdgarBonet Это звучит как ответ. Возможно, превратите свой комментарий в ответ. Stack Exchange подумает, что в этом разделе Arduino очень мало ответов *если вы, ребята, продолжите отвечать в комментариях*., @Nick Gammon