WIP
This commit is contained in:
49
Serial_AdjustBaud.h
Normal file
49
Serial_AdjustBaud.h
Normal file
@@ -0,0 +1,49 @@
|
||||
/**
|
||||
* Функция для вычисления и возврата скорости передачи данных (baud rate) на основе полученного входного пина.
|
||||
*
|
||||
* @param recpin входной пин для определения скорости передачи данных
|
||||
*
|
||||
* @return рассчитанная скорость передачи данных на основе измеренной ширины нулевого бита
|
||||
*/
|
||||
|
||||
long detRate(int recpin){
|
||||
long baud, x, rate = 10000;
|
||||
|
||||
// Цикл для измерения ширины нулевого бита
|
||||
for (int i = 0; i < 15; i++){
|
||||
// Ожидание начала низкого бита
|
||||
while(digitalRead(recpin) == 1)
|
||||
x = pulseIn(recpin, LOW); // Измерение ширины следующего нулевого бита
|
||||
rate = x < rate ? x : rate; // Обновление минимальной ширины нулевого бита
|
||||
}
|
||||
|
||||
// Определение скорости передачи данных на основе измеренной ширины нулевого бита
|
||||
if (rate < 12)
|
||||
baud = 115200;
|
||||
else if (rate < 20)
|
||||
baud = 57600;
|
||||
else if (rate < 29)
|
||||
baud = 38400;
|
||||
else if (rate < 40)
|
||||
baud = 28800;
|
||||
else if (rate < 60)
|
||||
baud = 19200;
|
||||
else if (rate < 80)
|
||||
baud = 14400;
|
||||
else if (rate < 150)
|
||||
baud = 9600;
|
||||
else if (rate < 300)
|
||||
baud = 4800;
|
||||
else if (rate < 600)
|
||||
baud = 2400;
|
||||
else if (rate < 1200)
|
||||
baud = 1200;
|
||||
else if (rate < 2400)
|
||||
baud = 600;
|
||||
else if (rate < 4800)
|
||||
baud = 300;
|
||||
else
|
||||
baud = 0;
|
||||
|
||||
return baud; // Возврат рассчитанной скорости передачи данных
|
||||
}
|
||||
Reference in New Issue
Block a user