Forum: Mikrocontroller und Digitale Elektronik Wie mit FUSE-Bit atmega16 auf 16Mhz laufen lassen?


von Andreas Horneff (Gast)


Lesenswert?

Hallo zusammen,

ich hab hier ein kleines Problem. Habe ein Atmega16. An XTAL einen 8
MHz Quarz, und 2 27pF Kondensatoren.
Kann mir jm. sagen, wo ich jetzt was in mein Programm schreiben muss,
damit der Controller auf 16Mhz und nicht auf dem Auslieferzustand
(1Mhz) läuft?
Hab in der Initialisierungsphase von meinem Programm einfach mal cksel
= 0x07; geschrieben, aber da war ich wohl zu naiv ;). Funzt leider
nicht. Wie mach ich das?

Danke für eure Hilfe!

von Thomas (Gast)


Lesenswert?

@Andreas

in Deinem Fall musst du die Fuse-Bits des ATmega setzen.
Aber Vorsicht, damit hat mancher seinen AVR unbrauchbar gemacht.

Gruß, Thomas

von Thomas (Gast)


Lesenswert?

@ Andreas

die Fuse-Bits deines ATmega kannst Du nicht mittels eines Programms
setzen. Dein Programmer stellt Dir im Normalfall diese Funktion zur
Verfügung.

Gruß, Thomas

von Schubiduaaaaaahhrg (Gast)


Lesenswert?

@ Andreas

welchen Programmer benutzt Du, um die Programme auf den ATmega zu
flashen ?

von Andreas Horneff (Gast)


Angehängte Dateien:

Lesenswert?

Oh jeh ;).

Ich muss sagen, ich bin ein echter Anfänger. Hab bis jetzt noch nicht
so viel mit Atmega, bzw. prinzipiell mit Controllern gearbeitet. Wollte
mich da jetzt aber mal einarbeiten. Ich hab mal ein paar Taster
eingelesen (Interrupts) und ein LC-Display angesteuert.
Jetzt hab ich für eine Bastellei ein Timer gebraucht und jetzt fängt
das Problem an. Hab eben gemerkt, das da was mit dem Controller-Takt
nicht stimmen kann, da mein Timer hinten und vorne nicht richtig läuft.
Also läuft schon richtig, aber zu langsam.
Hab dann mal im Datenblatt gelesen, dass der im Auslieferungszustand
auf 1Mhz steht => die Erklärung für mein Problem.

Ich habe mir zum Programmieren des Controllers eine kleine Schaltung
zusammen gebaut die ich im Internet gefunden habe. Und zwar hier:
http://www.rowalt.de/mc/avr/progd.htm
(den oberen) und hab dann die Files immer mit dem Tool, dass es auch
auf der Seite gibt, in den Controller programmiert.
Hab jetzt gesehen, dass es da auch ein Config - Menü gibt. Da kann man
auch so was wie FUSE-Bits setzen, das bringt mich schon mal ein ganzen
Schritt weiter.
Ich habe von dem Config-Menü mal ein Screenshot gemacht, kann mir jm.
sagen, was ich bei meiner Hardware (Atmega 16Mhz, 8Mhz Quarz, 22pF) da
an Harken machen muss, damit der Controller auf 16Mhz rennt?

Wäre super nett von euch!!!

von Sascha (Gast)


Lesenswert?

Dazu bräuchtest du erst mal ein 16Mhz Quartz.

Mfg sascha

von Andreas Horneff (Gast)


Lesenswert?

Ist schon so gut wie reingelötet :).

Und dann einfach im Programmer bei cksel0 - 3 ein Harken machen?
Oder muss ich sonst noch was aktivieren / deaktivieren.

Vielen Dank!

von Hannes L. (hannes)


Lesenswert?

Lass die Finger von den Fusebits, bis du die Beschreibung der Fusebits
im Datenblatt verstanden hast.

Schreib dir die Fusebits und die Werkseinstellung aus dem Datenblatt
raus, vergleiche das mit den aktuellem Zustand der Fuses im AVR und
ziehe dann daraus deine Schlüsse. So hast du die geringste Gefahr,
durch ein Missverständnis etwas falsch zu machen. Denn dann ist das
Geschrei wieder groß, wie durchschnittlich zwei mal die Woche hier im
Forum.

...

von Hannes L. (hannes)


Lesenswert?

Achja, hier könntest du auch etwas über die Fusebits lernen:

http://www.mikrocontroller.net/forum/read-1-305204.html

...

von Andreas Horneff (Gast)


Lesenswert?

Hallo noch mal.

Also ich bin jetzt schon ein bisschen weiter gekommen. Ich habe es
geschafft, dass mein Atmega16 auf 16Mhz läuft, aber leider nur mit
einem externen Oszilator, nicht aber mit einem Quarz. Ich verstehe die
Tabelle im Datenblatt nicht, da steht bei Crystal Oszillator Operating
Modes (S.24) das ich da nur Quarze bis max 8Mhz einstellen kann
(CKSEL3..1 = 111). Ich habe jetzt aber ein 16Mhz Quarz und möchte den
aktivieren?!

Wie mache ich das?

Danke für eure Hilfe!

von Hannes L. (hannes)


Lesenswert?

Das scheint etwas missverständlich formuliert zu sein.

Ich hatte einen Mega16 mit 3,6864MHz (schneller brauche ich sehr
selten, eigentlich gar nicht) betrieben, die (eigentlich logische)
Einstellung für Crystal Oscillator ging nicht. Erst die Einstellung
Ceramik Resonator funktionierte. Das war übrigend das einzige mal, dass
ich den HV-Modus des STK500 benutzt habe.

...

von Andreas Horneff (Gast)


Lesenswert?

Habe da anscheinend was im Text überlesen. Da steht, das die max.
Frequenz für Resonatore 8Mhz ist, wenn CKOPT nicht programmiert ist und
16Mhz, wenn CKOPT programmiert ist.

Was ist denn CKOPT? Finde das gar nicht in meinen Config-Einstellungen?
Kann mir jm. sagen, was ich einstellen muss?

Datenblatt auf S. 24

DANKE!

von Hannes L. (hannes)


Lesenswert?

CKOPT ist eine Fuse, mit der man einstellt, ob der interne Oszillator
für den externen Resonator mit hoher oder geringer Verstärkung
(Amplitude) arbeitet. Geringe Amplitude spart Strom, hohe Amplitude ist
störsicherer.

...

von Andreas Horneff (Gast)


Lesenswert?

Ah, interessant, DANKE!

Also wenn ich das jetzt richtig verstanden habe, muss ich, damit mein
Controller mit externem 16Mhz quarz auf 16Mhz läuft,
CKOPT = 1;
CKSEL1 = 1;
CKSEL2 = 1;
CKSEL3 = 1;
==> müssten doch dann 16Mhz sein, oder?

Und
CKSEL0 = 1;
SUT1 = 1;
SUT0 = 0;
==> müsste doch dann eine Start-Up-Time von 16K CK sein, oder?
Meint ihr, das funktioniert so, oder zerschieß ich da irgendwas?

Wäre nett, wenn jm, der sich damit auskennt, mal einwände oder ein OK
posten könnte.

Dann bin ich auch zufrieden!!! :)

von Felix (Gast)


Lesenswert?

OK (bei einer startup zeit von 4.1ms) ;-)

von Hannes Lux (Gast)


Lesenswert?

Felix (Gast) schrieb am: 11.02.2009 14:20

> OK (bei einer startup zeit von 4.1ms) ;-)

Meinst Du, das interessiert ihn nach drei Jahren noch???

...

von Klaus (Gast)


Lesenswert?

passt zwar nicht 100%ig ins Thema aber aber :

>2 27pF Kondensatoren

warum hält sich der Wert so stur im Forum?

im Datanblatt S.26 Tab. 8-3 steht 12..22 pF

von Helmut -. (dc3yc)


Lesenswert?

Klaus,
die Lastkapazität hängt nicht nur vom Datenblatt ab, sondern auch vom 
Quarz! Und 27pF ist nicht nur meiner Erfahrung nach ein recht guter 
Wert; natürlich gehen 22pF bis 33pF auch, da ändert sich halt die 
Frequenz ein bisschen. Wenn du's genau haben willst, machst du einen C 
zum Trimmer und gleichst dann bei konstanter Temperatur und 
Betriebsspannung ab.

Servus,
Helmut.

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.