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!
@Andreas in Deinem Fall musst du die Fuse-Bits des ATmega setzen. Aber Vorsicht, damit hat mancher seinen AVR unbrauchbar gemacht. Gruß, Thomas
@ 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
@ Andreas welchen Programmer benutzt Du, um die Programme auf den ATmega zu flashen ?
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!!!
Dazu bräuchtest du erst mal ein 16Mhz Quartz. Mfg sascha
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!
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. ...
Achja, hier könntest du auch etwas über die Fusebits lernen: http://www.mikrocontroller.net/forum/read-1-305204.html ...
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!
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. ...
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!
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. ...
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!!! :)
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???
...
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.