www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Atmega128 verfused - lfuse=0xBF


Autor: avion23 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Forum,

ich habe hier ein Crumb128 Board mit einem Atmega128 und 14,7456MHz 
Crystal. Diesen wollte ich statt dem internen Oszillator verwenden. Nach 
dem ändern der lower Fuses auf 0xBF tut sich leider gar nichts mehr.

0xBF bedeutet:
Ext. Crystal/Resonator High Freq.; Start-up time: 16K CK + 4 ms; 
[CKSEL=1111 SUT=10],
BODEN=0, (wacklige USB-Stromversorgung, deswegen gesetzt)
BODLEVEL=1 (BOD Level ist 2,7V)

Geflasht wurde mit dem AVR-Doper. Was habe ich da falsch gemacht? Vor 
allem was ist richtig? Anbei noch die Ausgabe von AVRDUDE:

C:\avrdude-5.4-win32-bin>avrdude.exe -p atmega128 -c stk500v2 -P avrdoper -e -U
lfuse:w:0xBF:m


avrdude.exe: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.20s

avrdude.exe: Device signature = 0x1e9702
avrdude.exe: erasing chip
avrdude.exe: reading input file "0xBF"
avrdude.exe: writing lfuse (1 bytes):

Writing | ################################################## | 100% 0.20s

avrdude.exe: 1 bytes of lfuse written
avrdude.exe: verifying lfuse memory against 0xBF:
avrdude.exe: load data lfuse data from input file 0xBF:
avrdude.exe: input file 0xBF contains 1 bytes
avrdude.exe: reading on-chip lfuse data:

Reading | ################################################## | 100% 0.06s

avrdude.exe: verifying ...
avrdude.exe: 1 bytes of lfuse verified

avrdude.exe: safemode: Fuses OK

avrdude.exe done.  Thank you.

C:\avrdude-5.4-win32-bin>avrdude.exe -p atmega128 -c stk500v2 -P avrdoper -e -U
lfuse:w:0xBF:m

avrdude.exe: stk500v2_command(): command failed
avrdude.exe: initialization failed, rc=-1
             Double check connections and try again, or use -F to override
             this check.


avrdude.exe done.  Thank you.

Autor: Werner B. (werner-b)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
avion23 wrote:

> 0xBF bedeutet:
> Ext. Crystal/Resonator High Freq.; Start-up time: 16K CK + 4 ms;
> [CKSEL=1111 SUT=10],

Dem kann ich nicht folgen: 0xBF hat für mich beide SUT-Bits gesetzt.
Macht aber hier nicht viel aus.

Dein Problem dürfte sein, dass du nicht gleichzeitig noch CKOPT in
der hfuse mit gesetzt hast.  Damit hast du den low-power-Oszillator
noch ausgewählt, und der lässt sich nur bis ca. 8 MHz betreiben.
Falls du keinen externen Takt irgendwoher bekommen kannst, um den
AVR zu retten, müsstest du also vorübergehend den 14,7-MHz-Quarz
durch einen aus dem Bereich (3...8) MHz ersetzen.

Autor: avion23 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Werner:
Danke, den Artikel habe ich mir durchgelesen. Daher habe ich überhaupt 
die Einstellungen. Ich wusste aber nicht, was ich falsch gemacht habe :(

@Jörg:
>Dem kann ich nicht folgen: 0xBF hat für mich beide SUT-Bits gesetzt.
>Macht aber hier nicht viel aus.

Du hast vollkommen recht. Ich bin beim abschreiben eine Zeile 
verrutscht. Mit SUT=10 wäre 0xAF heraus gekommen, 0xBF habe ich 
geflasht.

>Dein Problem dürfte sein, dass du nicht gleichzeitig noch CKOPT in
>der hfuse mit gesetzt hast.

Das wollte ich hören! Ich werde jetzt eine externe Taktquelle anlegen 
und auch die high fuses setzen.



Vielen Dank! Ich melde mich wieder, wenn es geklappt hat.

Autor: avion23 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jetzt die Lösung des Problems:
Der Quarz war nicht eingelötet! Was eingelötet war ist ein 32,768kHz 
Uhrenquarz. Nach dem Einlöten funktionierte es einwandfrei, auch ohne 
die CKOPT fuse.

Für die Leute die sich ebenfalls mit dem Board herumärgern müssen: Vbus 
vom USB ist nicht auf Vcc gelegt! D.h. die Versorgungsspannung des USB 
wird nicht weitergereicht.

Die bei mir funktionierendes fuses sind:
lfuse = 0xBF
hfuse = 0x8C
efuse = 0xFF
lock  = 0xEF (noch nicht bestätigt)

Der mitgelieferte Bootloader war mir zu kompliziert. Ich habe den 
Bootloader von Pascal Stang verwendet, der ein STK500 simuliert. Die 
Adresse ist http://hubbard.engr.scu.edu/embedded/avr/bootloader/ . Der 
USB-Seriell wandler ist an USART1 angeschlossen.


Danke an alle, die sich beteiligt haben.

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
avion23 wrote:

> Nach dem Einlöten funktionierte es einwandfrei, auch ohne
> die CKOPT fuse.

Ist aber eben nicht garantiert, der low-power-Oszillator wird nur
bis 8 MHz garantiert.  Aber mittlerweile hast du ja CKOPT ohnehin
noch nachgezogen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.