Wie Fuse-Bits setzen?

uwe-ftechnik

Mitglied
31. Jan. 2009
71
1
8
Bekum
Sprachen
Habe hier zB. ein ATMEGA 164P mit volgender angabe aus dem Datenblatt.

Device Clocking Option_______________CKSEL3..0

Low Power Crystal Oscillator_________1111 - 1000
Full Swing Crystal Oscillator__________0111 - 0110
Low Frequency Crystal Oscillator______0101 - 0100
Internal 128 kHz RC Oscillator_______________0011
Calibrated Internal RC Oscillator_____________0010
External Clock____________________________0000
Reserved________________________________0001

Wie muss man die Einstellung setzen (CKSEL u. SUT) wenn mann Externen Quartz mit 8Mhz Bzw. 16Mhz betreiben möchte?
Calibrated Internal RC Oscillator dürfte klar sein, External Clock müsste für einzelnen Tackt an XTAL1 sein auch Internal 128 kHz RC Oscillator dürfte nicht unklar sein.Ich komme mit dem Dattenblatt nicht so gut klar!!!!!!!
 
Hallo Uwe,

für einen Quarz 8MHz bis 16MHz kannst du folgende Fuse-Einstellungen verwenden:

CKSEL[3..0] = 1111
SUT[1..0] = 11

"1" bedeutet Fuse nicht programmiert.

(Angaben wie immer ohne Gewähr :D)

Grüße,
Dirk
 
Hi uwe-ftechnik!

- Für einen externen Quarz mit einer Geschwindigkeit von 8.0 bis 16.0 MHz setzte ich CKSEL3..1 auf 111.
- CKSEL0 setzte ich auch auf 1.
- SUT1..0 setzte ich auf 10 bzw. 11 je nachdem wie sauber das Quarz anschwingt. Meist verwende ich 11.

ACHTUNG bei den Fuses: 0 bedeutet programmiert, 1 bedeutet nicht programmiert!

Ein paar Worte zur Erläuterung:

CKSEL
Die wohl am häufigsten geänderten Fusebits sind CKSEL0 bis CKSEL3 (Select Clock Source). Mit ihrer Hilfe wählt man die Taktquelle aus der der Controller seinen Takt erhält. Hier ist etwas Vorsicht geboten da eine falsche Einstellung den Controller lähmen kann. Eine falsche Einstellung lässt sich jedoch relativ leicht beheben. Die genauen Parameter können zwischen den einzelnen Typen variieren
Default: Interner RC Oszillator mit 8MHz
CKSEL0 : 0 (programmiert)
CKSEL1 : 1 (unprogrammiert)
CKSEL2 : 0 (programmiert)
CKSEL3 : 0 (programmiert)


SUT
Mit SUT0 und SUT1 lässt sich die Zeit einstellen wie lange der Reset Impuls nach einem Reset oder Power Up verzögert wird. Je nach Umgebungsbedinung kann die Reset Zeit verlängert oder verkürzt werden. Zusammen mit der Brown Out Detection wird eine externe Resetschaltung (bis auf den üblichen 10kOhm PullUp Wider-stand) meist überflüssig.
Default:
SUT0 : 0 (programmiert)
SUT1 : 1 (unprogrammiert)
 
Uuups...

... jetzt war Dirk schneller :p
 
Naja, dafür war ich aber nicht so ausführlich wie du :D

Außerdem ... doppeltgemoppelt hält besser ;)
 
Und wenigstens kamen wir zu dem gleichen Ergebnis :cheers:
 
Fusebits in Bascom

Hallo zusammen,
habe heute schon vergeblich versucht einen anderen Takt mit Bascom über die Fusebits bei einem Atmega8 einzustellen.
Vielleicht hat mir jemand einen kleinen Tip wo der Fehler liegt!?

was mich noch wundert, ist das, dass bei dem Fusebit High M Pin PC 6 als I/O Pin erscheint..:confused: ist aber die originaleinstellung und Reset funzt auch:confused:

wenn ich bei dem Fusebit KLA 987 einen anderen Takt einstelle und dann über Write FS die Änderung in den µC schreiben will dann blinken auch die LED's am Programmer (mySmartUSB V2.11) der µC macht einen Reset aber die Änderung ist nach einem Refresh der Bits nciht gespeichert:confused: :confused:

Also vielleicht weiss jemand Rat
vielen Dank im voraus

Gruss Heinz
 

Anhänge

  • MyScreenHunter.jpg
    MyScreenHunter.jpg
    108,2 KB · Aufrufe: 42
Sorry Heinz,

hier muss ich zunächst passen. Ich verwende zum proggen meiner Megas das AVR-Stuido mit dem STK500 oder dem AVRISP mkII.

Aber sag mal, meinst Du mit "mySmartUSB" das Produkt von myAVR und damit von Laser & Co. Solutions GmbH? Verwendest Du da nur den Progger oder hast Du gar ein myAVR-Board? Welches?
Ich frage so weil ich habe seit Jahren Boards von denen im Schrank liegen und von dem Progger dürfte ich dann auch noch irgendwo zwei Stück rumfliegen haben und dann könnte ich das vielleicht nächstes Wochenende mal ausprobieren.

Zeitiger werde ich vermutlich nicht dazu kommen aber wenn Du mir die Zusatzinfos hast dann könnte ich mal schauen.

Grüße,
Markus
 
Hallo zusammen,
habe heute schon vergeblich versucht einen anderen Takt mit Bascom über die Fusebits bei einem Atmega8 einzustellen.
Vielleicht hat mir jemand einen kleinen Tip wo der Fehler liegt!?

Hallo Heinz!

Ich verändere meine Fusebits auch mit BASCOM....

Wenn du einen externen Quarz benutzen möchtest, dann musst du auf alle Fälle die Einstellung Ext. Crystal/Resonator verwenden !

Nur wenn du einen echten Oszillator hast, dann kannst du die Einstellung Ext. RC Osc. benutzen!

Eigentlich kannst du ja fast froh sein, dass dein Porgrammer die Änderungen nicht übernommen hat..... sonst wäre dein Mega8 bestimmt nicht mehr bereit mit dir zu "reden". ;)

Dafür müsstest du dann ggf. einen externen Oszillator anschließen und die Fusebits wieder neu einstellen.

Ich würde auch die Einstellung für PINC6 gleich auf RESET ändern......
Nur für den Fall, dass deine Einstellungen ja doch mal übertragen werden sollten. ;)

Warum dein Programmer aber die Fusebits nicht neu setzt kann ich dir leider nicht sagen, da ich das gute Stück nicht kenne.
Versuch doch einfach mal die Fusebits mittels ISP zu übertragen.

Wünsche gutes Gelingen.....
Cassio
 
Hi Markus,
Aber sag mal, meinst Du mit "mySmartUSB" das Produkt von myAVR und damit von Laser & Co. Solutions GmbH? Verwendest Du da nur den Progger oder hast Du gar ein myAVR-Board? Welches?


ja das ist der mySmartUSB von myAVR. Ich verwende eigentlich nur den Progger und einen diskreten Aufbau auf Steckboard für die Testläufe.

Hi Cassio,

Wenn du einen externen Quarz benutzen möchtest, dann musst du auf alle Fälle die Einstellung Ext. Crystal/Resonator verwenden !

Nur wenn du einen echten Oszillator hast, dann kannst du die Einstellung Ext. RC Osc. benutzen!

ich wollte eigentlich nur mal den int. Takt von 1MHZ auf 8MHz zum testen ändern (ohne ext. Quarz)

Ich würde auch die Einstellung für PINC6 gleich auf RESET ändern......
das ist ja das komische: alle Einstellungen inkl. RESET sind so original, hab da noch nicht geändert, der Reseteingang funzt auch einwandfrei wenn ich ihn gegen Masse lege.
irgendwie komisch....

Versuch doch einfach mal die Fusebits mittels ISP zu übertragen.
????? der Programmer ist mit dem µC doch über die ISP (Masse,Reset,Miso,Mosi,SCK) verbunden, oder wie meinst Du das mit der ISP??

Erstmal Danke für Eure Antworten

Gruss Heinz
 
Hallo Heinz!

Zu erst einmal hat der ATMega8 nur eine 1MHz interne Clock....
den intern höher zu setzen wird wohl nicht funktionieren. ;)


Die Sache mit deinem RESET-Pin ist in der Tat sehr merkwürdig.
Ich gehe aber mal davon aus, das sich der Mega8 noch im "Originalzustand" befindet und deine Änderungen bis jetzt nicht programmiert wurden.
Allerdings werden die Daten ja beim Aufruf vom µC ausgelesen......
Frag bitte Markus noch mal!

Mit ISP meinte ich direkt vom PC mittels einfachen Parallel-Adapter und nicht mit einem USB-Programmer.
Sorry, für meine "einfach" Wortwahl..... aber für die detaillierten Beschreibungen ist immer Markus zuständig. ;)


Gruß,
Cassio
 
Soweit ich weiss wird doch das Ändern der Fusebits erst nach erneutem einschalten der Spannung übernommen oder habe ich da etwas falsch verstanden?
Soweit ich das Verstanden habe ist das doch zur sicherheit damit man sich die Fuses nicht verhaut.:confused:
 
Hi uwe,

Soweit ich weiss wird doch das Ändern der Fusebits erst nach erneutem einschalten der Spannung übernommen oder habe ich da etwas falsch verstanden?
Soweit ich das Verstanden habe ist das doch zur sicherheit damit man sich die Fuses nicht verhaut.:confused:
Kannst Du vergessen. Die Fuse-Bits werden programmiert und der Prozessor
läuft nach dem Programmiervorgang wieder los und es wird alles SOFORT nach dem Programmiervorgang aktiv.
Also freust Du dich auch SOFORT über deine Fehler, die du gemacht hast.
So ist jedenfalls meine Info.

== Latching of Fuses ==
The Fuse values are latched when the device enters programming mode and changes of the Fuse values will have no effect until the part leaves Programming mode. This does not apply to the EESAVE Fuse which will take effect once it is programmed. The fuses are also latched on Power-up in Normal mode.
Das habe ich im Datenblatt gefunden.

Also nix mit "zur Sicherheit". Man sollte also vorher nachdenken was man
macht :D

Nochmal interpretiert: Die Fuses werden während des Programmiervorganges
und nach einem Reset gelatched (zwischengespeichert). Und die Änderungen
die man gemacht hat werden SOFORT nach dem Programmieren oder bei
einem Reset aktiv. Außer bei der EESAVE-Fuse. Die wird SOFORT aktiv.

Also wie bei root unter Linux :D Ich bin root ich darf das ;)
es gibt keine Abfragen "Sind sie wirklich sicher?"
Wenn man programmiert weiß man entweder was man da macht oder hat
Pech und einen großen Mülleimer :rolleyes:

Gruß
Dino
 
Hmmmm, hallo zusammen,

schon sehr komisch oder? Unplausible Werte bei RESET, nicht funktionierende Programmierung usw.

Ich stelle jetzt mal die Hypothese in den Raum, das aktuell weder das Lesen noch das Schreiben in den Mega funktioniert. Warum das so ist wissen wir noch nicht.

Meine Vermutung ist, dass auch das Lesen nicht richtig funktioniert und somit irgendwelche Defaultwerte angezeigt werden wo viel durch Zufall richtig angezeigt wird aber somit auch unplausible Werte ausgegeben werden.

So, wie Ihr es von mir gewohnt seit noch ein paar dumme Fragen :D :

- mit welcher ISP Frequenz versuchst Du denn den Mega zu programmieren? Die Frequenz darf - soweit ich weiß - maximal die hälfte des Clock betragen. Niedrigere Werte sind zunächst anzuraten bis die HW sauber funktioniert. Bedeutet, wenn Du den Mega mit 1 MHz clockst so würde ich zunächst nur mit ca. 100k Baud (habe die genauen Werte nicht im Kopf) takten. Die ISP-Frequenz kann man einstellen, frag mich jetzt aber nicht genau wo da ich Deine Systemkonfiguration "noch" nicht habe.

- funktioniert denn das Schreiben von Programmcode in den Mega zuverlässig (auf Anhieb oder musst Du manchmal 2x oder 3x prommen bis es funktioniert?


Ich werde die nächsten Stunden/Tage mal versuchen mit dem mySmartUSB mal BASCOM zum Laufen zu bekommen. Vielleicht kann ich das Problem nachvollziehen. Kannst Du mir bitte mal Deine BASCOM Einstellungen zur Verfügung stellen. Welchen Programmer Du genau eingestellt hast und welche Programmeinstellungen in den Settings.

Ich nehme an, dass dort der Hund begraben liegt :D

Grüße,
Markus
 
ISP-Frequenz

Hi Markus,

- mit welcher ISP Frequenz versuchst Du denn den Mega zu programmieren? Die Frequenz darf - soweit ich weiß - maximal die hälfte des Clock betragen.

In der AVR ISP mk2 Userguide steht folgendes ...
ISP Freq sets the ISP clock frequency.
This ist the SCK signal on the ISP interface.

For most AVRs the datasheet describes the following ISP frequency (SCK):

The minimum low and high periods for the serial clock (SCK) input are
defindes as follows:
Low:> 2 CPU clock cycles for fck < 12MHz, 3 CPU clock cycles for fck 12MHz
high:> 2 CPU clock cycles for fck < 12MHz, 3 CPU clock cycles for fck 12 MHz

This means that for target clock less than 12MHz, the ISP frequency must be
equal or less than 1/4 of the target clock. For target clock above 12MHz, the
ISP frequency must be equal or less than 1/6 of the target clock.

Be aware that for parts withCKDIV (Clock Divide) fuse and/or CLKPR (Clock
Prescaler Register), the ISP Frequency must be calculated out from the
divided target clock.
Meiner Meinung nach war es 1/4. Aber ab und zu lohnt sich das nachlesen :D

Ich hab mit zuviel ISP-Frequenz auch schon mal Probleme gehabt :rolleyes:
Mal ausprobieren ...

Gruß
dino
 
Hallo Dino,

danke für die Korrektur! Da lag ich mit meinen 1/2 ja a bissle daneben. Danke auch für die Referenz zum Handbuch!

Unabhängig davon könnte dies aber die mögliche fehlerquelle sein, oder?

Grüße,
Ma
 
Hi Markus,

hab ich doch gern gemacht :)

Unabhängig davon könnte dies aber die mögliche fehlerquelle sein, oder?
Jau! Seh ich auch so.
Auch wenn man den falschen Prozessortyp einstellt interpretiert der
Programmer einiges nicht so richtig.
Ich bin da mal in der Liste von ATmega48 auf ATmega645 gerutsch.
Gab schöne Effekte :D

Gruß
Dino
 
Hallo allerseits,
verfolge den Thread schon seit längerem, nun wollte ich mal sehen, was passiert, wenn ich im Studio4 ein neues Projekt mit Auswahl ATMega8 eröffne,
was mir da an "Default"-Einstellungen schon geboten wird.

brown out detection disabled angekreuzt BODLEVEL 111
int RC osc 8 MHZ 14 CK + 65 ms default value nicht angekreuzt
ext crystal osc. 8MHz 14 CK + 65 ms CKSEL=1111 SUT=11 angekreuzt



Fall vom Schemel, tatsächlich "externer Oszillator".

Alles andere ist nicht angekreuzt.

Hilft aber wohl konkret jetzt nicht weiter....

Trotzdem Gruß von Oskar01
 
mySmartUSB....

au man, jetzt schmeiß ich das Ding langsam gegen die Wand....

Hallo zusammen,

mir kocht das Blut! Jetzt sitze ich seit drei Stunden an meinem Schreibtisch, habe das mySmartUSB (ISP Progger von myAVR) ausgegraben und wollte Support leisten.

Ich kann nur alles was hier geschrieben wurde bestätigen. Das Ding funktioniert Stand 19:58 Uhr weder mit BASCOM noch mit AVR Prog noch mit AVR-Studio. Ich kriege es NICHT zum laufen. Die ausgelesenen Fuse-Bits sind willkürlich. Obwohl der Mega8 mit internen 1 MHz läuft sagt mir der Progger ich hätte 8 MHz extern und proggen läßt sich das Device nicht die Bohne!

Auch Programmcode bekomme ich nur teilweise oder garnicht in den Mega.

Habe die Treiber sauber / korrekt installiert, kann mich auch mit dem USB-Device unterhalten aber dann hört es schon auf...

so, mal sehen was ich noch rausfinde bevor mir der Kragen platz und / oder die Nacht zuende ist!

To be continued....

Markus
 
Hi Markus,

das hört sich ja echt schlimm an. Ich schlage vor, du machst erst mal Pause und gönnst dir ein Glas Wein oder ähnliches :D sonst kippst du uns noch vor deinem Schreibtisch vom Stuhl. Wenn du von dem Problem ein bisschen Abstand gewinnst, vielleicht platzt ja der Knoten ein anderesmal.

Schönen Abend noch,

Dirk
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)