Pages: [1]   Go Down
Author Topic: Geschwindigkeit Serial.begin  (Read 287 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
God Member
*****
Karma: 2
Posts: 538
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo,

ich würde gerne eine Funktion programmieren um einem bestimmten Gerät per RS232-Befehl einen Factory-Reset zu verpassen.

Da das Gerät mit unterschiedlichen Baudraten arbeiten kann, habe ich vor, diesen "Befehl" nacheinander in unterschiedlichen Baudraten zu senden, so dass das Gerät in jedem Fall/ unter jeder Baudrate den Factory Reset ausführt.

Im Anschluss an den Factory-Reset startet das Gerät dann mit der vom Hersteller "vordefinierten" Baudrate (bereits getestet).

In diesem Zusammenhang frage ich mich nun, wie lange ein Arduino Mega brauchen würde um die Baudrate an einem seiner seriellen Anschlüsse zu wechseln.

Am Liebsten würde ich es gerne (in Pseudocode ausgedrückt) so machen:

Serial3.begin(blabla);
if(Serial3.begin ready) Serial3.println("RESET")
Serial3.begin(blabla);  // nächst höhere Baudrate
if(Serial3.begin ready) Serial3.println("RESET")
Serial3.begin(blabla);  // nächst höhere Baudrate
if(Serial3.begin ready) Serial3.println("RESET")
...

Wie macht "man" das am sichersten?

Gruß Chris
« Last Edit: December 05, 2013, 02:39:44 am by Chris72622 » Logged


Switzerland
Offline Offline
Faraday Member
**
Karma: 96
Posts: 4754
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
In diesem Zusammenhang frage ich mich nun, wie lange ein Arduino Mega brauchen würde um die Baudrate an einem seiner seriellen Anschlüsse zu wechseln.

Er macht das praktisch instantan, Du kannst also sofort nachdem Serial.begin() zurückkehrt, die Ausgaben auf die Schnittstelle machen.
Die Frage ist mehr, was macht Dein Gerät, wenn es extrem kurz hintereinander "Müll" in unterschiedlicher Geschwindigkeit kriegt. Ich würde schon deshalb eine vernünftige Zeit warten. Was vernünftig ist, hängt sehr vom verwendeten Gerät und den zu testenden Baudraten ab.
Logged

Forum Moderator
BZ (I)
Online Online
Brattain Member
*****
Karma: 236
Posts: 20280
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Braucht es kein serial.end() vor dem neuerlichen Serial.begin() ?
Grüße Uwe
Logged

Switzerland
Offline Offline
Faraday Member
**
Karma: 96
Posts: 4754
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Braucht es kein serial.end() vor dem neuerlichen Serial.begin() ?

Nicht zwingend, ein Serial.flush() würde auch reichen, aber Du liegst richtig, dass das Ziel, die Bytefolgen auch wirklich an das Gerät zu schicken, sonst wahrscheinlich nicht erreicht wird. Für die korrekte Funktionalität von Serial.begin() ist ein Serial.end() nicht notwendig, aber es würde das komplette Leeren des Ausgabe-Puffers abwarten, was hier erwünscht ist.
Logged

Pages: [1]   Go Up
Jump to: