ATmega8 40kHz Quarz

OP #306057
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.
Gast #306061
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
OP #306062
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.
Gast #306063
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.
Gast #306064
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.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.