Forum: Mikrocontroller und Digitale Elektronik Arduino Leonardo Reset für UART


von Norbert V. (norbie)


Lesenswert?

Hallo,

ich habe ein Problem mit meinem Leonardo, bei dem ich die UART (RX/TX) 
Schnittstelle (welche gleichzeitig auch für USB mitverwendet wird) 
verwenden möchte. Wenn ich den Leonardo das erste mal an Power Supply 
hänge, muss ich einmal die Kommunikation mit meinem Interface (nicht PC) 
starten (welche nicht klappt), dann die Reset Taste drücken und 
anschließend scheint die UART Schnittstelle richtig konfiguriert zu 
sein, da es dann fehlerfrei läuft.

Mache ich was falsch, oder liegt das an der gleichzeitigen Nutzung als 
USB Interface?

Was ich noch dazu sagen muss, ich verwende in diesem Fall weder das 
Monitoring der IDE noch hängt es per USB am PC. Nach dem flashen 
verwende ich den Leonardo "autonom".

Vielen Dank schonmal für eure Hilfe.

von Philipp K. (philipp_k59)


Lesenswert?

Naja das sind ja 2 verschiedene Schnittstellen.. eigentlich sogar 3.

1. Einige Sekunden nach reset Bootloader
2. Dann wechselt der Treiber in USB Serial Interface
3. Hast du noch das Hardware basierte Serial das mit dem USB Serial nix 
zu tun hat.

Wie du das nun haben willst ist nicht ganz ersichtlich.. vielleicht 
braucht die Com gegenstelle auf der anderen seite zu lange zum 
hochfahren.. wobei das ja eigentlich Plug&Play sein sollte.

von Norbert V. (norbie)


Lesenswert?

Also ich habe das gleiche Programm auf einem Mega2560 laufen und dort 
habe ich nicht solche Schwierigkeiten. Kann mir da jemand weiterhelfen 
warum es beim Leonardo nicht vernünftig läuft. Schließlich verwende ich 
auch den Befehl Serial1 ähnlich wie beim Mega2560 dort gibt es 
Serial1...3

von Philipp K. (philipp_k59)


Lesenswert?

Beim Leonardo ist Serial0 ein reines USB Interface wo auch nur USB was 
lesen und schreiben kann (USB-CDC-Device).

Serial1 hingegen sind D0 und D1 für direkte TTL Serial Verbindung.

Hast du die Warteschleife im Setup:
Serial.begin(9600);
   // while the serial stream is not open, do nothing:
   while (!Serial) ;

Norbert V. schrieb:
> ich habe ein Problem mit meinem Leonardo, bei dem ich die UART (RX/TX)
> Schnittstelle (welche gleichzeitig auch für USB mitverwendet wird)

So stimmt das ja nicht wenn Du Serial1 benutzt.. versuche das mal 
zeitlich zu experimentieren welches von beiden geräten zu früh/spät 
ist.. bzw was passiert wenn Du Usb am Rechner hast.. ggf. mal einige 
Debug Outputs auf Serial0 legen?

von Norbert V. (norbie)


Lesenswert?

Wenn ich USB am Rechner bzw. Leonardo dran habe funktioniert es ohne 
Reset, nur wenn ich den Leonardo "autonom" laufen lassen will habe ich 
diese Schwierigkeiten.

Ich verwende Serial1, das ist korrekt, denn ich möchte RX/TX verwenden 
welches eigentlich abgekoppelt ist beim Leonardo, da hast du recht.

Diese while loop im Setup, muss die für Serial und Serial1 drin sein? 
Wenn ich sie für Serial hinein nehme und nichts über USB kommuniziere 
werde ich hier ewig drin fest sitzen oder nicht?

von Klaus (Gast)


Lesenswert?

Norbert V. schrieb:

> Diese while loop im Setup, muss die für Serial und Serial1 drin sein?
> Wenn ich sie für Serial hinein nehme und nichts über USB kommuniziere
> werde ich hier ewig drin fest sitzen oder nicht?

Falls das Manual nichts anderes sagt, würde ich erwarten, dass die 
while-Schleife jeweils für diejenige serielle Schnittstelle vorhanden 
sein muss, für die Du Serial.begin aufrufst. Im Umkehrschluss, also 
nicht für diejenigen für die Du die Methode nicht aufrufst.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.