Forum: Mikrocontroller und Digitale Elektronik Arduino Leonardo(ATmega32U4) Serial1 will nicht richtig


von Robin H. (Firma: vkl) (4klee)


Lesenswert?

Ich habe mir auf Ebay ein Arduino Board gekauft mit dem ATmega32u4 
bestückt.

(Arduino-Pro-Micro-komp-ATmega32U4-USB-Entwicklungsboard-5V-16MHz)
Erkannt wird das ganze als Arduino Leonardo Board.

Ich verwende einige Digital Pin für Tasten. Das funktioniert sehr gut.

Jetzt wollte ich die Serial1 Schnittstelle benutzen. Dabei habe ich 
Probleme.
Was immer ich für ein Code Beispiel von ARDUINO benutze Z.b:
https://www.arduino.cc/en/Tutorial/MultiSerialMega

Sollte von port1 auf port0 ausgeben und umgekehrt.

Die Serielle Ausgabe von der Arduino IDE wird permanent besendet mit 
leeren Zeichen oder non printable characters.

Ob ich ein Device auf RX1 angesteckt habe oder nicht scheint dabei keine 
Rolle zu spielen.

Gemäß der Beschreibung sollte die Schnittstelle Serial1 ttl conform 
laufen.
https://www.arduino.cc/en/Reference/Serial
Das Device funktioniert jedoch mit einem TTL Converter am PC 
einwandfrei.

Ist der Serial1 Port womöglich hinüber oder ich zu blöd?

von Christian M. (Gast)


Lesenswert?

Ohne jetzt nachzuschauen: Braucht die ser1+ evtl. Softserial? (Nur eine 
Hardware-Serielle?)

Gruss Chregu

von Einer K. (Gast)


Lesenswert?

Christian M. schrieb:
> Braucht die ser1+ evtl. Softserial?

Nein!
Serial geht über USB
Serial1 ist vom Type  Hardwareserial.

Robin H. schrieb:
> Das Device funktioniert jedoch mit einem TTL Converter am PC
> einwandfrei.
>
> Ist der Serial1 Port womöglich hinüber oder ich zu blöd?

Wenn das am PC über einen Konverter funktioniert, dann ist die 
Schnittstelle in Ordnung.

Also baust du irgendeinen Mist.
Aber ka welchen....

von Robin H. (Firma: vkl) (4klee)


Lesenswert?

Kann ich die Arduino serial1 Schnittstelle testen.  Ich vermute dass die 
einen Schaden hatt.

von Einer K. (Gast)


Lesenswert?

Eine Brücke zwischen TX und RX schlagen.
Dann muss das aus Serial1 wieder raus kommen, was du rein steckst.

von Jacko (Gast)


Lesenswert?

Das hat mir auch den Einstieg zum Arduino-UNO vermiest!

Die serielle Schnittstelle an Pin 0 und 1 wird (über USB) vom
Arduino-Entwicklerprogramm konfisziert und ist zumindest in der
Entwicklungsphase nicht frei nutzbar. (Ich glaube mit Einstellung
auf 115,2 kBaud kann man das "abhören".)

Obwohl man ein µC-Board hat, das HW-Serial kann, darf man sich mit
SW-Serial rumärgern. Daher liegt der erwartungsvoll gekaufte UNO
schon seit Wochen ungenutzt rum...

von Einer K. (Gast)


Lesenswert?

Jacko schrieb:
> Die serielle Schnittstelle an Pin 0 und 1 wird (über USB) vom
> Arduino-Entwicklerprogramm konfisziert und ist zumindest in der
> Entwicklungsphase nicht frei nutzbar. (Ich glaube mit Einstellung
> auf 115,2 kBaud kann man das "abhören".)
Bein Leonardo ist das nicht der Fall.

Jacko schrieb:
> Obwohl man ein µC-Board hat, das HW-Serial kann, darf man sich mit
> SW-Serial rumärgern. Daher liegt der erwartungsvoll gekaufte UNO
> schon seit Wochen ungenutzt rum...
Du kannst den USB Seriell Wandler des UNO, ein ATMega16U2, im Reset 
halten.
Eine Steckbrücke auf dessen ISP reicht.
Dann kannst du Pin0 und Pin1, und damit auch Hardware Serial, 
ungehindert für eigene Zwecke nutzen.

von Robin H. (Firma: vkl) (4klee)


Lesenswert?

Also ich habe heute wieder getestet.

Byte von serial1 sollen auf serial ausgegeben werden.

Die ganze Anzeige wird vollgemüllt.

Der Arduino sendet permanent auf Serial1. Obwohl nichts dransteckt.
Ich habe mir jetzt noch einen bestellt um zu schauen ob der einen defekt 
hat.

Ich war auch der Meinung dass der Leonardo den HW SERIAL1 ohne weiters 
benutzen kann unabhängig der USB Verbindung zum PC.

von Einer K. (Gast)


Lesenswert?

Robin H. schrieb:
> Ich war auch der Meinung dass der Leonardo den HW SERIAL1 ohne weiters
> benutzen kann unabhängig der USB Verbindung zum PC.
Ich stimme dir zu!

Dieses Programm habe ich mal getestet:
https://www.arduino.cc/en/Tutorial/MultiSerialMega

Anpassung:
Eine Steckbrücke zwischen Tx1 und Rx1
Und eine zusätzliche Zeile in Setup, extra für den Leonardo
1
void setup() {
2
  // initialize both serial ports:
3
  Serial.begin(9600);
4
  Serial1.begin(9600);
5
  while(!Serial); // Warte auf öffnen der Schnittstelle
6
}

Es werden alle Eingaben von der seriellen Konsole angezeigt.

Wenn ich dann die Steckbrücke ziehe, kommen keine Schrottdaten.
Wenn da bei dir Schrott kommt, dürfte dein ATMega32U4 (oder das Board) 
wirklich defekt sein.

von Robin H. (Firma: vkl) (4klee)


Lesenswert?

Interessant jetzt scheint es zu funktionieren.
Aber kannst du mir jetzt erklären. Warum der erst keinen Müll mehr 
sendet wenn ich zwischen rx & tx eine Brücke mach.

Ich versteh das nicht?

von Einer K. (Gast)


Lesenswert?

Wenn RxD keinen klaren Pegel bekommt, dann könnte das für die Serielle 
wie Daten aussehen.
Floatende Eingänge spielen Antenne, und deine Serielle Hardware macht 
aus dem Restrauschen des Urknalls halt eben schöne 8bittige Bytes.

Warum das bei mir nicht passiert?
KA, vielleicht wohne ich in einer ruhigeren Ecke dieses Universums...

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.