Forum: Mikrocontroller und Digitale Elektronik Wie verbindet man Usb2TTL-Programmer mit Mega328P


von Michael K. (micha2384)


Angehängte Dateien:

Lesenswert?

Hallo,
ich möchte einen Mega328P programmieren, und wüsste gerne,
wie man die einzelnen Pins des (vierpoligen) Programmierkabels 
verbindet.

Verbindet man Tx (als c markiert) mit Rx oder Tx?
Verbindet man VCC (als a markiert) mit 3V3, Vcc, oder 5V?

Danke im voraus.

von Wolfgang (Gast)


Lesenswert?

Michael K. schrieb:
> ich möchte einen Mega328P programmieren, und wüsste gerne,
> wie man die einzelnen Pins des (vierpoligen) Programmierkabels
> verbindet.

Dafür brauchst du auf dem ATmega328 erstmal einen Bootloader. Sonst wird 
das mit der Programmierung nichts - egal was du an RX und TX anschließt.

von Oliver S. (oliverso)


Lesenswert?

Ohne genauere Angaben, was dein Mega328p tatsächlich ist, lautet die 
Antwort zur Titelfrage: gar nicht, weil der ab Werk keinen bootloader 
mitbringt, und damit über keinen der von dir gezeichneten Pins 
programmierbar ist.

Aber dein Mega328p wird ja wohl auf irgend einer Platine stecken, und 
wenn zu der dann da zufällig noch sowas wie „Arduino“ erwähnt wurde, 
sieht’s anders aus.

Also: was genau hast du?

Oliver

von Wolfgang (Gast)


Lesenswert?

Michael K. schrieb:
> Wie verbindet man Usb2TTL-Programmer

Das kommt drauf an, was das für ein Teil ist.
USB2TTL mit RX/TX hört sich erstmal nicht nach einem Programmiergerät 
für einen jungfräulichen ATmega an.

von Michael K. (micha2384)


Angehängte Dateien:

Lesenswert?

Oliver S. schrieb:
> Ohne genauere Angaben, was dein Mega328p tatsächlich ist, lautet die
> Antwort zur Titelfrage: gar nicht ... Also: was genau hast du?
> Oliver
Ich habe diesen Mega328P (Bild)

von Georg M. (g_m)


Lesenswert?


von Georg G. (df2au)


Lesenswert?

Wenn dein USB2TTL nicht noch einen DTR Ausgang hat, wird das nichts (für 
einen Anfänger). Den braucht das Programmierprogramm, um den 328 in den 
Reset zu bewegen.

von Michael K. (micha2384)


Lesenswert?

mein Usb2TTL-Programmer hat kein DTR, nur:

5V
VCC
3V3
TxD
RxD
GND

muss wohl einen neuen kaufen..

: Bearbeitet durch User
von Christian M. (christian_m280)


Lesenswert?

Reset drücken, Upload starten, wenn der Upload beginnt, Reset loslassen.
Das ist ein Arduino Pro Mini, nicht nur ein blosser Mega328P!

Gruss Chregu

von Rene K. (xdraconix)


Lesenswert?

Christian M. schrieb:
> Reset drücken, Upload starten, wenn der Upload beginnt, Reset loslassen.
> Das ist ein Arduino Pro Mini, nicht nur ein blosser Mega328P!
> Gruss Chregu

Solange auf diesem, aus welchen Gründen auch immer, kein UART Bootloader 
drauf ist - kann das sein was es will.

Ich sehe da erstmal nur einen Atmega328P.

Und das schlimme an dem Ding ist ja das nichtmal die ISP nach außen 
geführt ist. Darf man sich dann irgendwo zwischen Arduino Pin Nummern 
und Datenblatt rausfischen... Ein Unsinn sowas.

von Helmut -. (dc3yc)


Lesenswert?

Michael K. schrieb:
> mein Usb2TTL-Programmer hat kein DTR, nur:
>
> 5V
> VCC
> 3V3
> TxD
> RxD
> GND
>
> muss wohl einen neuen kaufen..

Nein, musst du nicht! Verbinde an deinem Programmer 3V3 mit VCC und mit 
VCC am Arduino. Programmer-Gnd mit Arduino-Gnd verbinden und RX mit TX 
sowie TX mit RX (also Programmer und Arduino über Kreuz). Zum 
Programmieren dann, wie Chregu oben schrieb, die Resettaste vor dem 
Upload drücken und wenn der beginnt, die Taste loslassen. So hab ich 
schon hunderte dieser Platinchen programmiert.

von Axel S. (a-za-z0-9)


Lesenswert?

Michael K. schrieb:

> Ich habe diesen Mega328P (Bild)

Das ist ein Arduino Pro Mini. Steht doch drauf. Also ohne "Arduino".

Der würde sich tatsächlich mit einem USB-Serial Adapter programmieren 
lassen. Sofern er den Bootloader drauf hat. Bei billigen China-Klonen 
wie deinem läßt der Hersteller den schon mal weg. Oder spielt den 
falschen auf (es gibt zwei, mit unterschiedlichen Baudraten).

Um deine ursprüngliche Frage zu beantworten: bei einer seriellen 
Schnittstelle wie hier werden RxD und TxD grundsätzlich gekreuzt. GND 
kommt natürlich an GND. Und als Arduino ist die Betriebsspannung Vcc = 
3.3V. Wenn der Arduino nicht anderweitig versorgt wird, mußt du also 
den 3.3V Ausgang deines USB-Adapters benutzen. Sonst bleibt der Vcc 
Anschluß frei.

Und obwohl es schon gesagt wurde: mangels DTR-Ausgang an deinen 
USB-Adapter funktioniert der automatische Reset nicht. Du mußt also 
manuell auf Reset drücken, um etwas zu uploaden.

: Bearbeitet durch User
von Charly B. (charly)


Lesenswert?

noch eine info:

nicht gleich aufgeben wenn's nicht auf anhieb klappt,
teste verschiedene baudraten denn standart ist 'nix'
d.h. es gibt versch. Bootloader mit genauso unterschiedlichen
Baudraten, viel erfolg

ps. schliese ihn a 5V an nicht an 3.3 da vermutlich ein 16 oder
20Mhz quarz drauf ist und dann benoetigt er 5V lt. DB

: Bearbeitet durch User
von Wolfgang (Gast)


Lesenswert?

Michael K. schrieb:
> ich möchte einen Mega328P programmieren, und wüsste gerne,
> wie man die einzelnen Pins des (vierpoligen) Programmierkabels
> verbindet.

Hast du dir auch Gedanken über die Software gemacht, die du dazu 
benötigst?

Axel S. schrieb:
> Oder spielt den
> falschen auf (es gibt zwei, mit unterschiedlichen Baudraten).

Warum soll einer davon falsch sein. Man muss zum Programmieren nur das 
passende Gegenstück auf dem PC verwenden.

von Kuki (Gast)


Lesenswert?

Charly B. schrieb:
> noch eine info:
>
> nicht gleich aufgeben wenn's nicht auf anhieb klappt,
> teste verschiedene baudraten denn standart ist 'nix'
> d.h. es gibt versch. Bootloader mit genauso unterschiedlichen
> Baudraten, viel erfolg
>
> ps. schliese ihn a 5V an nicht an 3.3 da vermutlich ein 16 oder
> 20Mhz quarz drauf ist und dann benoetigt er 5V lt. DB

Der TO wird hoffentlich wissen ob er die 3.3V oder 5V Version bestellt 
hat. 5V anzulegen, wenn auf dem Board ein 3.3V Regler verbaut ist, kann 
auch schiefgehen.

Axel S. schrieb:
> Um deine ursprüngliche Frage zu beantworten: bei einer seriellen
> Schnittstelle wie hier werden RxD und TxD grundsätzlich gekreuzt.

Ja, das stimmt natürlich, außer man hat wie ich einen USB-Seriell 
Wandler, der die TX und RX Beschriftung aus Sicht des angeschlossenen 
Geräts hat. Da geht dann TX auf TX, und RX auf RX. So ein Mist! Habe 
deswegen gerade heute morgen einige Zeit damit verbracht, die Ursache 
für eine nichtfunktionierende Kommunikation zu finden.

von Georg M. (g_m)


Angehängte Dateien:

Lesenswert?

Rene K. schrieb:
> die ISP nach außen

11 - MOSI
12 - MISO
13 - SCK

von Pepe T. (pepe_t)


Lesenswert?

Michael K. schrieb:
> mein Usb2TTL-Programmer hat kein DTR, nur:
> muss wohl einen neuen kaufen..

Nein, geht auch ohne.
Der arduino geht beim einschalten oder reset kurz in boot modus.
Musst "upload drücken" und reset synchronisieren, dann geht das.

: Bearbeitet durch User
von Old-scool-232++ (Gast)


Lesenswert?

Kuki schrieb:
> Charly B. schrieb:
>> noch eine info:
>>
>> nicht gleich aufgeben wenn's nicht auf anhieb klappt,
>> teste verschiedene baudraten denn standart ist 'nix'
>> d.h. es gibt versch. Bootloader mit genauso unterschiedlichen
>> Baudraten, viel erfolg
>>
>> ps. schliese ihn a 5V an nicht an 3.3 da vermutlich ein 16 oder
>> 20Mhz quarz drauf ist und dann benoetigt er 5V lt. DB
>
> Der TO wird hoffentlich wissen ob er die 3.3V oder 5V Version bestellt
> hat. 5V anzulegen, wenn auf dem Board ein 3.3V Regler verbaut ist, kann
> auch schiefgehen.
>
> Axel S. schrieb:
>> Um deine ursprüngliche Frage zu beantworten: bei einer seriellen
>> Schnittstelle wie hier werden RxD und TxD grundsätzlich gekreuzt.
>
> Ja, das stimmt natürlich, außer man hat wie ich einen USB-Seriell
> Wandler, der die TX und RX Beschriftung aus Sicht des angeschlossenen
> Geräts hat. Da geht dann TX auf TX, und RX auf RX. So ein Mist! Habe
> deswegen gerade heute morgen einige Zeit damit verbracht, die Ursache
> für eine nichtfunktionierende Kommunikation zu finden.

Der vollständigen Korrektheit halber gebe ich meine 2 Korinthen hinzu.

Das Signal TxD ist von DTE nach DCE definiert.
Das Signal RxD ist von DCE nach DTE definiert.

DCE und DTE sind die Rollen der 2 Gegenstellen einer 
"V.24/RS-232"-Strecke.
DCE ist eine "Kommunikationseinrichtung" z.B. ein Modem.
DTE sind "Datenendgeräte" z.B. Terminals, Computers, Drucker, usw.

Nun hängt es davon ab, ob USB2TTL-Adapter UND die uC-'328-Platine je 
die DCE oder die DTE Rolle einnehmen...
Sprich: ob auf der jeweiligen Platine "Tx" resp. "Rx" hardwaremäßig 
Eingang oder Ausgang sind...

1
<ironie> Noch Fragen zur unklaren Hühnerbrühe? </Ironie>

von Wolfgang (Gast)


Lesenswert?

Old-scool-232++ schrieb:
> DCE und DTE sind die Rollen der 2 Gegenstellen einer
> "V.24/RS-232"-Strecke.

Spielt hier nur alles keine Rolle, weil hier weder DCE noch DTE noch 
RS-232 auftauchen - weder beim (Arduino) Pro Mini, noch beim 
USB2TTL-Wandler.

Bleibt die Messung an den Pin. Mit einem Voltmeter und einem Widerstand 
(als Pull-Up/-Down) von 10k lässt sich leicht feststellen, ob es sich 
bei den mit "RX" und "TX" bezeichneten Pins jeweils um einen Eingang 
oder einen Ausgang handelt.

von c-hater (Gast)


Lesenswert?

Kuki schrieb:

> Ja, das stimmt natürlich, außer man hat wie ich einen USB-Seriell
> Wandler, der die TX und RX Beschriftung aus Sicht des angeschlossenen
> Geräts hat. Da geht dann TX auf TX, und RX auf RX. So ein Mist!

Ja, auf sowas trifft man öfters mal und nicht nur bei solchen 
USB-Wandlern...

von Manfred (Gast)


Angehängte Dateien:

Lesenswert?

Georg G. schrieb:
> Wenn dein USB2TTL nicht noch einen DTR Ausgang hat, wird das nichts (für
> einen Anfänger). Den braucht das Programmierprogramm, um den 328 in den
> Reset zu bewegen.

Nee, Reset kann man von Hand drücken.

Michael K. schrieb:
> mein Usb2TTL-Programmer hat kein DTR, nur:
> muss wohl einen neuen kaufen..

Nö, man kann ihn nachverdrahten, wobei auf dem Bild noch die 
Verbindungsleitung zum ProMini fehlt. Oder eben den Taster drücken, 
sobald die Arduino-IDE den Upload beginnen will.

Rene K. schrieb:
> Und das schlimme an dem Ding ist ja das nichtmal die ISP nach außen
> geführt ist.

Da muß man sich einen Adapter stricken und kann gleich noch die 
Buchsenleisten-Reste verbauen, weil man ja nicht alle Pins braucht. Wird 
im Regelfall nicht benötigt, es sei denn, man will den Bootloader 
umflashen.

Kuki schrieb:
> Der TO wird hoffentlich wissen ob er die 3.3V oder 5V Version bestellt
> hat. 5V anzulegen, wenn auf dem Board ein 3.3V Regler verbaut ist, kann
> auch schiefgehen.

Dem komme ich aus dem Weg, indem ich eine Trennung mit ADUM-1201 
einsetze und den ProMini extern speise.

von Stefan F. (Gast)


Lesenswert?

Michael K. schrieb:
> Ich habe diesen Mega328P (Bild)

Das ist kein Mega328P (korrekt: ATmega 328 P), sondern ein Arduino 
kompatibles Board mit ATmega 328 P. Diese Board werden in der Regel mit 
Bootloader ausgestattet geliefert.

Anleitung: 
https://docs.arduino.cc/retired/getting-started-guides/ArduinoProMini
1
USB Adapter     Arduino Board
2
Tx -----------> Rx
3
Rx <----------- Tx
4
GND ----------- GND

Vor der Programm-Übertragung musst du den Reset-Knopf drücken. In der 
ersten Sekunde danach ist der Bootloader empfangsbereit, nicht länger.

Angeblich sind bei manchen USB/TTL Adaptern die Pins Rx und Tx 
vertauscht beschriftet. Das kann man aber leicht mit einer LED 
(+Vorwiderstand) herausfinden. Der Tx Ausgang liefert im Ruhezustand 
einen HIGH Pegel.

von Johannes U. (kampfradler)


Lesenswert?

Manfred schrieb:

> Michael K. schrieb:
>> mein Usb2TTL-Programmer hat kein DTR, nur:
>> muss wohl einen neuen kaufen..
>
> Nö, man kann ihn nachverdrahten, wobei auf dem Bild noch die
> Verbindungsleitung zum ProMini fehlt. Oder eben den Taster drücken,
> sobald die Arduino-IDE den Upload beginnen will.

Yepp, Datenblatt zum Converterchip besorgen und nachverdahten.
Wurde auch schon reichlich beschrieben, z.B. hier:
>https://jimlaurwilliams.org/wordpress/?p=999

von Schlaumaier (Gast)


Lesenswert?

Charly B. schrieb:
> nicht gleich aufgeben wenn's nicht auf anhieb klappt,
> teste verschiedene baudraten denn standart ist 'nix'

Kann ich nur bestätigen.  Meine Nanos lassen sich nur Stressfrei 
programmieren wenn ich die Baudrate auf 9600 stelle.

Bei den paar KB die da rein müssen, ist das eh nicht wirklich relevant.

von Stefan F. (Gast)


Lesenswert?

Schlaumaier schrieb:
> Meine Nanos lassen sich nur Stressfrei
> programmieren wenn ich die Baudrate auf 9600 stelle.

Standard ist bei Arduino allerdings 57600 oder 115200 Baud.

von Schlaumaier (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Standard ist bei Arduino allerdings 57600 oder 115200 Baud.

Weiß ich. Aber dann fliegen mir die Fehlermeldungen um die Ohren.

Ich VERMUTE ohne Beweis das es daran liegt das ich nur Clone benutze. 
Hab ich damals für im Schnitt 1.80 Euro a gekauft. Kann aber auch an 
mein System liegen.

Aber da ich mir angewöhnt habe, keine "Standards" zu suchen, solange es 
auch anders geht, werde ich das vermutlich nie erfahren.

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.