Gibt es einen Code, mit dem ich herausfinden kann, mit welcher Geschwindigkeit die ausgewählte serielle Schnittstelle läuft?
serial
arduino-mega
Hayden Thring
quelle
quelle
Antworten:
Es gibt keinen einfach zu bedienenden Top-Level-Weg. Es tut uns leid. Es ist wahrscheinlich einfacher, die von Ihnen gewählte Baudrate in einer Variablen zu speichern, wenn Sie die serielle Schnittstelle einrichten.
Wie auch immer, was Sie versuchen können, für die AVR-basierten Hardware-UARTs zu tun, ist rückgängig
Serial.begin
zu machen, was zum Einrichten einer bestimmten Baudrate getan wird, aber es ist ein bisschen schmerzhaft. Dies ist der Code zum Einstellen der Baudrate:Sie können die Ergebnisse finden, indem Sie die richtigen UCSRA-, UBRRH- und UBRRL-Register lesen. Auf einem Uno sind dies die richtigen Registernamen, auf einem Mega seine UCSR0A, UBRR0H, UBRR0L für Serial, UCRS1A ... für Serial1 und so weiter. Nicht-AVR-Boards (und
Serial
auf einem Leonardo) werden völlig anders sein.Für diese drei Register an einer seriellen AVR-Hardware-Schnittstelle gibt es für jede bestimmte Karte (und Frequenz dieser Karte) bei jeder Baudrate einen einzigen Status. Sie können versuchen, eine Gleichung zu erstellen, um die ursprüngliche Baudrate zu ermitteln. Ich empfehle jedoch, nur die direkten Werte mit einer Suche zu vergleichen, da die ganzzahligen arithmetischen Rundungsfehler zu einem großen Durcheinander führen.
Bei meinem Mega-UBBR0H sind UBBR0L und UCSR0A beispielsweise 0, 207, 2 bei 9600 Baud, aber 0, 51, 2 bei 38400 Baud und 0, 16, 0 bei 57600 Baud.
quelle