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


von avion23 (Gast)


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:

1
C:\avrdude-5.4-win32-bin>avrdude.exe -p atmega128 -c stk500v2 -P avrdoper -e -U
2
lfuse:w:0xBF:m
3
4
5
avrdude.exe: AVR device initialized and ready to accept instructions
6
7
Reading | ################################################## | 100% 0.20s
8
9
avrdude.exe: Device signature = 0x1e9702
10
avrdude.exe: erasing chip
11
avrdude.exe: reading input file "0xBF"
12
avrdude.exe: writing lfuse (1 bytes):
13
14
Writing | ################################################## | 100% 0.20s
15
16
avrdude.exe: 1 bytes of lfuse written
17
avrdude.exe: verifying lfuse memory against 0xBF:
18
avrdude.exe: load data lfuse data from input file 0xBF:
19
avrdude.exe: input file 0xBF contains 1 bytes
20
avrdude.exe: reading on-chip lfuse data:
21
22
Reading | ################################################## | 100% 0.06s
23
24
avrdude.exe: verifying ...
25
avrdude.exe: 1 bytes of lfuse verified
26
27
avrdude.exe: safemode: Fuses OK
28
29
avrdude.exe done.  Thank you.
30
31
C:\avrdude-5.4-win32-bin>avrdude.exe -p atmega128 -c stk500v2 -P avrdoper -e -U
32
lfuse:w:0xBF:m
33
34
avrdude.exe: stk500v2_command(): command failed
35
avrdude.exe: initialization failed, rc=-1
36
             Double check connections and try again, or use -F to override
37
             this check.
38
39
40
avrdude.exe done.  Thank you.

von Werner B. (werner-b)


Lesenswert?


von Jörg W. (dl8dtl) (Moderator) Benutzerseite


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.

von avion23 (Gast)


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.

von avion23 (Gast)


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.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.