Forum: Mikrocontroller und Digitale Elektronik ATmega8 40kHz Quarz


von Hermann G. (hahgeh)


Lesenswert?

Hallo, weiß jemand, ob man bei dem asynchronen Timer2 des ATmega8 auch
einen 40kHz Quarz ranhängen kann? Im Datenblatt stehen immer nur die
berühmten 32768Hz. Und wenn ja müßte man doch auch die internen 36pF
Kondensatoren nehmen können oder?

Ich möchte nämlich eine genaue, niedrige (wegen Stromverbrauch)
Frequenz, mit der ich ein 400Hz Interrupt erzeugen kann.

VDumfG hahgeh.

von Uwe Nagel (Gast)


Lesenswert?

Geht sicherlich, aber woher nimmst du den Quarz?

von Hermann G. (hahgeh)


Lesenswert?

Bei Farnell gibt es auf jeden Fall einen mit 9mm Länge und 3mm
Durchmesser.
Als ich bei google gesucht habe bin ich auf www.geyer-electronic.de
gestoßen, wo es auch welche von 40-100kHz gibt.
Die scheinen auf jeden Fall einigermaßen gebräuchlich zu sein.

von Hermann G. (hahgeh)


Lesenswert?

Auf jeden Fall bin ich schonmal froh, dass das geht, danke :)

von peter dannegger (Gast)


Lesenswert?

400Hz Interrupt bei 40kHz sind ja nur 100 Zyklen, da kannst Du nicht
allzu viel machen.

Schon ein nackter Interrupt kostet 10 Zyklen (nur Ein- und Austritt,
nichts gesichert und gemacht).


Peter

von Hermann G. (hahgeh)


Lesenswert?

Naja, ich hab gedacht ich lege den Controller schlafen, und wenn ein
Interrupt kommt dann schmeiße ich den internen Oszillator an, rechne
ein bißchen und dann wieder sleep().
Hab mich alleridngs noch nicht damit beschäftigt, ob das mit dem
Oszillator einschwingen usw. zu lange dauert.

von Benedikt (Gast)


Lesenswert?

Normalerweise macht man das so:
Den mega(4)8 (ich würde den mega48 nehmen, der ist sparsammer als ein
mega8) betreibt man mit internem 1-8MHz Takt. An Timer 2 kommt ein 32
oder auch 40kHz Quarz. Die Teilerfaktoren stellt man so ein, dass alle
400Hz ein Interrupt erzeugt wird und den AVR aufweckt.
Der Stromverbrauch ist damit nahezu Null, aber während der Messung hat
man die vollen xMIPs zur Verfügung.
Mit 2 1,5V Batterien läuft ein mega48 mit DS1820 Temperatursensor jetzt
schon über einem viertel Jahr.

von Profi (Gast)


Lesenswert?

Das könnte auch mit einem 32768 Hz Quarz gehen:
32768 / 400 = 81,92
32768 / 82 = 399,6097
Wenn es noch genauer gehen soll, den Timerwert 11,5 mal auf 82 und zum
Ausgleich einmal auf 81 setzen (sozusagen ein negatives
Schalt"jahr").
Besser gesagt: von 12 Zyklen müssen 1 mit 81 und 11 mit 82 geteilt
werden, das ist schon recht genau:
12 * 32768 / (1*81+11*82) = 400,0162

Ganz genau ist: von 25 Zyklen müssen 23 mit 82 und 2 mit 81 geteilt
werden, also 11*82 + 1*81 + 12*82 + 1*81 = 2048

(2 + 23) * 32768 / (2*81 + 23*82) = 400

Nebenbei:
Solche Berechnungen mache ich ganz gerne mit dem Windows Calc.
Aufruf mit
 - Windowstaste drücken und loslassen -> Startmenü erscheint
 - u drücken für aUsführen
 - calc eingeben (steht bei mir immer schon da)
 - Enter drücken (Calc startet, einmalig auf Ansicht | Wissenschaftlich
umschalten Alt-a Alt-w)

in den Editor / IExplorer gehen,
die Formel einschließlich =  markieren (z.B. mit Shift-Ende)
(2 + 23) * 32768 / (2*81 + 23*82) =
Strg-c für Kopieren
Alt-Tab für Taskwechsel in den Calc
Strg-v für Einfügen, schon rattert er die Tastendrücke durch und zeigt
mir das Ergebnis, das kann man wieder mit Strg-c kopieren
mit Atl-Tab in den Editor springen
mit Ende-Taste an das Zeilenende
mit Strg-v das Ergebnis einfügen, fertig.

Evtl. Formel vorher öfters pasten und für eine Neuberechnung
modifizieren.

Der Calc ist recht genau (32 Stellen) und kann auch hex (F5) / dez (F6)
/ okt (F7) und bin (F8) (um-)rechnen.
Für diverse Funktionen gibt es Tastenkürzel, die auch mit Copy-Paste
funktionieren, z.B.  1/x ist r , steht alles in der Calc-Hilfe unter
Index | Tastaturentsprechungen und Index | Tastenfolgen.

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.