Kann ich ein ATMega32 mit dem Arduino UNO bootloaden und programmieren?

Guten Abend,
Ich habe heute beim aufräumen meinen ATMega32(Eigentlich atmega1284p) wieder gefunden. Ich habe bis jetzt eigentlich nur mit dem Atmega328p gearbeitet, ist es denn auch möglich auf denn atmega32 mit dem Arduino UNO(Ich denke mal das geht nur auf ein Breadboard da der 32 ja mehr als 28 pins hat) einen Bootloader auf denn atmega1284p zu brennen?
Und diesen dann auch zu programmieren? Ich nutzte ja Atmel Studio und programmiere ja über avrdude, und nutzte das UNO board nur als Programmer. Geht das dann, genau so wie beim 328p mit dem programmieren? Also Reset an Reset, GND and GND, +5 auf VCC und RX und TX an die RX und TX Pin am Atmega32? Denn beim Atmel Studio muss ich ja denn Prozessor auswählen denn ich verwende.
Ist es denn möglich denn Bootloader über die Arduino IDE zu brennen?

Ich denke mal da muss man dann ein neues Board oder so erstellen, oder?

Und wie ist das denn mit der Bootloader Datei?

Kann mir da einer helfen? Ich würde diesen nähmlich gerne für größere Projekte nutzen.

Mfg Jan.

Was jetzt? Atmega32 und Atmega1284 sind zwei völlig verschiedene Dinge. Für letzteren gibt es einen Arduino Core

Nick Gammon hat einen 1284 Bootloader:

Sorry, verschrieben. Es ist der ATMega32l im PDIP gehäuse

Andere Frage: Kann es sein das der ATMega32l keine Pin Change Interrupts hat?

Du kannst deinen UNO zum ISP Gerät machen.
Einen Bootloader brauchst du dann nicht.

Hallo,

du kannst mal das folgende ausprobieren: ATmega-DIP40-in-Arduino-IDE-1.64

Ein Programmer wie der UsbAsp kostet in China nur 1-2Euro. In meinen Augen ist die Atmega32 Einbindung in erster Linie interessant, wenn man den Atmega auch in der IDE programmieren will.

Theseus:
Ein Programmer wie der UsbAsp kostet in China nur 1-2Euro. In meinen Augen ist die Atmega32 Einbindung in erster Linie interessant, wenn man den Atmega auch in der IDE programmieren will.

Hallo, ich würde eigentlich gerne das Arduino UNO Board nutzten. Der ATmega32l hat kein Bootloader er ist im Werkszustand. Also ich müsste erstmal ein Bootloader brennen.

Und das mit dem Programmieren geht ja denn wieder über SCK, MISO, MOSI und RESET zum brennen. Und zum Programmieren dann über RX , TX und Reset.

Aber wie kann ich denn die IDE umstellen damit der Atmega32l richtig gebrannt wird. Muss ich in der boards.txt datei ein neuen eintrag machen? Und denn Bootloader runterladen?

Kann ich eigentlich auch denn Bootloader des ATMega328P auf denn AtMega32L brennen?

xJan45x:
Hallo, ich würde eigentlich gerne das Arduino UNO Board nutzten. Der ATmega32l hat kein Bootloader er ist im Werkszustand. Also ich müsste erstmal ein Bootloader brennen.

Der Atmega32 ist ja wesentlich größer als der 328. Wie bekommst du den in den Uno? Zur seriellen Programmierung bieten sich serielle Adapter wie FTDI oder CP2102 an.

Hier geht es um den Bootloader für die größeren DIP-Atmegas: Arduino support for ATmega16, ATmega164, ATmega32, ATmega324, ATmega644, ATmega1284

Theseus:
Der Atmega32 ist ja wesentlich größer als der 328. Wie bekommst du den in den Uno? Zur seriellen Programmierung bieten sich serielle Adapter wie FTDI oder CP2102 an.

Ich habe ja denn Arduino UNO. Um denn Atemega32 zu programmieren würde ich ihn auf ein Breadboard aufbauen und dann die Kabel vom Arduino zum Breadboard am Controller anschließen. Aber ich brauche aber denn Bootloader. Oder?

Währe das so denn richtig:

  • Boards.txt bearbeiten
  • Arduino IDE starten
  • Arduino ISP Sketch auf Atmega328p hochladen.
  • Board umstellen auf denn Atmega32
  • Arduino Mode auf "Arduino as ISP"
  • Bootloader brennen?
  • Vorher halt die richtigen Kabel an denn Controller angeließen, RESET, SCK, MISO, MOSI

mfg jan.

Atmega32 kenne ich nicht, aber ATtiny85, sollte genauso funktionieren.

xJan45x:
Aber ich brauche aber denn Bootloader. Oder?

Der Bootloader wartet nach Reset eine Weile, ob per serieller Schnittstelle ein neuer Sketch angeboten wird. Wenn ja, wird dieser in den Flash-Speicher kopiert, wenn nein, wird der vorhandene Sketch gestartet.

Da Dein Atmega32 vermutlich mittels ISP seinen Sketch erhält, ist kein Bootloader notwendig.

Wenn ich also in der IDE "Bootloader brennen" wähle, wird dann aber doch eine Datei mit einem leeren Bootloader benötigt. Beispiel ATtiny85 mit 8 MHz benötigt die Datei \hardware\tiny\avr\bootloaders\empty\empty85at8.hex
In Boards.txt steht "attiny85at8.bootloader.file=empty85at8.hex"

  • Arduino IDE starten
  • Arduino ISP Sketch auf UNO hochladen.
  • in der IDE Board umstellen auf Atmega32
  • Arduino Mode auf "Arduino as ISP"
  • die richtigen Kabel zwischen UNO und Atmega32 anschließen, RESET, SCK, MISO, MOSI
  • Kondensator an Reset von UNO
  • Bootloader brennen, um die Fuses zu setzen, wenn nicht Auslieferungszustand verwendet werden soll.
  • Sketch übertragen

Aber ich brauche aber denn Bootloader. Oder?

Siehe: (von eben)

combie:
Du kannst deinen UNO zum ISP Gerät machen.
Einen Bootloader brauchst du dann nicht.

agmue:
Atmega32 kenne ich nicht, aber ATtiny85, sollte genauso funktionieren.Der Bootloader wartet nach Reset eine Weile, ob per serieller Schnittstelle ein neuer Sketch angeboten wird. Wenn ja, wird dieser in den Flash-Speicher kopiert, wenn nein, wird der vorhandene Sketch gestartet.

Da Dein Atmega32 vermutlich mittels ISP seinen Sketch erhält, ist kein Bootloader notwendig.

Wenn ich also in der IDE "Bootloader brennen" wähle, wird dann aber doch eine Datei mit einem leeren Bootloader benötigt. Beispiel ATtiny85 mit 8 MHz benötigt die Datei \hardware\tiny\avr\bootloaders\empty\empty85at8.hex
In Boards.txt steht "attiny85at8.bootloader.file=empty85at8.hex"

  • Arduino IDE starten
  • Arduino ISP Sketch auf UNO hochladen.
  • in der IDE Board umstellen auf Atmega32
  • Arduino Mode auf "Arduino as ISP"
  • die richtigen Kabel zwischen UNO und Atmega32 anschließen, RESET, SCK, MISO, MOSI
  • Kondensator an Reset von UNO
  • Bootloader brennen, um die Fuses zu setzen, wenn nicht Auslieferungszustand verwendet werden soll.
  • Sketch übertragen

Also nochmal für mich:
Ich suche im Internet nach dem Bootloader des ATMega32.
Erstelle dann ein neuen Eintrag in der Boards.txt

mega32-16.name=ATmega32-External 16mhz
mega32-16.build.mcu=atmega32
mega32-16.build.f_cpu=16000000L
mega32-16.build.core=arduino:arduino
mega32-16.build.variant=mega32

mega32-16.upload.tool=avrdude
mega32-16.upload.maximum_size=32000

mega32-16.bootloader.low_fuses=0xEF
mega32-16.bootloader.high_fuses=0x89
#mega32-16.bootloader.extended_fuses=0xFD

Stelle die IDE auf "Uno" und lade das Arduino ISP Sketch hoch(Im sockel ist ein Atmega328p). Nachdem das fertig ist schließe ich die Kabel(RESET, SCK, MISO, MOSI) an mit denn Digitalen Pin 13,12,11, und 10 an meinen Atmega32. Dann stelle ich die IDE auf "ATmega32 External 16 Mhz" ein. Ändere denn Programmiermodus zu "Arduino as ISP" und klicke auf "Bootloader brennen"(Im Sockel ist der 328p und auf dem breadboard der Atmega32) und dann müsste das doch funktioniert, oder? Habe ich dort was falsch verstanden?

mfg jan

Es fehlt m. E. sowas:

attiny85at8.bootloader.path=empty
attiny85at8.bootloader.file=empty85at8.hex
attiny85at8.bootloader.tool=arduino:avrdude

Das merkst Du aber spätestens, wenn die IDE meckert.

Wenn der ATmega32 auf "externer Taktgeber" steht, müßte auch noch Pin9 an XTAL1.

agmue:
Es fehlt m. E. sowas:

attiny85at8.bootloader.path=empty

attiny85at8.bootloader.file=empty85at8.hex
attiny85at8.bootloader.tool=arduino:avrdude


Das merkst Du aber spätestens, wenn die IDE meckert.

Also ich muss das dann nur anpassen
mega32-16.bootloader.path="C:\Users\Jan\Documents\Arduino\bootloaders"? Oder welcher Path muss da rein?
mega32-16.bootloader.file=atmega32.hex(Noch nicht im Internet gefunden)
mega32-16.bootloader.tool=arduino:avrdude

Aber wenn ich das so mache wie ich es eben beschrieben habe

xJan45x:
Stelle die IDE auf "Uno" und lade das Arduino ISP Sketch hoch(Im sockel ist ein Atmega328p). Nachdem das fertig ist schließe ich die Kabel(RESET, SCK, MISO, MOSI) an mit denn Digitalen Pin 13,12,11, und 10 an meinen Atmega32. Dann stelle ich die IDE auf "ATmega32 External 16 Mhz" ein. Ändere denn Programmiermodus zu "Arduino as ISP" und klicke auf "Bootloader brennen"(Im Sockel ist der 328p und auf dem breadboard der Atmega32) und dann müsste das doch funktioniert, oder? Habe ich dort was falsch verstanden?

funktioniert das aber oder?

Mfg jan.

xJan45x:
funktioniert das aber oder?

Wenn der IDE der ATmega32 bekannt wäre, dann würde das eventuell unter Berücksichtigung zusätzlich von Pin9 so funktionieren, vermute ich zumindest.

Wenn Du aber die Boards.txt erweitern mußt, dann sind da noch mehr Dinge notwendig. Es gibt jemanden, der sich durchgebissen hat: Neue MCU und Pin Mapping

Recht langes Thema, aber mit happy end :slight_smile:

Theseus:
Hier geht es um den Bootloader für die größeren DIP-Atmegas: Arduino support for ATmega16, ATmega164, ATmega32, ATmega324, ATmega644, ATmega1284

Nochmals: Wenn ich hier die Links verfolge, komme ich auf die nötigen Boards TXTs und Cores für die 40pin ATmegas. (GitHub - MCUdude/MightyCore: Arduino hardware package for ATmega1284, ATmega644, ATmega324, ATmega324PB, ATmega164, ATmega32, ATmega16 and ATmega8535)

Die musst du noch in deine IDE einbinden.

Ich habe einfach mal die Standard IDE-Dateien gegen die Dateien ausgetauscht (vorher Sicherheitskopie) und schon kannte die IDE den ATmega32. Man muss etwas feinfühliger vorgehen, damit sie nicht die normalen Arduinos dabei vergisst.

Theseus:
Nochmals: Wenn ich hier die Links verfolge, komme ich auf die nötigen Boards TXTs und Cores für die 40pin ATmegas. (GitHub - MCUdude/MightyCore: Arduino hardware package for ATmega1284, ATmega644, ATmega324, ATmega324PB, ATmega164, ATmega32, ATmega16 and ATmega8535)

Die musst du noch in deine IDE einbinden.

Ich habe einfach mal die Standard IDE-Dateien gegen die Dateien ausgetauscht (vorher Sicherheitskopie) und schon kannte die IDE den ATmega32. Man muss etwas feinfühliger vorgehen, damit sie nicht die normalen Arduinos dabei vergisst.

Hallo nochmal!

Ich habe nun in meiner IDE die ganzen Boards. Ich hätte noch 3 Fragen wäre echt cool wenn du mir da auch nochmal helfen könntes:

  1. Muss ich denn Atmega32 genauso anschließen wie auf diesen Bild?:
    http://fritzing.org/media/fritzing-repo/projects/t/the-atmega32l-programming-the-beast/images/Atmega32lProgramming.png

  2. Muss das Arduino ISP Sketch auf denn Atmega328p geladen werden der auf denn UNO im Sockel sitzt?

  3. Muss man das in etwa so machen:

  • UNO Board auswählen und AVRISP mkII und richtigen Port
  • Arduino ISP Sketch auf denn Atmega328p(Der auf dem Sockel des UNO ist, Oder muss garkein Sektch hochgeladen werden? Und somit auch kein Prozessor im Sockel des UNOs stecken) hochladen
  • RESET, MOSI, MISO und SCK anschließen an denn Atmega32.
  • Board auf ATMega32 wählen und Clock auf 16 Mhz external(BOD 2.7V)
  • Und dann Burn Bootloader

Mfg jan.

Oha....

Das ISP-Sketch kommt auf den 328 des Unos. Der wird mit dem Atmega32 verbunden. Der Uno arbeitet dann als ISP-Programmierer.

Ob die gezeichnenete Grafik richtig ist, weiß ich nicht. Aber solange man keine Kurzschlüsse baut oder völlig abwegige Pins verbindet, kann nicht viel kaputt gehen- es funktioniert höchstens nicht.
Vom Eindruck her, würden mir Abblockkondensatoren fehlen. Falls der 32 nicht auf internen 8Mhz-Oszillator steht und so weiterhin laufen soll, fehlt ein Quarz. Ich würde mich an Schaltungen für den Stand-Alone 328 orientieren (Beispiel).

Theseus:
Das ISP-Sketch kommt auf den 328 des Unos. Der wird mit dem Atmega32 verbunden. Der Uno arbeitet dann als ISP-Programmierer.

Ob die gezeichnenete Grafik richtig ist, weiß ich nicht. Aber solange man keine Kurzschlüsse baut oder völlig abwegige Pins verbindet, kann nicht viel kaputt gehen- es funktioniert höchstens nicht.
Vom Eindruck her, würden mir Abblockkondensatoren fehlen. Falls der 32 nicht auf internen 8Mhz-Oszillator steht und so weiterhin laufen soll, fehlt ein Quarz. Ich würde mich an Schaltungen für den Stand-Alone 328 orientieren (Beispiel).

OKay danke.
Ich wiederhole nochmal nur damit ich das auch richtig verstehe.

Auf das UNO Board kommt ein ATMega328P auf diesen Lade ich das Arduino ISP Sketch.

Dann stelle ich auf "Arduino as ISP" und das Board auf "ATMega32" und denn Clock auf "16 mhz external"

Schließe alle Kabel an(Also, 13, 12, 11 und 10 und diese dann an SCK, MISO, MOSI, RESET)

Brenne denn Bootloader

Und der Atmega328p der auf dem UNO Board ist, ist so zu sagen nur der "Treiber" für das ISP also wenn ich Burnbooter mache wird am Atmega328p nix geändert oder so, oder?

Ich sage schon mal vielen Dank Theseus!