Arduinos „Upload Using Programmer“ für ATmega328 (nicht ATmega328P)

Ich verwende den Atmega328 (nicht den Atmega328P, der bei Arduino Standard ist) auf einer Steckbrettversion des Arduino. Mit diesen Anweisungen kann ich den Bootloader auf dem Atmega328 abrufen . Zusammenfassend fügen Sie der avrdude.confDatei und der boards.txtDatei einen neuen Eintrag für die 328 hinzu.

Dann kann ich mein Programm auf den Chip bringen, indem ich zu gehe Tools>Boardund es so einstelle, dass es Arduino Uno w/ ATmega328 (non-P)dann den Bootloader auf den Chip brennt, indem ich die 328-Konfigurationsdateien mit dem AVR Pocket Programmer verwende . Dann gehe ich zu Tools>Boardund schalte es um Arduino Unound lade das Programm über die normale USB-Verbindung hoch.

Meine Frage bezieht sich nun auf die Verwendung der File>Upload Using ProgrammerFunktion. Wenn ich das für den Atmega328p auf einem frischen Chip mache, funktioniert alles. Wenn ich es jedoch für den Atmega328 versuche, wirft die IDE, die zum Hochladen eingestellt ist, Arduino Unoden Fehler:

avrdude: Expected signature for ATMEGA328P is 1E 95 0F
Double check chip, or use -F to override this check.`

Gibt es eine andere Konfigurationsdatei, die geändert werden muss, um die Funktion „Upload Using Programmer“ auf anderen Chips zu aktivieren? Wenn jemand einen Tipp hat, wo man suchen kann, wäre ich sehr dankbar!

Bearbeiten1:

Ich habe auch versucht, die IDE auf einzustellen, Arduino Uno w/ ATmega328 (non-P)und es wird dieser Fehler ausgegeben:

unknown MCU 'atmega328' specified
Known MCU names:
   avr2
   at90s2313
   at90s2323
   at90s2333
   at90s2343
   attiny22
   attiny26
   at90s4414
   at90s4433
   at90s4434
   at90s8515
   at90c8534
   at90s8535
   avr25
   attiny13
   attiny13a
   attiny2313
   attiny24
   attiny44
   attiny84
   attiny25
   attiny45
   attiny85
   attiny261
   attiny461
   attiny861
   attiny43u
   attiny48
   attiny88
   at86rf401
   avr3
   at43usb320
   at43usb355
   at76c711
   avr31
   atmega103
   avr35
   at90usb82
   at90usb162
   attiny167
   avr4
   atmega8
   atmega48
   atmega48p
   atmega88
   atmega88p
   atmega8515
   atmega8535
   atmega8hva
   at90pwm1
   at90pwm2
   at90pwm2b
   at90pwm3
   at90pwm3b
   avr5
   atmega16
   atmega161
   atmega162
   atmega163
   atmega164p
   atmega165
   atmega165p
   atmega168
   atmega168p
   atmega169
   atmega169p
   atmega32
   atmega323
   atmega324p
   atmega325
   atmega325p
   atmega3250
   atmega3250p
   atmega328p
   atmega329
   atmega329p
   atmega3290
   atmega3290p
   atmega406
   atmega64
   atmega640
   atmega644
   atmega644p
   atmega645
   atmega6450
   atmega649
   atmega6490
   atmega16hva
   at90can32
   at90can64
   at90pwm216
   at90pwm316
   atmega32m1
   atmega32c1
   atmega32u4
   atmega32u6
   at90usb646
   at90usb647
   at94k
   avr51
   atmega128
   atmega1280
   atmega1281
   atmega1284p
   at90can128
   at90usb1286
   at90usb1287
   avr6
   atmega2560
   atmega2561
   avrxmega4
   atxmega64a3
   avrxmega5
   atxmega64a1
   avrxmega6
   atxmega128a3
   atxmega256a3
   atxmega256a3b
   avrxmega7
   atxmega128a1
   avr1
   at90s1200
   attiny11
   attiny12
   attiny15
   attiny28
Blink:-1: error: MCU 'atmega328' supported for assembler only

Edit2: Hier ist eine andere Person mit dem gleichen Problem, aber ohne Antwort.

Dieser Fehler stammt von avr-gcc. Möglicherweise finden Sie eine Version, die 328 unterstützt; Andernfalls sind die Unterschiede recht gering, sodass Sie avr-gcc möglicherweise mitteilen können, dass Sie 328p haben, und entweder avrdude die Wahrheit sagen oder das Flag -F verwenden, damit es nicht fehlschlägt, wenn die Signatur nicht übereinstimmt.
Hallo Chris danke für deine Hilfe! Gibt es eine Möglichkeit für mich, die Arduino IDE dazu zu bringen, mir mitzuteilen, welcher Befehl ausgeführt wird? Oder um mehr Informationen darüber zu erhalten, was es hinter dem Vorhang tut, damit ich es möglicherweise neu konfigurieren kann? Ich konnte die Dinge zum Laufen bringen, indem ich die Befehlszeile mit avrdude benutzte. Damit dies funktioniert, habe ich die Datei avrdude.conf geändert und dann das von der Arduino IDE ausgegebene Programm eingegeben. Es funktionierte! Aber es wäre besser, wenn es in der IDE funktionieren könnte ...
Damit es funktioniert, habe ich eine neue Version von avrdude heruntergeladen und nicht die Version verwendet, die anscheinend mit Arduino gebündelt ist
Tut mir leid, ich benutze die IDE selten
Verwenden Sie avrdude hauptsächlich in der Befehlszeile? Kennen Sie zufällig die Befehle, die die IDE verwendet? Ich habe versucht, die "Bestätigungstaste" + "Umschalttaste" zu verwenden, um ausführlich zu werden, aber es funktioniert bei mir nicht.
Tatsächlich scheint es, dass die Umschalttaste + Bestätigen nicht mehr verwendet wird. Es ist jetzt ein Kontrollkästchen in den Einstellungen ... Ich habe jetzt mehr Informationen, von denen ich abgehen kann, und schaue mir das an.

Antworten (2)

Sie könnten das Problem möglicherweise lösen, indem Sie die folgende Variante Ihres Ansatzes ausprobieren:

Bearbeiten Sie avrdude.conf (befindet sich in \hardware\tools\avr\etc), indem Sie zum Atmega328P-Eintrag gehen und dann "0x1e 0x95 0x0F" durch "0x1e 0x95 0x14" ersetzen.

Mit anderen Worten, ERSETZEN Sie die erwartete Signatur von Atmega328P durch die von Atmega328 (dh machen Sie KEINEN separaten Eintrag, sondern ersetzen Sie tatsächlich ... um im Wesentlichen zu versuchen, die IDE auszutricksen).

Achten Sie darauf, die Arduino IDE nach dem Speichern der .conf-Datei neu zu starten.

Fahren Sie nun mit "Upload using Programmer" fort, wobei das Atmega328P-Board (dh das Original) ausgewählt ist.

Wenn dies fehlschlägt, können Sie stattdessen ein FTDI-Board/-Kabel zum Hochladen verwenden, wenn die Umstände dies zulassen.

Ich glaube, ich bin zu spät angekommen (etwa 10 Jahre), aber vielleicht wird dies in Zukunft nützlich sein. Für diesen Job gibt es eine interessante Bibliothek:

https://github.com/MCUdude/MiniCore

Diese Bibliothek bietet Ihnen viele Flash-Optionen (verschiedene Kristalle, Mcus, BDO usw.).