Forum: Mikrocontroller und Digitale Elektronik Arduino Sketch-Upload via USB nicht möglich wenn MAX232 verbunden


von Tobias (krametob)


Lesenswert?

Hallo zusammen,

ich habe einen Arduino UNO via USB an den PC angeschlossen (virt. COM4) 
und gleichzeitig die Serielle-Schnittstelle des Arduino via MAX232 an 
virt. COM6 des PC's verbunden.

Problem: Der Sketch-Upload funktioniert dann nicht.
Fehlermeldung der IDE "avrdude: stk500_getsync() attempt 6 of 10: not in 
sync: resp=0x69"

Erst als ich den MAX232 vom Arduino getrennt habe (RX, TX Pin) hat der 
Upload funktioniert.

Wer kann mir sagen warum sich der Arduino so verhält und warum Rx, Tx 
Pins nicht mit dem MAX232 verbunden sein dürfen, damit der Sketch-Upload 
via USB funktioniert ?

Habe ich den MAX232 noch nicht richtig mit dem Arduino verbunden? Ich 
benutze nur die Rx, TX Pin's. CTS/RTS vom MAX232 sind nicht mit dem 
Arduino verbunden.

Danke für eure Rückmeldungen.

Grüße

krametob

von Falk B. (falk)


Lesenswert?

Tobias schrieb:

> Erst als ich den MAX232 vom Arduino getrennt habe (RX, TX Pin) hat der
> Upload funktioniert.

Logisch, denn der Bootloader nutzt den UART. Die Schaltung auf dem 
Arduion ist sogar so gestaltet, daß ein externer UART Vorrang vor dem 
USB-UART hat.

Das TX Pin ist egal, das ist ein Ausgang an der CPU. Kritisch ist das 
RX-Pin, das vom USB als auch externen UART getrieben werden kann.

von Wastl (hartundweichware)


Lesenswert?

Tobias schrieb:
> COM6 des PC's

Tobias schrieb:
> TX Pin's

Bitte keine Deppenapostrophen.
http://www.deppenapostroph.info

Tobias schrieb:
> ich habe einen Arduino UNO via USB an den PC angeschlossen (virt. COM4)
> und gleichzeitig die Serielle-Schnittstelle des Arduino via MAX232 an
> virt. COM6 des PC's verbunden.

Wozu soll das auch gut sein? Die USB Verbindung ist nur solange
belegt solange der Flash-Vorgang läuft. Sie ist danach ohne
weitere Künsteleien für normale Rx/Tx Übertragungen nutzbar.

von Falk B. (falk)


Angehängte Dateien:

Lesenswert?

Man könnte mittels Diode und Widerstand ein logisches AND erzeugen, dann 
muss man den externen UART nicht immer abziehen. Der muss dann aber auch 
ruhig sein, wenn ein Upload auf den Arduino erfolgt.

von Tobias (krametob)


Lesenswert?

Hallo Falk,

Danke für die schnelle Antwort.

Also ist es nicht ohne weiteres möglich den Arduino via USB zu 
programmieren, wenn der UART RX-Pin gleichzeitig verbunden ist ?

Für mich wäre diese Möglichkeit praktisch, da dann eine Programmierung 
ohne Umbau oder weitere Schaltung (RX-Disconnect) möglich wäre.

Grüße

Tobias

von Rainer W. (rawi)


Lesenswert?

Tobias schrieb:
> Also ist es nicht ohne weiteres möglich den Arduino via USB zu
> programmieren, wenn der UART RX-Pin gleichzeitig verbunden ist ?

Guck dir den Schaltplan an.
Wenn der Ausgang von deinem MAX232 den RXD vom Arduino auf einen Pegel 
zwingt, hat das Signal vom USB keine Chance mehr.
https://www.arduino.cc/en/uploads/Main/arduino-uno-schematic.pdf

von Falk B. (falk)


Lesenswert?

Tobias schrieb:
> Hallo Falk,
>
> Danke für die schnelle Antwort.
>
> Also ist es nicht ohne weiteres möglich den Arduino via USB zu
> programmieren, wenn der UART RX-Pin gleichzeitig verbunden ist ?

So wie es jetzt aufgebaut ist, nein.
Aber wie Wastl schon feststellte. Wozu meinst du, die EXTRA Verbindung 
über einen MAX232 zum PC zu brauchen? Die braucht man an sich nicht! 
Sein Serial.Print() etc. läuft auch über den USB-UART!

> Für mich wäre diese Möglichkeit praktisch, da dann eine Programmierung
> ohne Umbau oder weitere Schaltung (RX-Disconnect) möglich wäre.

Siehe mein anderer Beitrag.

von Gerhard O. (gerhard_)


Angehängte Dateien:

Lesenswert?

Falk B. schrieb:
> Tobias schrieb:
>
>> Erst als ich den MAX232 vom Arduino getrennt habe (RX, TX Pin) hat der
>> Upload funktioniert.
>
> Logisch, denn der Bootloader nutzt den UART. Die Schaltung auf dem
> Arduion ist sogar so gestaltet, daß ein externer UART Vorrang vor dem
> USB-UART hat.
>
> Das TX Pin ist egal, das ist ein Ausgang an der CPU. Kritisch ist das
> RX-Pin, das vom USB als auch externen UART getrieben werden kann.

Beim Nano oder Pro-Mini schalte ich vom TX Pin des externen MAX232 eine 
Isolationsdiode mit Cathode auf MAX232 TX Pin. Das isoliert die Blockade 
des Bootloaders durch den externen MAX232 TX Pin. Man muß lediglich 
darauf achten, daß während des Bootloader Betriebs, der MAX232 keine 
Daten erhält und dann den USB TX Pin blockiert. Umgekehrt funktioniert 
das, weil der USB Serial über 1K Widerstände mit dem uC RX/TX Pin 
verbunden sind und ein externer Serial Betrieb deswegen den Vorrang hat 
und die Isolationsdiode am MAX232 TX Ausgang notwendig ist. Es ist auch 
zweckmässig einen 10-20K vom RX Pin nach Vcc zu schalten um bessere 
Flankensteilheit zu gewinnen.

Jedenfalls funktioniert das bei mir bestens.

In einen Sensor Projekt läuft so ein RS485 Transceiver in Parallel mit 
dem Einsteck Serial Transceiver über USB bei einem Pro-Mini bestens.

Nachtrag:
Sehe gerade im Nachhinein, daß Falk es ohnehin schon früher 
vorgeschlagen hatte.

: Bearbeitet durch User
von Tobias (krametob)


Lesenswert?

Okay, die Schaltung macht es ganz klar. Danke

Wenn ich nur über die Verbindung vom MAX232 (USB nicht verbunden) gehe 
funktioniert der Sketch-Upload ebenfalls nicht. (Externe Spg.-Versorgung 
ist vorhanden ;-) )
Das soll nicht heißen, dass ich mit eurer Lösung nur die USB-Verbindung 
zu verwenden nicht einverstanden bin.
Wenn ihr mich an dieser Stelle nochmal aufklärt.

Danke für die schnellen Antworten und Grüße

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


Lesenswert?

Tobias schrieb:
> gehe
> funktioniert der Sketch-Upload ebenfalls nicht. (Externe Spg.-Versorgung
> ist vorhanden ;-) )

DTR vergessen!

von Wastl (hartundweichware)


Lesenswert?

Tobias schrieb:
> Wenn ihr mich an dieser Stelle nochmal aufklärt.

Also nochmal: du brauchst keine zwei Verbindungen vom Arduino
zum PC. Eine reicht für alles.

Wenn doch, begründe das ausführlich.

von Gerhard O. (gerhard_)


Lesenswert?

Tobias schrieb:
> Okay, die Schaltung macht es ganz klar. Danke
>
> Wenn ich nur über die Verbindung vom MAX232 (USB nicht verbunden) gehe
> funktioniert der Sketch-Upload ebenfalls nicht. (Externe Spg.-Versorgung
> ist vorhanden ;-) )
> Das soll nicht heißen, dass ich mit eurer Lösung nur die USB-Verbindung
> zu verwenden nicht einverstanden bin.
> Wenn ihr mich an dieser Stelle nochmal aufklärt.
>
> Danke für die schnellen Antworten und Grüße

Bin nicht sicher, was Du da meinst. Wenn Du auch über den MAX232 den 
Bootloader ansprechen willst, musst Du den RTS Pin über einen C mit dem 
Reset Eingang des 328er verbinden, damit AVRDUDE den 328er resetten 
kann. Oder Du machst den Reset einfach bei Hand über den Druckknopf. Das 
funktioniert mit etwas Übung auch.

AVR Dude hält den RTS Pin während des Programmiervorgangs permanent auf 
LOW und startet über ein Serien C durch einmaligen Reset am Anfang den 
Bootloader.

Kannst Du Dein Problem sonst etwas näher beschreiben?

von Tobias (krametob)


Lesenswert?

Hi, kannst Du bitte etwas genauer auf DTR eingehen. Ich habe noch CTS 
und RTS am MAX232 zur Verfügung. Was genau müsste ich machen ?

Mein Ziel: Wahlweise entweder die USB-Verbindung zu verwenden oder über 
reinen UART-Betrieb zu gehen

Grüße

von Tobias (krametob)


Lesenswert?

Hallo Gerhard,

Danke für die Erklärung mit dem RTS-Pin. Ich werde das so aufbauen und 
freue mich wenn ich dann auch via UART einen Sketch-Upload machen kann.

Nochmal vielen Dank in die Runde für eure schnellen Antworten. Ihr habt 
mir sehr geholfen.

Grüße an alle und ein schönes Wochenende

Tobias

von Falk B. (falk)


Lesenswert?

Tobias schrieb:
> Hi, kannst Du bitte etwas genauer auf DTR eingehen. Ich habe noch CTS
> und RTS am MAX232 zur Verfügung. Was genau müsste ich machen ?

Das was der Rest der Welt macht. Nur USB anstecken und gut!

> Mein Ziel: Wahlweise entweder die USB-Verbindung zu verwenden oder über
> reinen UART-Betrieb zu gehen

Wofür? Für die Kommunikation mit dem PC? Dafür reicht die USB-Verbindung 
mit dem virtuellen COM-Port!
Darüber läuft auch die Programmierung des Arduino. So wie es Millionen 
von Arduion-Anwendern tun!

von Gerhard O. (gerhard_)


Lesenswert?

Tobias schrieb:
> Hallo Gerhard,
>
> Danke für die Erklärung mit dem RTS-Pin. Ich werde das so aufbauen und
> freue mich wenn ich dann auch via UART einen Sketch-Upload machen kann.
>
> Nochmal vielen Dank in die Runde für eure schnellen Antworten. Ihr habt
> mir sehr geholfen.
>
> Grüße an alle und ein schönes Wochenende
>
> Tobias

Gern geschehen.

Ich habe das mit dem manuellen RESET auf einem STK500 früher genauso 
gemacht um einen Arduino Bootloader für einen ATMEGA1284P zu testen. Mit 
dem STK500 war ich über RS232 verbunden und startete dann den Bootloader 
einfach mit dem RESET Taster auf dem STK500. Das funktionierte ganz gut, 
weil AVRDUDE wiederholt versucht sich mit dem Target in Verbindung zu 
setzen, bevor er aufgibt. Da kann man dann relaxed vorgehen.

von Gerhard O. (gerhard_)


Lesenswert?

Falk B. schrieb:
> Tobias schrieb:
>> Hi, kannst Du bitte etwas genauer auf DTR eingehen. Ich habe noch CTS
>> und RTS am MAX232 zur Verfügung. Was genau müsste ich machen ?
>
> Das was der Rest der Welt macht. Nur USB anstecken und gut!
>
>> Mein Ziel: Wahlweise entweder die USB-Verbindung zu verwenden oder über
>> reinen UART-Betrieb zu gehen
>
> Wofür? Für die Kommunikation mit dem PC? Dafür reicht die USB-Verbindung
> mit dem virtuellen COM-Port!
> Darüber läuft auch die Programmierung des Arduino. So wie es Millionen
> von Arduion-Anwendern tun!

Beim UNO vielleicht. Beim PRO-MINI ist das zumindest für mich auch ein 
aktuelles Problem, weil dann temporär ein USB Serial Kabel am 6-Pin 
Header eingesteckt ist und ich von der Anwendungsseite her einen MAX232 
oder MAX483 parallel mit dran habe. Vielleicht ist es bei Tobias 
ähnlich, daß er aus irgendeinen triftigen Grund den USB Serial des UNOs 
oder NANO nicht (immer) einsetzen möchte.

: Bearbeitet durch User
von Falk B. (falk)


Lesenswert?

Gerhard O. schrieb:
> Beim UNO vielleicht. Beim PRO-MINI ist das zumindest für mich ein
> aktuelles Problem, weil dann temporär ein USB Serial Kabel am 6-Pin
> Header eingesteckt ist und ich von der Anwendungsseite her einen MAX232
> oder MAX483 parallel mit dran habe.

> Vielleicht ist es bei Tobias
> ähnlich,

Nö, sein MAX232 verbindet nach seiner Aussage auch zum PC.

"ich habe einen Arduino UNO via USB an den PC angeschlossen (virt. COM4)
und gleichzeitig die Serielle-Schnittstelle des Arduino via MAX232 an
virt. COM6 des PC's verbunden."

Das ist sinnlos.

von Gerhard O. (gerhard_)


Lesenswert?

Falk B. schrieb:
> Gerhard O. schrieb:
>> Beim UNO vielleicht. Beim PRO-MINI ist das zumindest für mich ein
>> aktuelles Problem, weil dann temporär ein USB Serial Kabel am 6-Pin
>> Header eingesteckt ist und ich von der Anwendungsseite her einen MAX232
>> oder MAX483 parallel mit dran habe.
>
>> Vielleicht ist es bei Tobias
>> ähnlich,
>
> Nö, sein MAX232 verbindet nach seiner Aussage auch zum PC.
>
> "ich habe einen Arduino UNO via USB an den PC angeschlossen (virt. COM4)
> und gleichzeitig die Serielle-Schnittstelle des Arduino via MAX232 an
> virt. COM6 des PC's verbunden."
>
> Das ist sinnlos.

Das habe ich aber auch schon so gemacht. Ein USB port gehört dem AVRDUDE 
und der andere ist mit anderer HW verbunden oder Teraterm für gewisse 
Upload Aktivitäten. Das einfache Terminalprogram im IDE kann ja das 
nicht.

So ist das IDE bequemer bedienbar, weil dann das Terminalprogram nicht 
den USB port freigeben muß. Dann kann der 2. USB Port mit dem 
Terminalprogram immer dran bleiben. Nur darf der zweite Serial Port nur 
dann aktiv sein, wenn AVRDude nicht kommuniziert.

: Bearbeitet durch User
von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Gerhard O. schrieb:
> musst Du den RTS Pin
Arduino UNO Schaltplan: DTR!
Nix RTS
Auch Pro Mini und Nano.

Tobias schrieb:
> Hi, kannst Du bitte etwas genauer auf DTR eingehen.
Einfach mal den Schaltplan des UNO untersuchen.
Den lese ich jetzt hier nicht vor.

von Gerhard O. (gerhard_)


Lesenswert?

Arduino F. schrieb:
> Gerhard O. schrieb:
>> musst Du den RTS Pin
> Arduino UNO Schaltplan: DTR!
> Nix RTS
> Auch Pro Mini und Nano.
>
> Tobias schrieb:
>> Hi, kannst Du bitte etwas genauer auf DTR eingehen.
> Einfach mal den Schaltplan des UNO untersuchen.
> Den lese ich jetzt hier nicht vor.

Wenn ich mich recht erinnere, wird zumindest beim FT232RL der RTS Pin 
während des AVRDude Zugriffs aktiviert. Aber Du magst recht haben. Kann 
es aber derzeit nicht verifizieren.

Beim USB CH340 Kabel mit den 6 Pins, welches ich meist mit dem Pro-Mini 
verwende, wird in der Tat der DTR Pin dafür verwendet und ist auch so 
beschriftet dort.

Lässt sich ja leicht feststellen, welchen Ausgang AVRDude tatsächlich 
beansprucht.

von Stefan F. (Gast)


Lesenswert?

Tobias schrieb:
> Also ist es nicht ohne weiteres möglich den Arduino via USB zu
> programmieren, wenn der UART RX-Pin gleichzeitig verbunden ist ?
1
Signal von USB o-----[===]---+--------o Rx Eingang Mikrocontroller
2
                             |
3
Signal vom MAX o-------------+ (High)

Im Ruhezustand liefern beide Signalquellen einen HIGH Pegel. Die 
Kommunikation findet durch LOW-Impulse statt.

Weil dein ruhender MAX aber ständig HIGH liefert, sieht der 
Mikrocontroller ständig HIGH. Was der USB-UART Chip durch den Widerstand 
liefert, kann der Mikrocontroller nicht sehen. Dessen Signal wird 
komplett im Widerstand verheizt.

von Christian M. (christian_m280)


Lesenswert?

Gerhard O. schrieb:
> So ist das IDE bequemer bedienbar, weil dann das Terminalprogram nicht
> den USB port freigeben muß.

Früher hat das der lustige "Serial-Monitor" von der Arduino-IDE 
automatisch gemacht, seit 2.x ist das kaputt-geupdated...

Gruss Chregu

von Tobias (krametob)


Angehängte Dateien:

Lesenswert?

Hallo Gerhard,

kurzes Feedback. Ich habe Deinen Schaltungsvorschlag umgesetzt und siehe 
da jetzt funktioniert der Sketch-Upload auch wenn der RS232 
angeschlossen ist :-)

Habe meine kompletten Schaltungsaufbau mal als Bild angehängt.

Nochmal herzlichen Dank und Grüße

Tobias

: Bearbeitet durch User
von Gerhard O. (gerhard_)


Lesenswert?

Tobias schrieb:
> Hallo Gerhard,
>
> kurzes Feedback. Ich habe Deinen Schaltungsvorschlag umgesetzt und siehe
> da jetzt funktioniert der Sketch-Upload auch wenn der RS232
> angeschlossen ist :-)
>
> Habe meine kompletten Schaltungsaufbau mal als Bild angehängt.
>
> Nochmal herzlichen Dank und Grüße
>
> Tobias

Hallo Tobias,

vielen Dank für Deine Erfolgsrückmeldung. Freut mich sehr.

Mit vereinten Kräften aller Beteiligten;-)

VG,
Gerhard

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.