Forum: Mikrocontroller und Digitale Elektronik Arduino Port busy


von Philipp G. (geiserp)


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?

von Klaus S. (kseege)


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)

von Rainer W. (rawi)


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?

von Harald K. (kirnbichler)


Lesenswert?

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

von Philipp G. (geiserp01)


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

von Jim M. (turboj)


Lesenswert?

Senden die µC was über UART ohne vorher gefragt zu werden?
Dann erkennt Windows das Gerät als serielle Maus und blockiert so den 
Port.

von Philipp G. (geiserp01)


Lesenswert?

Update:

Ich habe mal ein vid gemacht damit es klar wird:

https://www.youtube.com/watch?v=yRlOPvcXFk8

von Rainer W. (rawi)


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.

: Bearbeitet durch User
von Julian L. (rommudoh)


Lesenswert?

stelle sicher, dass kein anderes Programm auf die serielle Schnittstelle 
zugreift - also schließ jedes Terminal und den Seriellen Monitor, bevor 
du den Upload versuchst.

von Christian (christiankpunkt)


Lesenswert?

Ich hatte auch mal so ein Problem.
Bei mir war CURA schuld. Da es automatisch alle COM-Ports allokiert.
Das mitgelieferte CURA-Plugin "USB Printing" deaktivieren und es ging 
wieder.

von Georg G. (df2au)


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).

von Joe (Gast)


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!

von Harald K. (kirnbichler)


Lesenswert?

Georg G. schrieb:
> Abhilfe wäre, das Schliessen und erneute Öffnen wegzulassen.

In der Tat, das ist ja auch komplett überflüssig.

von Georg G. (df2au)


Lesenswert?

Joe schrieb:
> Und der hat gefaelligst regelmaessig die Freds hier zu lesen

Er liest hier mit. Und ich kenne ihn. Ich bin mir sicher, er wird das 
bald erledigt haben.

von Joe (Gast)


Lesenswert?

Und das haben wir gefaelligst zu wissen? Interessante Lebenseinstellung. 
Eckst du da nicht oefters mal an?

von Martin H. (horo)


Lesenswert?

Joe schrieb:
> https://github.com/avrdudes/avrdude/issues

Joe schrieb:
> Und das haben wir gefaelligst zu wissen?

Wenn Du die von Dir angegebene Adresse aufrufst und Dich dort etwas 
umsiehst, dann könntest Du auf einen bekannten Namen stoßen. ;)

von Björn W. (bwieck)


Lesenswert?

Warum ist das denn jetzt ein AVRDude Problem wenn die Arduino-IDE 
offenbar zu schnell hintereinander den Port öffnet?

von Rainer W. (rawi)


Lesenswert?

Björn W. schrieb:
> Warum ist das denn jetzt ein AVRDude Problem wenn die Arduino-IDE
> offenbar zu schnell hintereinander den Port öffnet?

So schlimm kann es mit dem "zu schnell" nicht sein. Sonst hätte sich die 
Arduino IDE nicht dermaßen weit in der Welt verbreitet.
Das hört sich eher nach einem lokalen Rechnerproblem an.

von Björn W. (bwieck)


Lesenswert?

Rainer W. schrieb:
> Das hört sich eher nach einem lokalen Rechnerproblem an.

Das glaube ich auch. Fand nur den "schuldigen" bei AVRDude zu suchen in 
den vorigen Posts Unsinn.

von Manfred P. (pruckelfred)


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.

von Harald K. (kirnbichler)


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.

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Harald K. schrieb:
> Aha. Deswegen gibt es ja auch ein Installationsprogramm. Damit man es
> nicht benutzt.
>
> Klar. Versteht jeder.

Du verstehst das offensichtlich nicht!
Vermutlich fehlt dir da was an nötiger Information, um das sinnbehaftet 
beurteilen zu können.
Kann ich damit richtig liegen?

von Harald K. (kirnbichler)


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".

von Klaus S. (kseege)


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.

von Philipp G. (geiserp)


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.

von Klaus S. (kseege)


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).

von Joe (Gast)


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!

von Harald K. (kirnbichler)


Lesenswert?

Joe schrieb:
> Na das ist ja echt toll. Danke fur das Posten des Links, der Source Code
> ist bestimmt top kommentiert.

Hast Du 'nen Furz quersitzen?

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.