Forum: Mikrocontroller und Digitale Elektronik Arduino PC Serielle Kommunikation Problem


von Lothar (Gast)


Lesenswert?

Ich nutze diesen Beispiel C Code für die Arduino PC Serielle 
Kommunikation unter Windows:

https://www.pololu.com/docs/0J73/15.6

Das funktioniert auch, aber nur nachdem vorher in der Arduino IDE einmal 
der Serielle Monitor aufgemacht wurde.

Wird das Arduino abgezogen und wieder eingesteckt, läuft der PC Code 
ohne Fehler d.h. Port wird aufgemacht, Befehl geschrieben, aber es kommt 
nichts zurück.

Wie wenn im PC Code eine Art "Receive Enable" fehlen würde. Und der 
Arduino IDE Serielle Monitor schaltet das irgendwie an.

Unter Linux gibt es das Problem nicht mit diesem Beispiel C Code:

https://www.pololu.com/docs/0J73/15.5

An meinem Arduino C Programm liegt es also nicht.

von 56k (Gast)


Lesenswert?

Jo mei. Mein volles Beileid ist dir sicher.
Schreibe zukuenftig halt Code, der ohne A*no auskommt.
Da muss man auch nicht mehr als den Baudratentimer richtig
initialisieren und dann seine Zeichen in das serielle
Ausgaberegister schreiben.
Kling einfach?
Ist es auch!

von Lothar (Gast)


Lesenswert?

Problem gelöst :-)

DTR muss für Arduino an sein, warum auch immer. Also im PC Code für 
Windows:

DCB state = {0};
state.fDtrControl = 1;
state.fRtsControl = 0;
...
success = SetCommState(port, &state);

https://docs.microsoft.com/en-us/windows/win32/api/winbase/ns-winbase-dcb

von Flachtroll (Gast)


Lesenswert?

Alternativ sollte man immer mit dem Oszilloskop nachmessen

von Hmmm (Gast)


Lesenswert?

Lothar schrieb:
> DTR muss für Arduino an sein, warum auch immer.

Ich nehme an, dass bei Deinem nicht näher bezeichneten Arduino-Board DTR 
am Reset-Pin hängt, um vom PC aus den Bootloader starten zu können.

von Lothar (Gast)


Lesenswert?

Es ist das hier. Im Schaltplan sehe ich kein DTR und nichts 
ungewöhnliches am AVR RESET Pin. Am ARM der als USB-Wandler dient ist 
auch nichts am RESET Pin. Es könnte also an der USB-Wandler Firmware 
liegen, dass die bei Virtual COM Port DTR Low nichts durchleitet.

https://docs.arduino.cc/hardware/nano-every

https://content.arduino.cc/assets/NANOEveryV3.0_sch.pdf

von Peter D. (peda)


Lesenswert?

Lothar schrieb:
> Es ist das hier. Im Schaltplan sehe ich kein DTR und nichts
> ungewöhnliches am AVR RESET Pin.

Vermutlich wird der AVR über den UPDI-Pin in Reset gehalten. Das DTR ist 
nicht physisch verfügbar, sondern wird per USB-Paket übertragen und 
intern im ATSAM ausgewertet.

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.