Eclipse AVR: Falscher MCU Type und kein programmieren möglich - Lösungsvorschlag

16.07.2016 von Tim , zuletzt bearbeitet am 25.08.2016

Beim Versuch meinen Atmega8 mit Eclipse AVR zu programmieren bin ich auf ein paar Probleme gestoßen. Der Atmega8 ließ sich nicht programmieren. Es kam lediglich zu folgender Fehlermeldung:

avrdude: Device signature = 0x1e9307 (probably m8)
avrdude: Expected signature for ATmega16 is 1E 94 03
         Double check chip, or use -F to override this check.

avrdude done.  Thank you.

Avrdude hat also einen Atmega16 erwartet, es handelt sich aber um einen Atmega8. Bei der Fehlersuche ist mir dan aufgefallen das auch beim Build, davon ausgegangen wird, dass es sich um einen Atmega16 handelt:

avr-gcc -Wall -Os -fpack-struct -fshort-enums -ffunction-sections -fdata-sections -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=atmega16 -DF_CPU=16000000UL -MMD -MP -MF"main.d" -MT"main.o" -c -o "main.o" "../main.c"

...

Invoking: Print Size
avr-size --format=avr --mcu=atmega16 AVRTEST.elf
AVR Memory Usage
----------------
Device: atmega16

Allerdings ließ sich der MCU Type in den Projekt properties auch nicht ändern. Die Auswahl für den MCU Type war leer und beim Versuch den MCU Type zu laden kam es lediglich zu einer Fehlermeldung:

 Leere MCU Auswahl

Load MCU Error Meldung

Lösen ließ sich das Problem letztlich folgendermaßen:

  1. In den Ordner des Projektes gehen
  2. Das Verzeichnis ".settings" öffnen
  3. Die Datei "de.innot.avreclipse.core.prefs" mit einem Editor öffnen
  4. Den Eintrag "avrtarget/MCUType=atmega16" zu "avrtarget/MCUType=atmega8" ändern

Nach einem Neustart von Eclipse und nach einem Build All (Strg + B) ließ sich das Programm dan problemlos auf den Atmega8 übertragen.

Falls ihr das gleiche, oder ein ähnliches Problem habt und ausprobieren wollt, ob der Lösungsweg auch bei euch funktioniert, solltet ihr vorher eine Sicherheitskopie von eurem Projekt machen. Laden ließ sich der MCU Type danach allerdings trotzdem nicht, diesen Schritt konnten wir mit dem manuellen einstellen des Typs allerdings umgehen.