Arduino Port busy

OP #7527190
Lesenswert?

Ich habe gefühlt hunderte von Arduinos in Projekten verbaut. Nie Probleme gehabt beim Upload.

Jetzt habe ich fast ständig die Meldung Port busy. Dabei spielt es keine Rolle, ob ich innerhalb von 20 Sekunden es 10 mal Versuche und mal zwei Minuten warte, das Verhalten ist völlig random. Auch rebooten scheint nicht gross einen Einfluss zu haben. Versucht habe ich:

Originaler Arduino Uno aus der Box Mehrere Nanos Kabel getauscht, kuze Kabel lange Kabel verschiedener Hersteller Kabel direkt am PC anstatt USB Hub Arduino IDE SW update Libs update

Jetzt gehen mir die Idee aus, weil so macht es keinen Spass. Die Hardware ist dieselbe wie eh und je, ich kann mir nur vorstellen dass durch die Windows Update mal was runtergejubelt wurde dass der Port nicht mehr richtig freigegeben wird.

Irgendwer mit ähnlichen Erfahrungen?

#7527213
Lesenswert?

Philipp G. schrieb:

Irgendwer mit ähnlichen Erfahrungen?

Ja, hatte ich auch mal nach einem Windowsupdate. Im Batchfile zum Laden des Programms war vor dem eigentlichen Transfer ein probeweises Öffnen und Schließen der Schnittstelle vorhanden, vermutlich um deren Existenz zu verifizieren. Jedenfalls war nach Beendigung dieser Schnüffelroutine die Schnittstelle noch eine kurze Zeit als "busy" markiert und das folgende Programm bekam sie nicht geöffnet. Eine Millisekunde Verzögerung in das Batchfile eingebaut und alles lief wieder reibungslos.

Gruß Klaus (der soundsovielte)

#7527215
Lesenswert?

Philipp G. schrieb:

Jetzt gehen mir die Idee aus, weil so macht es keinen Spass.

Dann einmal der Reihe nach: Von wem kommt die Meldung "Port busy"? Was sagt der Gerätemanager? Kannst du dich mit einem Terminalprogramm auf den Port verbinden? Wie nutzt du das DTR Signal? Welcher Boot Loader ist auf dem Arduino? Was hast du als Boot Loader eingestellt? Was passiert, wenn du die Reset-Taste benutzt?

#7527689
Lesenswert?

Harald K. schrieb:

Es kann helfen, die mit der Zeit immer mehr verklumpende Zuordnung von Schnittstellennummern zu USB-Seriell-Bridges zu entrümpeln.

https://www.uwe-sieber.de/misc_tools.html#arbiter

Habe ich soeben probiert - leider kein Erfolg.

Rainer W. schrieb:

Von wem kommt die Meldung "Port busy"?

Arduino IDE

Was sagt der Gerätemanager?

Das Gerät funktioniert einwandfrei

Kannst du dich mit einem Terminalprogramm auf den Port verbinden?

Geht.

Wie nutzt du das DTR Signal?

Gar nicht.

Welcher Boot Loader ist auf dem Arduino?

Der welcher original ausgeliefert wird. (Ich bin einer der die Dinger auch auf reichelt bestellt weil ich das Arduino Programm finanziell unterstützen möchte und nix nur Clones aus China kauft)

Was hast du als Boot Loader eingestellt?

Alles durchprobiert, keine Wirkung

Was passiert, wenn du die Reset-Taste benutzt?

Nun, der Taster schliesst den Stromkreis zum Reset Pin als Folge hiervon der CPU veranlasst einen Reset durchzuführen.

Kann ein-austecken oder Resetten keine Verbesserung

#7527745
Lesenswert?

Philipp G. schrieb:

Wie nutzt du das DTR Signal?

Gar nicht.

Das ist sehr ungewöhnlich. Eine neu installierte Arduino IDE mit dem Arduino Nano sollte das tun. Vielleicht solltest du überlegen, was du an der Arduino IDE kaputtkonfiguriert hast. Neuinstallation hast du schon probiert?

Kannst du dich mit einem Terminalprogramm auf den Port verbinden?

Geht.

Kannst du vom Terminalprogramm aus über DTR einen Reset des Controllers auslösen? Kannst du mit einem anderen Programm die Serielle Schnittstelle zum Arduino öffnen?

Jim M. schrieb:

Dann erkennt Windows das Gerät als serielle Maus und blockiert so den Port.

Dann dürfte auch das Terminalprogramm sie nicht öffnen können.

#7527906
Lesenswert?

Die Fehlerursache wurde doch weiter oben schon beschrieben...

Die Sitzung beginnt mit einem Reset des Arduino. Dazu wird die Schnittstelle geöffnet, an der DTR Leitung gewackelt und die Schnittstelle wieder geschlossen.

Nun beginnt die eigentliche Programmierung. Dazu muss die Schnittstelle wieder geöffnet werden. Windows ist aber an manchen Ecken etwas träge und das Schliessen aus dem Reset Vorgang hat sich noch nicht im System herumgesprochen. Folglich kommt die Fehlermeldung, dass die Schnittstelle nicht zur Verfügung steht.

Abhilfe wäre, das Schliessen und erneute Öffnen wegzulassen. Oder es muss zwischen Schliessen und Öffnen eine kleine Verzögerung eingebaut werden. Beides wäre Sache des AVRDude Programmierers (den ich hiermit herzlichst bitte).

Gast #7527913
Lesenswert?

Georg G. schrieb:

Beides wäre Sache des AVRDude Programmierers (den ich hiermit herzlichst bitte).

Und der hat gefaelligst regelmaessig die Freds hier zu lesen, damit er deinem Urteil zeitnah abhelfen kann! Gehts noch? Schreibe wenigstens einen korrekten Problemreport auf Github: https://github.com/avrdudes/avrdude/issues.

Aber am besten Quellcode runterladen, die betreffenden Zeilen aendern, und neu kompilieren. Duerfte sich wahrscheinlich auf das Auskommentieren von ein paar Zeilen beschraenken. Du weisst wahrscheinlich nicht wie Open Source funktioniert!

#7528077
Lesenswert?

Rainer W. schrieb:

Eine neu installierte Arduino IDE mit dem Arduino Nano sollte das tun. Vielleicht solltest du überlegen, was du an der Arduino IDE kaputtkonfiguriert hast.

Die Arduino IDE installiert man nicht, man nutzt sie als portable.

Oder redet Philipp G. (geiserp) etwa von der neuen Version mit ihren diversen Macken?

Georg G. schrieb:

Die Fehlerursache wurde doch weiter oben schon beschrieben...

Die Sitzung beginnt mit einem Reset des Arduino. Dazu wird die Schnittstelle geöffnet, an der DTR Leitung gewackelt und die Schnittstelle wieder geschlossen.

Nun beginnt die eigentliche Programmierung. Dazu muss die Schnittstelle wieder geöffnet werden.

Wo nimmst Du diese Behauptung her? Nach DTR muss sie nicht geschlossen werden, der Arduino kann auch antworten, wenn sie offen bleibt.

#7528087
Lesenswert?

Manfred P. schrieb:

Die Arduino IDE installiert man nicht, man nutzt sie als portable.

Aha. Deswegen gibt es ja auch ein Installationsprogramm. Damit man es nicht benutzt.

Klar. Versteht jeder.

Manfred P. schrieb:

Oder redet Philipp G. (geiserp) etwa von der neuen Version mit ihren diversen Macken?

Version 2.x ist die erste wenigstens vage benutzbare Version dieser IDE, die den Benutzer nicht völlig verblödet vor den *.ino-Dateien stehen lässt, sondern Dinge zulässt, die andere IDEs schon seit Jahrzehnten können (z.B. "springe zur Definition eines Symbols").

Perfekt ist das alles nicht, keine Frage.

#7528221
Lesenswert?

Arduino F. schrieb:

Kann ich damit richtig liegen?

Nein. Ich finde bloß Helden, die mit pauschalen Aussagen wie eben der hier

Die Arduino IDE installiert man nicht, man nutzt sie als portable.

ankommen, ein bisschen arg dumm. Dumm, weil sie unreflektiert ihre persönliche Vorgehensweise als die einzig mögliche und richtige darstellen.

Es gibt sicherlich gute Gründe dafür, den Kram so nutzen zu wollen, aber dann sollte man anderes darauf hinweisen als "man macht das so".

#7528552
Lesenswert?

Philipp G. schrieb:

Ich habe mal ein vid gemacht damit es klar wird:

Daraus wird mir nur klar, daß beim Compilieren ein Fehler auftritt.

Macht es zuviel Mühe, in den Einstellungen der ArduinoIDE die erweiterte Ausgabe für den Ladeprozeß zu aktivieren, sich daraus den Aufruf von avrdude abzukupfern und das dann nochmal manuell zu starten? Wenns dann lädt, ist es der von mir beschriebene Timing-Fehler. Bei mir jedenfalls (Version 1.8.19) wird die Hexdatei nicht gelöscht und ist für einen zweiten Versuch vorhanden.

Gruß Klaus (der soundsovielte)

P.S. Fände ich nach der bisherigen Theoretisiererei mal interessant.

OP #7532878
Lesenswert?

Klaus S. schrieb:

Macht es zuviel Mühe, in den Einstellungen der ArduinoIDE die erweiterte Ausgabe für den Ladeprozeß zu aktivieren, sich daraus den Aufruf von avrdude abzukupfern und das dann nochmal manuell zu starten? Wenns dann lädt, ist es der von mir beschriebene Timing-Fehler. Bei mir jedenfalls (Version 1.8.19) wird die Hexdatei nicht gelöscht und ist für einen zweiten Versuch vorhanden.

Gruß Klaus (der soundsovielte)

P.S. Fände ich nach der bisherigen Theoretisiererei mal interessant.

Ja, habe die entsprechende Zeile im command prompt laufen lassen. Ergebnis: Verhalten und Fehler derselbe.

#7533025
Lesenswert?

Philipp G. schrieb:

Ja, habe die entsprechende Zeile im command prompt laufen lassen. Ergebnis: Verhalten und Fehler derselbe.

Danke für die Rückmeldung, dann liegt es nicht an der von mir beschriebenen Fehlerursache. Dann finde ich es aber sehr seltsam, daß (wie von Dir beschrieben) der serielle Port von einem Terminalprogramm geöffnet werden kann. Wieso kann ein Terminalprogramm den Port öffnen, avrdude aber nicht?

Gruß Klaus (der soundsovielte)

P.S. ein UART-Sniffer könnte hilfreich sein. Bin z.Zt beim Kunden, habe aber auf MCN schonmal auf den von mir verwendeten Sniffer hingewiesen (frei erhältlich und unter Win10 im Administratormodus lauffähig).

Gast #7534781
Lesenswert?

Klaus S. schrieb:

Bin z.Zt beim Kunden, habe aber auf MCN schonmal auf den von mir verwendeten Sniffer hingewiesen (frei erhältlich und unter Win10 im Administratormodus lauffähig).

Na das ist ja echt toll. Danke fur das Posten des Links, der Source Code ist bestimmt top kommentiert. Und viele Linuxer freuen sich darauf das unter Windows im Administrator-Modus ausfuehren zu koennen. Dir, als Langjaehrigem mit Glied, kann man ja bedingungslos vertrauen. Super!! Boa-Ey!

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