Forum: Mikrocontroller und Digitale Elektronik Virtueller COM Port beim Arduino Uno R3


von Falk B. (falk)


Angehängte Dateien:

Lesenswert?

Hallo Allerseits,

bei meinen Test für das FATfs habe ich ein Problem festgestellt.

Zwecks Test drückte ich oft den RESET Taster, um das Programm neu zu 
starten. Dabei stellte ich fest, daß die UART-Ausgabe nach wenigen Malen 
versiegte. D.h. sowohl am Terminalprogramm auf dem PC kam nix mehr an 
als auch die TX-LED auf dem Arduino blieb dunkel. Nach diversen Test und 
Messungen kam raus, daß der Arduino normal seinen Reset macht und  kurz 
nach Programmstart ein paar UART-Ausgaben erledigt. Die kommen auch am 
Hilfs-AVR MEGA16U2 (U3) an. Ein erneutes Reflow Löten von U3 brauchte 
keine Besserung, ebenso 100pF am Reset von U3. Letztendlich wurde der 
Fehler gefunden. C5! Dieser Koppelkondensator mit 100nF soll nur eine 
AC-Kopplung des DTR-Signals zum Reset des Arduinos herstellen, damit 
eine H->L Flanke einen Reset per Software ermöglicht. Das funktioniert 
auch. ABER! Rückwärts schiebt der Kondensator beim drücken der 
RESET-Taste ORDENTLICH Strom in das IO-PIN und drückt das Potential 
deutlich unter GND. Das geht ein paar mal gut, nach 3-10 Mal aber 
blockiert U3. Dann hilft nur noch USB abstecken und neu stecken! Das 
passiert aber NUR, wenn ein Terminalprogramm eine Verbindung zum 
COM-Port hat! Ohne die blockiert U3 nicht!

Lösung: Die Lötbrücke RESET-EN neben C5 ist im Layout mittels Leitung 
kurzgeschlossen! Wer baut so einen Unsinn? Also mit dem Skalpell 
trennen. Und siehe da, man kann RESET drücken so oft man will, die 
UART-Verbindung bleibt bestehen! Damit der Software-Reset wieder 
funktioniert, lötet man 1k über die Lötbrücke, damit wird der Strom 
begrenzt.

von Stefan F. (Gast)


Lesenswert?

Falk B. schrieb:
> Rückwärts schiebt der Kondensator beim drücken der
> RESET-Taste ORDENTLICH Strom in das IO-PIN und drückt das Potential
> deutlich unter GND. Das geht ein paar mal gut, nach 3-10 Mal aber
> blockiert U3.

Ist das der berüchtigte Latchup Effekt?

von BlaBla (Gast)


Lesenswert?

Falk B. schrieb:
> Lösung: Die Lötbrücke RESET-EN neben C5 ist im Layout mittels Leitung
> kurzgeschlossen! Wer baut so einen Unsinn? Also mit dem Skalpell
> trennen. Und siehe da, man kann RESET drücken so oft man will, die
> UART-Verbindung bleibt bestehen! Damit der Software-Reset wieder
> funktioniert, lötet man 1k über die Lötbrücke, damit wird der Strom
> begrenzt.

Vielen Dank für diesen Hinweis. Ist schon eine Merkwürdige Konstruktion.

von Falk B. (falk)


Lesenswert?

Stefan ⛄ F. schrieb:
> Ist das der berüchtigte Latchup Effekt?

Könnte sein. Es kann aber auch eine Störung der Versorgungsspannung 
sein, denn man schließt ja das IO-Pin hart kurz, da fließen um die 
50-100mA. Und an U3 hängen nur 100nF an VCC. Oder der Reset oder Brown 
Out schlägt zu, denn dessen Schaltschwelle liegt nahe VCC.

von EAF (Gast)


Lesenswert?

Ich finde das Problem auch lustig.
Habe seit Jahren Arduinos im Einsatz, aber das Problem noch nicht erlebt 
und noch nie davon gehört.
Und sicherlich schon ein paar viel hundert mal Reset gedrückt.

Falk B. schrieb:
> Oder der Reset oder Brown
> Out schlägt zu, denn dessen Schaltschwelle liegt nahe VCC.
Unglaubwürdig.
Wenn die BOD des 16U2 zuschlägt, oder ein Reset, hängt sich die 
virtuelle Serielle vom PC ab.
Macht also "DingDong"
Den Effekt, kenne ich sehr wohl, bei hoher Last und zu dürren USB 
Strippen

von Falk B. (falk)


Lesenswert?

EAF schrieb:
>> Oder der Reset oder Brown
>> Out schlägt zu, denn dessen Schaltschwelle liegt nahe VCC.
> Unglaubwürdig.
> Wenn die BOD des 16U2 zuschlägt, oder ein Reset, hängt sich die
> virtuelle Serielle vom PC ab.
> Macht also "DingDong"

Nein, bei mir bleibt der virtuelle COM-Port im Gerätemanager aktiv, aber 
es kommen keine Daten mehr an. Man kann auch keine senden, die RX-LED 
bleibt dann auch dunkel. Ich meine, da hat sich in U3 was verklemmt, was 
auch immer.

von Veit D. (devil-elec)


Angehängte Dateien:

Lesenswert?

Hallo,

solche Effekte sind immer wieder interessant. Wie oft und in welchem 
zeitlichen Abstand drückst du Reset? Andererseits habe ich da einmal 
versucht zu simulieren. Einmal mit deinem 1k und original ohne. Ich 
komme auf einen maximalen Strom von 0,5mA.

von EAF (Gast)


Lesenswert?

Falk B. schrieb:
> bei mir bleibt der virtuelle COM-Port im Gerätemanager aktiv

Wie gesagt, interessant!

Ist das bei dir mit anderen UNOs oder Megas reproduzierbar, oder ist es 
nur ein Exemplar, welches das tut?

von Falk B. (falk)


Lesenswert?

Veit D. schrieb:
> solche Effekte sind immer wieder interessant. Wie oft und in welchem
> zeitlichen Abstand drückst du Reset?

Ich hab es langsam verucht, so ein Druck / 3s und auch schnell mit 
vielleicht 1-2 Drücken/s. In beiden Fällen schmiert der UART ab.

> Andererseits habe ich da einmal
> versucht zu simulieren. Einmal mit deinem 1k und original ohne. Ich
> komme auf einen maximalen Strom von 0,5mA.

Deine Simulation stimmt nicht. Der Resettaster schaltet RESET gegen GND. 
Nimm dazu einen Schalter aus LTspice.

von EAF (Gast)


Lesenswert?

Falk B. schrieb:
> Ich hab es langsam verucht, so ein Druck / 3s und auch schnell mit
> vielleicht 1-2 Drücken/s. In beiden Fällen schmiert der UART ab.

Und ich habe mir jetzt einen UNO Klon gegriffen, mit 16U2.
Und mit einer Steckbrücke mindestens 200 Reset durchgeführt.

Hatte keine Auswirkungen, auf den 16U2.

Darum auch meine Frage:
EAF schrieb:
> Ist das bei dir mit anderen UNOs oder Megas reproduzierbar, oder ist es
> nur ein Exemplar, welches das tut?

von Falk B. (falk)


Lesenswert?

EAF schrieb:
> Ist das bei dir mit anderen UNOs oder Megas reproduzierbar, oder ist es
> nur ein Exemplar, welches das tut?

Ein 2. Uno, frisch aus der Box hat das Problem nicht. Merkwürdig.

von Veit D. (devil-elec)


Lesenswert?

Falk B. schrieb:
>> Andererseits habe ich da einmal
>> versucht zu simulieren. Einmal mit deinem 1k und original ohne. Ich
>> komme auf einen maximalen Strom von 0,5mA.
>
> Deine Simulation stimmt nicht. Der Resettaster schaltet RESET gegen GND.
> Nimm dazu einen Schalter aus LTspice.

Upps, stimmt, ich habe den Software Reset simuliert  :-)

Ich hatte diesen Effekt auch noch nicht, was aber nichts heißen muss. 
Bei mir verabschiedet sich eher die IDE samt Terminal wenn die Baudrate 
hoch und ohne Pause Daten geschickt werden. Dann geht irgendwie 
(vermutlich) Java fest und muss im Taskmanager abgeschossen werden. 
Vermutlich läuft ein Buffer voll.

: Bearbeitet durch User
von Veit D. (devil-elec)


Lesenswert?

Hallo,

ich habe meinen original Arduino Mega2560 auch mal­t­rä­tie­rt. Ich 
drücke ansonsten ganz selten den Resettaster. Mit IDE Terminal und auch 
HTerm keine Probleme. Egal ob im 1 bis 3 Sekundentakt oder mit wilden 
drücken. Egal ob mit 9600 oder 250k Baud. Wenn der Finger am Ende wieder 
runter ist kommt die serielle Ausgabe. Womit du allgemein recht hast ist 
der fehlende Widerstand generell, allein schon um den Taster 
Kurzschlussstrom zu begrenzen. Wenn das bei dir hilft ist doch gut.

Vielleicht liegt es auch am USB Rechnerseite. Kannst du das auf einem 
anderen Rechner testen. Gerhard hat nämlich mit einem FT232RL das 
Problem das der angeschlossen nach Rechnerkaltstart nicht erkannt wird. 
Ab- und anstecken funktioniert. Ich habe genau die gleiche 
Eigenbauplatine und keine Probleme. Er an anderen Rechnern auch nicht. 
Es können blöde Zufälle sein. Nur so als Gedanke.

von Gerhard O. (gerhard_)


Lesenswert?

Hallo,

Eine Berichtigung:

Beim Rechnerkaltstart wird zwar der FT232R vom Geräte Manager als 
korrekt Geladen ohne jegliche Fehlermeldungen diagnostiziert. Auch 
Teraterm oder Arduino-IDE Serial hat beim Starten kein Problem damit. 
Nur die Datenkommunikation funktioniert einfach nicht. Austecken oder 
den FT232R Reset Eingang zu betätigen, restauriert dann korrekte 
Datenfunktion. Der PC gibt keinerlei Fehlermeldung aus.

Weitere Tests mit anderen PCs mit XP32, W7X32, W8.1X32 und X64 ergaben 
keinerlei Probleme. Es passiert nur auf meinem Hauptrechner mit W10X64.

Ein kommerzielles FT232R Gerät hat auf diesen Rechner dasselbe Problem. 
Liegt also kaum an meiner Implementierung.

Die Treibersoftware ist aktuell und dieselbe auf allen Rechnern soweit 
sie kompatibel sind (Windows bedingt).

Ich habe dem FTDI Kundendienst anfang dieser Woche die Sachlage 
mitgeteilt und sie waren sehr an der Ursachenergründung interessiert 
daran und ersuchten mich um spezielle zusätzliche Diagnostik Daten. Habe 
allerdings noch keinen Bescheid bekommen. Einen FT232R Fake kann man 
Anhand der bisherigen Ermittlungen mit Sicherheit ausschließen.

Ich werde weitere Information bekanntgeben sobald man mehr weiß.

Gerhard

von EAF (Gast)


Lesenswert?

Gerhard O. schrieb:
> FT232R

Auf dem originalen UNO (siehe Schaltplan im Eingangsposting) und seinen 
Clonen ist ein ATMega16U2 als USB-Serial Konverter montiert.
Kein FTDI

von Gerhard O. (gerhard_)


Lesenswert?

EAF schrieb:
> Gerhard O. schrieb:
>> FT232R
>
> Auf dem originalen UNO (siehe Schaltplan im Eingangsposting) und seinen
> Clonen ist ein ATMega16U2 als USB-Serial Konverter montiert.
> Kein FTDI

Ich berichtigte nur Veits Schilderung. Ist mir schon klar, daß beim Uno 
der ATMEGA16U2 drauf ist.

von EAF (Gast)


Lesenswert?

Gut!
Dann korrigiere ich mich, und sage:
Verschiedene Chips, unterschiedliche Sorgen.
Mischen irritiert.

von Falk B. (falk)


Lesenswert?

Ich hab den Effekt an zwei verschiedenen Rechnern gehabt, allerdings 
beide mit Win10.

von Gerhard O. (gerhard_)


Lesenswert?

Falk B. schrieb:
> Ich hab den Effekt an zwei verschiedenen Rechnern gehabt,
> allerdings
> beide mit Win10.

FT232R? Interessant. Danke.

War das dieselben Symptome wie bei mir?

Nachtrag:

Ich habe übrigens bemerkt, daß der FT232R in dieser Situation den 
Empfang von Daten vom AVR mit Leuchten des USBC0/1 TX-LED quittiert. 
Wenn ich auf den AVR Reset Taster drückt send die FW eine kurze String 
aus. Die sieht der FT232R. Nur der PC kriegt davon nichts mit. Wenn der 
PC Daten sendet, bleibt die RX Led "stumm".

: Bearbeitet durch User
von Falk B. (falk)


Lesenswert?

Gerhard O. schrieb:
>> Ich hab den Effekt an zwei verschiedenen Rechnern gehabt,
>> allerdings
>> beide mit Win10.
>
> FT232R? Interessant. Danke.

Nein! Arduino Uno, dort werkelt ein MEGA16U2 als USB-COM Adapter!

>War das dieselben Symptome wie bei mir?

Nein, der COM-Port war direkt beim EInschalten verfügbar und hat 
funktioniert.

von Veit D. (devil-elec)


Lesenswert?

Hallo Falk,

hast du nach dem Einbau vom 1K die Resetspannung gemessen? Wie weit 
diese runterkommt beim flashen wenn mittels DTR resetet wird. Nicht das 
du womöglich nicht mehr flashen kannst, weil jetzt ein anderer 
Spannungsteiler drin ist. Der IO Pin vom U3 hat ja auch einen 
Widerstand. Nur mal laut gedacht.

von Falk B. (falk)


Lesenswert?

Veit D. schrieb:
> Hallo Falk,
>
> hast du nach dem Einbau vom 1K die Resetspannung gemessen?

Nö.

> Wie weit
> diese runterkommt beim flashen wenn mittels DTR resetet wird.

Weit genug, der Pull-up am Reset vom Arduino ist 10k. Intern sind es um 
die 50k.

> Nicht das
> du womöglich nicht mehr flashen kannst, weil jetzt ein anderer
> Spannungsteiler drin ist.

Geht schon.

> Der IO Pin vom U3 hat ja auch einen
> Widerstand.

Aber PARALLEL! Das ist egal. Rn2D ist eigentlich überflüssig.

von Veit D. (devil-elec)


Lesenswert?

Hallo,

okay alles klar. RN2D soll vermutlich beim einschalten o.ä. bis U3 
"ready" ist für einen definierten Resetpegel sorgen.

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.