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
> [..] 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
@g457: Dran denken, dass allein schon die Verwendung der Ausdrücke "Fuse setzen/löschen" schon viele AVRs sinnlos verheizt hat.
> 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.
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.
> 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?
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
> Bei CKOPT sollte ich also den Haken rausnehmen. ja, löschen/auf '0' setzen/'program fuse' > CHKSEL=1111 SUT=10 Sieht korrekt aus.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.