Последовательный порт не работает со скоростью выше 19200

В Arduino Mega 2560 R3 при правильном выборе скорости передачи данных Serial Monitor этот код работает с #define R 38400, но почему-то не работает с #define R 19200 (?),

#define R 38400
int rate=R;
HardwareSerial* hwSerial[]={&Serial,&Serial1,&Serial2,&Serial3};
void setup() {
    for (int i=0;i<=3;i++){
        hwSerial[i]->begin(rate);
        while (!hwSerial[i]);
    } 
    hwSerial[0]->print("Hello World"); 
}

void loop() {
}

Обе скорости не должны создавать проблем для Arduino, что происходит?

Кажется, int rate R; вызывает проблемы при изменении скорости (??).

, 👍1

Обсуждение

19200 нормально, а 38400 нет? int не может вместить 38400, @Juraj

Да. И int RATE=38400; не работает, но #define RATE 38400 работает (??), @Brethlosze

@Juraj Это решение ... Спасибо ..., @Brethlosze

Я сделал ту же ошибку несколько дней назад. Потребовалось 10 минут, чтобы понять, @Juraj


1 ответ


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

2

Ответ прост. Вы присваиваете 38400 переменной типа int. Диапазон целых чисел со знаком, которые могут храниться в 16 битах, составляет от −32 768 до 32 767;

,