erstellt  21.06.2010
Quarz 
Intern arbeiten die meisten Atmega's mit einer Taktfrequenz von 1 Mhz , also der Prozessor bewältigt in 1 Sekunde 1 Millionen Arbeitsschritte.
Diese interne Frequenz ist nicht besonders stabil, aber es gibt die Möglichkeit den Takt des Prozessors von außen zu beeinflussen oder gar die Möglichkeit
den Takt ganz von außerhalb vorzugeben.
Es gibt 3 verschiedene Arten, der Taktvorgabe
1. Interner RC-Oszillator:
Widerstand-Kondensator-Kombination.
Das ist ein Oszillator, der komplett ohne externe Teile auskommt. Dafür ist er aber nicht sehr genau, je nach Derivat zwischen 1% und 10% Genauigkeit.
Der interner RC-Oszillator ist die Default-Einstellung der Fuses wenn der ATmega ausgeliefert wird.
Es gibt unterschiedliche Frequenzen, auf die der interne RC-Oszillator eingestellt werden kann. Die Frequenzen sind bei den Fuses wählbar.
2 Interner Oszillator mit EXTERNEM Quarz:
Der 2.Oszillator des ATmega hat nur die Verstärkerschaltung intern, das frequenzbestimmende Element,den Quarz, muss man aussen (an XTAL1/2) anschliessen.
Zusätzlich sind noch 2 Kondensatoren erforderlich. Um einen externen Quarz zu nutzen, müssen die Fuses entsprechend gesetzt werden.
Ein beliebter Fehler ist es, die Fuse-Einstellung zu vergessen.
Der ATmega läuft dann zwar, aber mit der falschen Frequenz (nämlich der des internen RC-Oszillators). Die Frequenz des Internen Oszillator beim Atmega 6
beträgt Standardmäßig 1 Mhz.
3.EXTERNER Oszillator:
Auch als externe Clock bezeichnet (z.B. bei der Fuses-Einstellung).
Hier wird keinerlei interne Hardware des ATmega verwendet. Selten verwendete Option.
Um den Atmega schneller zu machen, gibt es die Möglichkeit einen Externen Quarz anzuschließen, der Atmega läuft dann nicht mehr mit der Frequenz
des internen Oszilators , sondern mit dem Takt des externen Quarzes, der kann eine Schwingfrequenz bis zu 18 MHz betragen,
ich verwende hier einen Quarz von 3.6864Mhz.( relativ günstig zu bekommen).
Der Quarz wird an den Anschlüssen Xtal1( Pin 9 )und Xtal2(Pin 10 ) angeschlossen, um den Atmega unter Umständen wieder mit seinem internen Takt
von 1 Mhz laufen zu lassen, habe ich den Quarz über zwei Jumper angeschlossen , so das ich jederzeit die Möglichkeit habe, die Jumper zu entfernen
 und den internen Takt zu verwenden.Um aber vom externen Takt mit dem Quarz evtl. wieder umzuschalten
auf den Internen Takt, müssen zuvor die Fusebits umgestellt werden .
Sollte man vergessen haben zuvor die Fusebits umzustellen, wird der Prozessor nicht mit dem Internen Takt laufen.
Die Kondensatoren sollen zwischen 11 und 22 pF Kapazität haben, zumindest bei dem hier benutzten Atmega8-16PU, bei einem anderen Atmega sollte man
sich das Datenblatt zu Rate ziehen.
Ich hatte anfangs Schwierigkeiten den Quarz ans laufen zu bekommen, bis ich dann Stunden später fest stellte das ich anstatt 22 pF,
Kondensatoren mit 100nF eingelötet hatte.
Sollte man die FuseBit's aus versehen einmal falsch eingestellt haben und man deshalb keinen Zugriff mehr auf den Atmega hat ,
so hat man noch die Möglichkeit einen externen Taktgenerator anzuschließen um so wieder Zugriff auf die Fusebits zu haben.
Als externen Takt habe ich hier einmal ein Rechtecksignal von ca 200 Khz mit Erfolg getestet.
Dazu muss man den Externen Quarz natürlich abklemmen, deshalb wurde hier der externe Quarz über zwei Jumper angeschlossen
die dann bei Bedarf entfernt werden können,um den Externen Takt dann an Pin 9 und 10 anzuschließen.
Allerdings sollte man darauf achten das dass Externe Signal nicht höher ist als die Versorgungsspannung des Atmegas , in diesem Fall also 5 Volt.

3.EXTERNER Oszillator:
Auch als externe Clock bezeichnet (z.B. bei der Fuses-Einstellung).
Hier wird keinerlei interne Hardware des ATmega verwendet. Selten verwendete Option.
Nach Anschluss des externen Quarzes , muss dem Atmega dieses mitgeteilt werden , weil er sonst weiterhin mit der Frequenz des internen Taktes weiterarbeitet,
und das ist beim Atmega 8 Standardmäßig 1 Mhz.
Plan laden
Um den Atmega mitzuteilen das er einen externen Quarz benutzen soll, rufen wir das Programm " Ponyprg" auf suchen dann aus dem Menü .....Befehl/Security an Configurations Bit raus,
darauf erscheint folgendes Bild mit den momentanen Einstellungen.(Also Standard für Atmega ohne angeschlossenen Quarz)

 

Wir ändern also einige Einstellungen indem wir Häckchen entfernen oder setzen, nach dem folgenden Muster,und speichen dann ab. Damit geht die geänderete Einstellung gleich an dem Atmega über .
Nach dem aus - und wieder einschalten unserer Testplatine sollte dann der Exteren Quarz aktiv sein.
Wie kann ich feststellen ob mein Quarz auch schwingt ?

Am einfachsten , ich lass den Atmega mit seinen Standardeintellungen laufen, das wäre beim Atmega 8 z.B.  1 Mhz
dabei schreibe ich ein kleines Programm das nur eine Led ungefährt im Sekundentakt blinkt.
Dann erst aktiviere ich den externen Quarz in dem ich die Fuse Bits einstelle.
Habe ich beispielsweise ein 8 Mhz Quarz angeschlossen , sollte ab dann die Led mit 8 Facher Geschwindigkeit blinken.
Damit ist sichergestellt das der Atmega auch den Quarz erkannt hat und dieser auch schwingt

Anschließend ändere ich die Christal Anweisung im Programm
von $crystal = 1000000 ( Stanardwert , muss nicht zwingend angegeben sein)

auf $crystal = 8000000
Danach sollte die Led wieder im Sekundentakt arbeiten.

Aktualisiert 16.07.2018