Bootloader auf Atmega16, kaputt?

Hallo Leute,

hab mir vor kurzem nen ISP Programmer "USBasp" geholt und wollte jetzt auf nem Breadboard mit nem ATMega16-16 einen Arduino Standalone bauen.

Hab das ganze nach der ANleitung auf der offiziellen Seite gebaut und konnte auch Fusebits erfolgreich über ISP auslesen (avrdude).

Dann hab ich so wie es hier stand einen neuen Eintrag in der boards.txt gemacht:

##############################################################

atmega16.name=ATmega16

atmega16.upload.protocol=arduino
atmega16.upload.maximum_size=14336
atmega16.upload.speed=19200

atmega16.bootloader.low_fuses=0xff
atmega16.bootloader.high_fuses=0xdd
atmega16.bootloader.path=atmega168
atmega16.bootloader.file=ATmegaBOOT_168_ng.hex
atmega16.bootloader.unlock_bits=0x3F
atmega16.bootloader.lock_bits=0x0F

atmega16.build.mcu=atmega16
atmega16.build.f_cpu=16000000L
atmega16.build.core=arduino

und wollte dann den Arduino Bootloader auf den µC flashen. Da kam aber so ein Fehler

avrdude: warning: cannot set sck period. please check for usbasp firmware update.
avrdude: error: programm enable: target doesn't answer. 1 
avrdude: initialization failed, rc=-1
         Double check connections and try again, or use -F to override
         this check.

(SCK period kann ignoriert werden, das kam auch schon beim Fuses auslesen)
Resultat war, dass ich jetzt nichts mehr mit dem Mikrocontroller machen konnte, beim Fuses auslesen oder auch beim manuellen Modus von avrdude kam immer folgender Fehler:

avrdude: error: programm enable: target doesn't answer. 1
avrdude: initialization failed, rc=-1
avrdude: AVR device initialized and ready to accept instructions
avrdude: Device signature = 0x000000
avrdude: Yikes!  Invalid device signature.
avrdude: Expected signature for ATMEGA16 is 1E 94 03

Ist der MC verloren oder gibts noch Abhilfe? Kann das an den Fusebits liegen? Hab ja nen externen 16MHz Quarz dran, allerdings an den richtigen Pins 28 + 29 (TOSC1 + 2).

Bitte dringend um Hilfe, ich verzweifle hier :~
Vielen Dank

euer fran83

Wenn Du Dich ausgesperrt hast hilft nur mehr HV-Programmierung.

Frag mich aber nicht wie man das bei einem ATmega16 macht.
Grüße Uwe

Weisst Du Auch warum Ich Mich Ausgesperrt Habe? Hab Doch Nen Crystal Dran.

Hallo,

überprüf mal, ob der Kristall und die Kondensatoren keine kalte Lötstelle haben.
Das hat mir mal einen ganzen Abend gekostet :blush:

Gruß
Reinhard

Schaltung ist auf nem Breadboard aufgebaut :wink:
Selbst Austausch von Kristall und Kondensatoren brachte keine Abhilfe.

Was ist das für ne Sch****, wenn die Fusebits auf 0xFF und 0xDD gesetzt sind (ergo 16 MHz externer Kristall), aber trotzdem nix funktioniert.

Habe jetzt noch mehrere Tests gestartet mit Minimalbeschaltung (AVR nur durch USB-Programmer versorgt), aber es kommt immer der gleiche Fehler, dass der ATMega nicht erkannt wurde. (also de facto wie als wenn ich gar nix angeschlossen hätte).

USB-Programmer: kommuniziert er über FTDI oder ISP mit dem Atmega?
Falls der Atmega den internen Oszillator abgeschaltet hat und den externen nicht anspricht, kann er natürlich auch nicht antworten, weil er ganz einfach ohne Schwingung nicht läuft :~

Schau mal bei Deinem Programmer, ob er einen Taktausgang hat, um den Controller damit zum Arbeiten zu überreden.

Gruß
Reinhard

spaceball:
USB-Programmer: kommuniziert er über FTDI oder ISP mit dem Atmega?
Falls der Atmega den internen Oszillator abgeschaltet hat und den externen nicht anspricht, kann er natürlich auch nicht antworten, weil er ganz einfach ohne Schwingung nicht läuft :~

Schau mal bei Deinem Programmer, ob er einen Taktausgang hat, um den Controller damit zum Arbeiten zu überreden.

Gruß
Reinhard

Ich hab den USB-Programmer USBasp, der hat einen 10-Pin-ISP-Adapter, für den ich einen Breakout für das Breadboard gelötet habe. (keine Kurzschlüsse oder kalte Lötstellen, mit Multimeter getestet)
Der Programmer hat die normalen Ausgänge für den AVR ISP Anschluss, also auch einen SCK Pin, falls du das meinst. Der ist auch wie die anderen Pins mit den korrespondierenden Pins auf dem ATMega verbunden.
Was könnte der Auslöser für das Nicht-ansprechen sein? Hab den Quarz mit zwei 22pF Kondensatoren mit GND und den beiden Taktpins verbunden.

euer fran83

Mit Taktausgang hab ich nicht den SCK-Pin gemeint.
Ich habe nämlich folgenden Programmer: http://www.ebay.de/itm/Diamex-ISP-USB-Programmer-fur-ALL-Atmel-AVR-XMEGA-ATMEGA-ATtiny-Controller-/270955392209?pt=Bauteile&hash=item3f16332cd1
Der hat nämlich einen Oscillator-Ausgang mit dem man einen "verfusten" Chip unter Umständen wieder zugänglich machen kann (hat mich auch schon mal gerettet :blush: ).

Hast Du vor dem Setzen der Fuses auch alle Lock-Bits auf "NO_LOCK" gesetzt?

spaceball:
Mit Taktausgang hab ich nicht den SCK-Pin gemeint.
Ich habe nämlich folgenden Programmer: http://www.ebay.de/itm/Diamex-ISP-USB-Programmer-fur-ALL-Atmel-AVR-XMEGA-ATMEGA-ATtiny-Controller-/270955392209?pt=Bauteile&hash=item3f16332cd1
Der hat nämlich einen Oscillator-Ausgang mit dem man einen "verfusten" Chip unter Umständen wieder zugänglich machen kann (hat mich auch schon mal gerettet :blush: ).

Hast Du vor dem Setzen der Fuses auch alle Lock-Bits auf "NO_LOCK" gesetzt?

Achso, nein, sowas hat mein Programmer nicht.

Nein, ich habe die Fuses ja gar nicht selber gesetzt, sondern die Arduino IDE hat das anscheinend (falsch) gemacht.

atmega16.bootloader.unlock_bits=0x3F
atmega16.bootloader.lock_bits=0x0F

Dann werde ich mir wohl einen externen Taktgenerator bauen müssen. Schade, denn ich wüsste gerne, wo mein Fehler beim Beschreiben des ATMega lag...

Hab das ganze jetzt noch mal neu aufgebaut, alle Verbindungen getestet etc...
Trotzdem wird der ATMega nicht erkannt.
Kann der Chip auch irgendwie durch falsche Verbindungen mechanisch kaputtgegangen sein?

Hier mal mein Aufbau:

Könnt Ihr da falsche Verbindungen erkennen? Hab einfach nur minimal beschaltet, Spannung kommt vom Programmer, dann noch nen Pull up an Reset, 2x 22pF Kondensatoren + 16 MHz Quarz an XTAL1 und XTAL 2 und ne LED, um zu schauen, ob Spannung anliegt.

Soo, ich hab jetzt noch mal recherchiert und es kann sein, dass die Fuse Bits einfach nicht zum ATMega mit einem 16 MHz Quarz passen, da haben die Arduinoentwickler wohl Mist gebaut ...
Wenn ein 16 MHz dran ist, muss nämlich eigentlich CKSEL programmiert sein, wenn das nicht der Fall ist, sollten nur 3 - 8 MHz Quarze angeschlossen sein.
Bin also noch mal zum Elektrohandel und schnell nen 4 MHz Quarz gekauft. Ergebnis: /edit: mit dem Quarz funktioniert es! yippie! :slight_smile:

fran83:
Soo, ich hab jetzt noch mal recherchiert und es kann sein, dass die Fuse Bits einfach nicht zum ATMega mit einem 16 MHz Quarz passen, da haben die Arduinoentwickler wohl Mist gebaut ...

Diese Argumentation verstehe ich nicht. Es gibt meines Wissens nach kein Arduino-Board, was auf einen Atmega16 setzt. Demnach müssen Core-Dateien , ein passender Bootloader und Einträge in der boards.txt (wo die Fuses stehen) von Drittanbietern/-entwicklern kommen. Warum kreidest du das den Arduinoentwicklern an?