Задержка при передаче данных по USB
- Войдите на сайт для отправки комментариев
Пнд, 02/05/2016 - 16:20
Добрый день. Хочу выяснить причину задержки при передаче данных от котроллера через USB в ПК.
Использую плату Arduino Nano 3.0 с CH340 вместо FTDI.
Хочу реализовать программу для передачи простых команд от входов АЦП через виртуальный СОМ порт в софт.
byte lev;
byte lev1;
void setup() {
// Set MIDI baud rate:
Serial.begin(28800);
}
void loop() {
// play notes from F#-0 (0x1E) to F#-5 (0x5A):
//for (int note = 0x1E; note < 0x5A; note ++) {
//Note on channel 1 (0x90), some note value (note), middle velocity (0x45):
//noteOn(0x90, note, 0x45);
//delay(100);
//Note on channel 1 (0x90), some note value (note), silent velocity (0x00):
// noteOn(0x90, note, 0x00);
//delay(100);
//}
lev= analogRead(4) / 8;
lev1= analogRead(4) / 8;
if (lev<=5)
if (lev1>=5)noteOn(0x90, 60, 70);
delay(5);
}
// plays a MIDI note. Doesn't check to see that
// cmd is greater than 127, or that data values are less than 127:
void noteOn(int cmd, int pitch, int velocity) {
Serial.write(cmd);
Serial.write(pitch);
Serial.write(velocity);
}
Arduino передает данные с задержкой примерно в 0. 5 сек.
Как можно заставить Ардуино передавать данные через последовательный порт без задержки?
byte byteRead; void setup() { Serial.begin(115200); } void loop() { if (Serial.available()) { byteRead = Serial.read(); Serial.write(byteRead); } }Измеряете задержку на слух?
И какая задержка?
Хоть визуально в мотиторе порта. Данные приходят через пол секунды после срабатывания логической операции в программе.
lev= analogRead(4) / 8; lev1= analogRead(4) / 8; if (lev<=5) if (lev1>=5){noteOn(0x90, 60, 70); digitalWrite(10,HIGH); delay(5); digitalWrite(10,LOW);}Подключил светодиод. Срабатывает моментально после передачи сигнала в порт. Посмотрим как работает софт.
Если на слух, то такая проблема у многих, гугли midi USB задержка.
Вы запускали мой пример?
http://arduino.ru/forum/apparatnye-voprosy/zaderzhka-pri-peredache-danny...
Ну где там задержка?
Я на слух её не вижу.
Похоже, что Serial.avaliable в состоянии False. Программа приостановит развитие событий.
Я же не шучу.
Я действительно залил ЭТО в УНО .
Где задержка?
Приходит мгновенный ответ.
У вас она есть или нет?
Задержка присутствовала из- за работы драйвера. После полной переустановки софта получил возможность читать команды с желаемой скоростю.