ATmega2560 über USB zu UART TTL Schnittstelle programmieren

Hallo Zusammen,

ich suche momentan nach einer Lösung warum ich den ATmega2560 nicht über die oben genannte Schnittstelle programmieren kann. Der ATmega2560 sitzt auf einem Entwicklerboard und ich schließe die Kontakte der Schnittstelle wie folgt an:

DTR -> Reset
RXD -> TX0
TXD -> RX0
5V -> 5V
GND -> GND

Nun dürfte ich den Sketch ohne Probleme hochladen können, jedoch bekomme ich folgende Fehlermeldung:

Der Sketch verwendet 1482 Bytes (0%) des Programmspeicherplatzes. Das Maximum sind 253952 Bytes.
Globale Variablen verwenden 9 Bytes (0%) des dynamischen Speichers, 8183 Bytes für lokale Variablen verbleiben. Das Maximum sind 8192 Bytes.
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_getsync(): timeout communicating with programmer
Beim Hochladen des Sketches ist ein Fehler aufgetreten

Hier noch ein paar Infos:

  • schließe ich das Entwicklerboard per USB 2.0 zu USB Typ-B an, ist das Programmieren kein Problem
  • schließe ich RXD und TXD kurz und sende etwas über den seriellen Monitor, erhalte ich das Echo
  • Drücken des Resets beim Kompilieren und unmittelbar beim Hochladeprozess loslassen, keine Wirkung
  • deinstallieren und neuinstallieren der Treiber war ebenfalls erfolgslos

Würde mich sehr über eure Anregungen freuen.
LG

Hallo,
Du hast 2 Möglichkeiten einen originalen Arduino Mega 2560 zu programmieren...
Einmal über dessen USB-Buchse...
Einmal mit einem ISP-Programmer an den ICSP Pin´s
Gruß und Spaß
Andreas

Der ATmega2560 sitzt auf einem Entwicklerboard

Leider kenne ich das Board nicht.

DTR -> Reset

Fehlt da nicht ein Kondensator?

Bootloader?
Welcher ist drauf?

schließe ich das Entwicklerboard per USB 2.0 zu USB Typ-B an, ist das Programmieren kein Problem

Was das bedeuten soll ist mir ein Rätsel......

  1. der ATmega2560 muß einen Bootloader programmiert haben
  2. zwischen DTR und RESET muß ein 0,1µF Kondensator geschaltet sein.

Grüße Uwe

Erstmal vielen Dank für die schnellen Antworten!

Das ist das Board: https://www.amazon.de/ATmega2560-Funduino-groß2560-Compatible-Verbesserte/dp/B013JSZD2O
Die USB Verbindung sieht man auch auf dem Bild.

Ich bin davon ausgegangen, es sei schon ein Bootloader drauf. Werde nochmal googlen und mich damit auseinandersetzen. Das mit dem 0,1uF Kondensator in Reihe werde ich ebenfalls probieren.

@skobymobil: Ich bin mir ziemlich sicher, dass das auch über die RX/TX Pins funktioniert

Das ist doch ein ganz normaler Arduino Mega-Clone. Warum nutzt du nicht den USB-Anschluss des Boards?

Hast Du den richtigen Link eingebunden. Das Angebot zeigt einen Arduino MEGA Nachbau?
Grüße Uwe

Wenn du mit einen anderen usb serial ttl Adapter flashen willst, musst du außerdem noch den usb-seriell (16AU) auf dem board im Reset halten.

Richtig ist nur ein Nachbau, aber ich würde gerne lernen wie man mit der Schnittstelle umgeht, damit ich das später an einem ATmega2560, der auf einer Platine sitzt, umsetzen kann.

@ElEspanol: Ich dachte der DTR hält den Reset? Wofür steht 16AU?

Wofür steht 16AU?

Er meint 16U2

@ElEspanol: Ich dachte der DTR hält den Reset?

"hält" ist genau das Problem, dagegen hilft der Kondensator.

Richtig ist nur ein Nachbau, aber ich würde gerne lernen wie man mit der Schnittstelle umgeht, damit ich das später an einem ATmega2560, der auf einer Platine sitzt, umsetzen kann.

Das doofe ist, dass du dann 2 USB-Serial Wandler am ATMega2560 hast.
Und das ist KEIN Bus. 3 Partner verboten. Nur 2 machen Sinn.
Einen davon, musst du nieder halten, den 16U2, im Reset halten, damit er nicht stört.

Ich schaue auf den Schaltplan vom Arduino Mega2560, da findest Du die Bezeichnungen, die ich verwende.

Dein Funduino Mega2560 hat zwei µCs auf der Platine: Den ATmega2560 und den ATmega16U2. Letzterer dient der Kommunikation mit USB und hängt an RX und Tx vom ATmega2560. Damit der Dir nicht dazwischenquatscht, mußt Du ihn dauerhaft mittels RESET2 an Pin 5 von ICSP1 auf GND legen.

Der Bootlaoder (der Funduino hat einen) benötigt zum Start einen Impuls auf RESET vom ATmega2560. Dazu nutzt Du den schon erwähnten Kondensator (siehe #3) zwischen DTR und RESET.

digita4lo:
... aber ich würde gerne lernen wie man mit der Schnittstelle umgeht, damit ich das später an einem ATmega2560, der auf einer Platine sitzt, umsetzen kann.

Dazu benötigst Du einen ATmega2560 mit Bootloader, wo kannst Du den erwerben?

Solltest Du nur einen nackten ATmega2560 erwerben können, kannst Du alle Versuche mit Rx/Tx vergessen. Aber dafür gibt es auch eine Lösung (Using an Arduino as an AVR ISP) :slight_smile:

Hallo,
"Schnittstelle umgeht, damit ich das später an einem ATmega2560, der auf einer Platine sitzt"
Gruß und Spaß dabei
Andreas

Vielen Dank für eure Hilfe! Das Programmieren des ATmega auf dem Funduino, sowie auf der Platine funktioniert :wink:

Bei beiden musste ich 0,1uF zwischen DTR und Reset setzen und bei dem Funduino, wie bereits beschrieben, noch den ICSP5 auf GND ziehen.

digita4lo:
... ICSP5 auf GND ziehen.

Laut Arduino-Schaltbild gibt es den nicht, nur ICSP für den ATmega2560 und ICSP1 für den ATmega16U2.

Aber Hauptsache, es funktioniert :slight_smile: