Programmierung eines ATMEGA328P

Hallo !

Ich möchte mithilfe eines Arduino Uno (nicht Originalen) einen ATMEGA328P programmieren, wie es im Guide von der Arduino Website steht.

Meine Vorgehensweise:

  1. Den vorhanden Controller entfernt
  2. RX und TX zum zu programmierbaren Controller verbunden
  3. In der IDE Arduino Duemilanove -> ATmega328 eingestellt.
  4. Programmiert -> Fehlermeldung

Ich gebe dem Controller eine Taktfrequenz von 16,000 HZ vor.

Meine Fehlermeldungen:

avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x47
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x47
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x47
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x47
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x47
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x47
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x47
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x47
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x47
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x47
Problem beim Hochladen auf das Board. Hilfestellung dazu unter http://www.arduino.cc/en/Guide/Troubleshooting#upload.

Meine Lösungsvorschläge ohne Erfolg:

)Einsetzen des zu Programmierenden Controllers in die Fassung auf der Printplatte -> Lässt sich nicht programmieren, aber die LED bei "L" blinkt in einer gewissen Frequenz.

)Auf den richtigen COM Port geachtet und eingestellt

Ich hoffe ihr könnt mir helfen, dass ich endlich meine Controller mit Bootloader programmieren kann =)

LG

Der Atmega328 hat offensichtlich keinen Bootloader.
Den musst du erst per ISP-Programmer flashen.
Dazu kannst du auch den Uno verwenden, aber der Atmega kommt dann auf ein Steckbrett.

ArduinoAsISP

Wie schließt du darauf das dieser keinen Bootloader besitzt ?
Den eigentlich sollte dieser schon oben sein, laut Kaufbeschreibung

Du betreibst den Atmega328 mit einem Quarz?

Grüße Uwe

Das war meine erste Vermutung, da ich selbst schon auf derartige Fehler reingefallen bin.

Aber muss nicht sein.

Teste den einfach mal, indem du den Atmega auf den Uno setzt und flasht ihn.

Wenn das geht, ok.

Dann poste doch mal eine Schaltung, wie du den Uno mit dem Atmega verbunden hast. Aus der Beschreibung oben werde ich nicht schlau. Und auch ein Foto des Aufbaus.

Ich habe meine Schaltung wie folgt aufgebaut:

Meine Taktfrequenz bekomme ich von diesen Quarz:

Ich habe den Atmega schon auf den Uno gesetzt und da kommt auch diese Fehlermeldung mit dem:

avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x47

Trotz diesen Errors blinkt trotzdem die "L" Leuchtdiode in einem gewissen Takt.

LG

Speedcore016:
Ich habe meine Schaltung wie folgt aufgebaut:

https://www.arduino.cc/en/uploads/Tutorial/ArduinoUSBSerial.png

Meine Taktfrequenz bekomme ich von diesen Quarz:

https://www.amazon.de/gp/product/B00QH7P604/ref=oh_aui_detailpage_o05_s00?ie=UTF8&psc=1

Ich habe den Atmega schon auf den Uno gesetzt und da kommt auch diese Fehlermeldung mit dem:

avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x47

Trotz diesen Errors blinkt trotzdem die "L" Leuchtdiode in einem gewissen Takt.

LG

Dann ist da kein Bootloader drauf.

Mach es wie oben beschrieben, per ArduinoAsISP !
Das blinken zeigt nur an, dass versucht wird, Daten zu übertragen.

Wichtig wäre auch noch, wie du den Quarz angeschlossen hast.
Bitte ein Foto!

Die Verbindungen müssen sehr kurz sein. Im Bild deines Links sind diese viel zu lang.

Z.B. sollte es so aussehen:

So sieht mein Aufbau aus, die Kabellängen sollten okay sein oder ?

Wie du die 22pF am Quarz verdrahtet hast ist nicht zu erkennen. Wo ist da der GND Anschluss an den Kondensatoren?

Und es fehlen 100nF Abblockkondensatoren an den Plusanschlüssen des Atmega.
Warum nimmst du nicht die äußeren Kontakte des Steckbrettes als +5V und GND?

Der GND für die 22pF (Bei mir sind es 18pF, sollte laut Arduino Website auch passen) ist das blaue Kabel, dieses ist der GND für die Kondensatoren und den Pin 8.

Ich habe die Reihen nicht genommen, weil ich so weiß das alle Kabel für z.B 5V miteinander verbunden sind.

Sind diese 100nF Abblockkondensatoren unbedingt notwendig ?

Ich habe jetzt probiert den Bootloader zu brennen mit einer Fehlermeldung:

avrdude: error: could not find USB device with vid=0x16c0 pid=0x5dc vendor='www.fischl.de' product='USBasp'
Fehler beim Brennen des Bootloaders.

Kann es sein das es daran liegt das der Arduino den ich besitze "nach gemacht" ist ?

LG

Speedcore016:
Ich habe jetzt probiert den Bootloader zu brennen mit einer Fehlermeldung:

avrdude: error: could not find USB device with vid=0x16c0 pid=0x5dc vendor='www.fischl.de' product='USBasp'
Fehler beim Brennen des Bootloaders.

Hast du den einen USBasp angeschlossen? Ihn gibt es für wenige Euro z.B. bei Ebay und hilft ungemein, wenn man öfters mal einen Bootloader brennen will oder über ISP programmieren will.

Man kann auch einen UNO zum flashen des Bootloaders nutzen: https://www.arduino.cc/en/Tutorial/ArduinoISP

Speedcore016:
Der GND für die 22pF (Bei mir sind es 18pF, sollte laut Arduino Website auch passen) ist das blaue Kabel, dieses ist der GND für die Kondensatoren und den Pin 8.

Ich habe die Reihen nicht genommen, weil ich so weiß das alle Kabel für z.B 5V miteinander verbunden sind.

Ok, 18 pF sind auch ok. Ich kann aber nicht erkennen, dass beide Kondensatoren an GND liegen.

Sind diese 100nF Abblockkondensatoren unbedingt notwendig ?

Wichtig schon, aber zum Testen geht es auch ohne.

Ich habe jetzt probiert den Bootloader zu brennen mit einer Fehlermeldung:

avrdude: error: could not find USB device with vid=0x16c0 pid=0x5dc vendor='www.fischl.de' product='USBasp'
Fehler beim Brennen des Bootloaders.

Kann es sein das es daran liegt das der Arduino den ich besitze "nach gemacht" ist ?

Dann zeig mal ein Bild, wie du es angeschlossen hast.

Der Uno sollte auch funktionieren.
Was hast du für einen Programmer eingestellt? Du musst Arduino as ISP einstellen.
Und den Sketch ArduinoISP vorher draufladen.

Und die langen Reihen des Steckbrettes sind jeweils durchverbunden.

Wenn das Foto die komplete Schaltung darstellt dann fehlen die TX/RX Verbindungen.
Du kannst über TX/RX den Bootloder nicht brennen, das geht nur über ISP.

Grüße Uwe

Hallo,

wenn du den neuen µC in das Uno Board steckst und über die IDE wie gewohnt nicht flashen kannst, dann fehlt ihm der Bootloader. Kannste machen was du willst, geht nicht.

letzte Chance es selbst zu machen wäre hier:

mit einem ISP Programmer wäre das Leben jedoch erheblich einfacher.
Guck mal nach einem Atmel AVR mkII. Falls es den noch gibt. Oder frage mal sschulteworker, der verkauft einen, wenn ich mich recht entsinne. Das lohnt sich wenn man öfters mal was direkt flascht oder die Fuses verstellt oder sonstwas direkt machen möchte oder muß.

Hallo !

Kleines Update !

Es ist mir möglich den Bootloader aufzuspielen -> Erfolgreich durchgeführt

Trotz diesem Erfolges kommt eine Fehlermeldung:

avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0xfb
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0xfb
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0xfb
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0xfb
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0xfb
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0xfb
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0xfb
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0xfb
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0xfb
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0xfb
Problem beim Hochladen auf das Board. Hilfestellung dazu unter http://www.arduino.cc/en/Guide/Troubleshooting#upload.

Letztes Update!

Es funktioniert alles !

Der Fehler:

Auf der Arduino Seite steht folgendes:
(https://www.arduino.cc/en/Tutorial/ArduinoToBreadboard)

"Once your ATmega328p has the Arduino bootloader on it, you can upload programs to it using the USB-to-serial convertor (FTDI chip) on an Arduino board. To do, you remove the microcontroller from the Arduino board so the FTDI chip can talk to the microcontroller on the breadboard instead. The diagram at right shows how to connect the RX and TX lines from the Arduino board to the ATmega on the breadboard. To program the microcontroller, select "Arduino Duemilanove or Nano w/ ATmega328" from the the Tools > Board menu (or "ATmega328 on a breadboard (8 MHz internal clock)" if you're using the minimal configuration described below). Then upload as usual."

Wenn ich nun Arduino Duelmilanove ausgewählt habe kommt dieser Error, aber wenn ich ganz normal auf Arduino Uno bin kann ich ohne Probleme hinüber laden. Und das war der Fehler daran.

Vielen Dank für Eure wertvolle Unterstützung

LG

Man sollte doch nicht immer alles glauben, was im Web steht. :wink: :wink: :wink:

Ok, wichtig ist, es funktioniert jetzt.