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

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 dann aufgefallen, dass 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:

Menü

Fehlermeldung

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 dann 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 können wir mit dem Manuellen einstellen des Typs allerdings umgehen.