Forum: Mikrocontroller und Digitale Elektronik ATMega8 - Fuse-Bits bei Änderung XTAL-Frequenz?


von Bernd .. (timoteus)


Lesenswert?

Hallo !

Als Newcomer in Sachen Mikrocontroller habe ich bisher ein 
Experimentierboard mit dem ATMega8 angefertigt und dann die Übungen aus 
dem  AVR-Mikrocontrollerbuch von Roland Walter durchgearbeitet.

Jetzt bin ich dabei, als erstes ernsthaftes und praktisch verwertbares 
Projekt einen einfachen Frequenzzähler nachzubauen. Dieser wird von 
Peter Johe in der Amateurfunk-Zeitschrift CQ-DL beschrieben und arbeitet 
auch mit dem ATMega8.

Nun bin ich mir allerdings nicht so ganz im Klaren hinsichtlich der 
Fuse-Bits im Zusammenhang mit der verwendeten Quarzfrequenz. Meine 
bisher für die Übungen verwendete Schaltung arbeitet mit einer 
Quarzfrequenz  von 3,6864 MHz, der Frequenzzähler dagegen mit 16,000 
MHz.

Der fabrikfrische ATMega8 wurde in der Trainingsschaltung gemäss der 
Lehrbuch-Beschreibung durch Verändern von Fuse-Bits vom internen 
Oszillator auf den Quarzbetrieb umgeschaltet. Hierbei kam es auf die die 
Bits CKSELo bis CHKSEL3, CKOPT, SUT0 und SUT1 an („Ext.Crystal/Resonator 
High Freq., Startup time 16k + 4 ms.“).

Dazu nun meine Frage:

Muss ich an den bisherigen Fuse-Bits-Einstellungen etwas ändern, wenn 
ich statt eines 3,6864MHz-Quarzes einen 16MHz-Quarz verwende? Oder 
reicht es schon, im Bascom-Programm die Variable $crystal entsprechend 
zu ändern?  Mit den Angaben im Datasheet komme ich nicht so recht klar, 
und ich möchte vermeiden, vielleicht voreilig einen neuen Chip mit 
falschen Einstellungen zu „verheizen“.

Danke im voraus für Tipps.

Bernd

von g457 (Gast)


Lesenswert?

> [..] statt eines 3,6864MHz-Quarzes einen 16MHz-Quarz [..]

Du solltest mindestens CKOPT löschen. Was ∗genau∗ im Datenplatt bereitet 
denn Probleme? Alternativ mach mal einen Vorschlag, was ∗genau∗ du fusen 
würdest (mit Begründung(!)), dann schauen wir da mal drüber.

HTH

von (prx) A. K. (prx)


Lesenswert?

@g457: Dran denken, dass allein schon die Verwendung der Ausdrücke "Fuse 
setzen/löschen" schon viele AVRs sinnlos verheizt hat.

von g457 (Gast)


Lesenswert?

> Dran denken, dass allein schon die Verwendung der Ausdrücke "Fuse
> setzen/löschen" schon viele AVRs sinnlos verheizt hat.

Die nutze ich (nicht nur hier) absichtlich - aber nicht um µCs zu 
verbraten sondern damit der TO die Gelegenheit bekommt, das Datenplatt 
zu lesen und zu verstehen.

Abgesehen davon:
- 'setzen' -> 'logisch' setzen -> auf logisch '1' programmieren
- 'löschen' -> 'logisch' löschen -> auf logisch '0' programmieren

Ob die Repräsentation von '1' und '0' jetzt 'durchgebrannt' oder 
'intakt' lautet ist bei Nutzung des Datenplatts völlig irrelevant. 0 der 
1, das ist hier die Frage :-)

Nix für ungut.

von (prx) A. K. (prx)


Lesenswert?

Nur dass "löschen" die Übersetzung von "erase" ist und im Mega8 
Datasheet eine Fuse nach dem "erase" den Wert 1 hat: "The Lock Bits can 
only be erased to “1” with the Chip Erase command."

Also wenn man schon Worte statt 0/1 verwendet, dann immer dazuschreiben, 
was man selber damit meint. Insbesondere wenn man damit das Gegenteil 
dessen meint wie das Datasheet.

Nix für ungut. Die Nummer hat Atmel vergeigt.

von g457 (Gast)


Lesenswert?

> Die Nummer hat Atmel vergeigt.

Jepp. Atmel spricht von Fuses, jeder normale(tm) Mensch von Logik :-)

Aber zurück zum Thema: Hat der TO schon was ins Datenplatt 
interpretiert?

von Bernd .. (timoteus)


Lesenswert?

Danke euch allen für die Hinweise.

Ja, die "negative Logik" hat mich auch schon genervt.

Im Lehrbuch werden bei der Schaltung mit dem 3,6864MHz-Quarz 
lt.TWINAVR-Software folgende Einstellungen verwendet:

Configuration:
Lockbits: LB1, LB2, BLB01, BLB02, BLB11, BLB12 mit Häkchen versehen
Fuse Low bits: CHKSEL0 ... CHKSEL3, SUT1, BODEN, BODLEVEL mit Häkchen 
versehen. SUT0 kein Häkchen.
Fuse High bits:  BOOTRST, EESAVE, CKOPT, WDTON, RSTDISBL mit Häkchen 
versehen. BOOTT0 und BOOTSZ1 ohne Häkchen.
Important: Programmed bits are 0 (unchecked), unprogrammed bits are 1 
(checked).

(So wird die Konfiguration im Lehrbuch beschrieben, mit dem Hinweis "auf 
keinen Fall etwas zu ändern").

Das Bascom-interne Brennprogramm „MCS Universal Programmer Interface“
nennt folgenden Eintrag, der sich m.E. mit den obigen Angaben deckt:
1011111: Ext.Crystal/Resonator High Freq. Start-up time 16CK + 4 ms 
(CHKSEL=1111 SUT=10).

Im Moment gehe ich davon aus, dass diese Einstellungen auch für einen 16 
MHZ-Quarz fast richtig sind. Die Angaben im Datasheet interpretiere ich 
jedenfalls so, wobei mir auffällt, dass CKOPT wohl erst bei 16 MHz 
relevant ist. Bei CKOPT sollte ich also den Haken rausnehmen.

Bin ich damit auf dem richtigen Wege?

Bernd

von g457 (Gast)


Lesenswert?

> Bei CKOPT sollte ich also den Haken rausnehmen.

ja, löschen/auf '0' setzen/'program fuse'

> CHKSEL=1111 SUT=10

Sieht korrekt aus.

von Bernd .. (timoteus)


Lesenswert?

Danke g457! Das gibt mir Mut, den Chip entsprechend vorzubereiten,
ohne ihn "zu verheizen".

Bernd

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.