Virtueller COM Port beim Arduino Uno R3

#7049606
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.
Angehängte Dateien:
Gast #7049666
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.
Gast #7049789
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
#7049836
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.
#7049923
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.
Gast #7049927
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?
#7049948
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.
#7050132
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.
#7050163
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
#7050204
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".
#7052651
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren