mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Timer-Auslegungsfrage beim ATtiny25


Autor: Helftmirbitte (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

wie muß man beim ATtiny25 entweder TIMER0 oder TIMER1 auslegen, damit 
man die Periodendauer eines Pulses mit einem Frequenzbereich von ca. 
5-250Hz messen kann?

Meine Idee ist es einen 16-bit Zähler aus einem der Timer zu 
realisieren.
Welchen TIMER soll ich dazu nehmen?
Wie ermittelt man die passende Taktfrequenz und den passenden 
Prescalerwert?
Im Datenblatt des ATtiny25 werden mehrere mögliche Taktfrequenzen 
genannt, z.B. 6,4, 8,0, 25,6 und 64 MHz.

Bitte helft mir mal auf die Sprünge, ich blicke da nicht richtig durch. 
Vielen Dank!

Autor: michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo.

du wirst es wahrscheinlich so machen (müssen):
- die zu messende frequenz liegt am externen interrupt
- der externe interrupt triggert auf die steigende flanke
- bei jedem externen interrupt ermittelst du die periodendauer und setzt 
den timer zurück (der timer muß einen over- oder underflow-interrupt 
auslösen können)
- bei jedem timer-interrupt zählst du deinen "meßwert" um 256 hoch (hast 
ja nur 8bit-timer zur verfügung)

wie schnell du zählen kannst/darfst/mußt, hängt von den zu messenden 
frequenzen, der geforderten genauigkeit und von deinen datentypen ab.

beispiel:
bei der minimal zu messenden frequenz (5Hz) ist die periodendauer 0,2s.
dein ergebnis soll in einer unsigned 16bit-variable abgelegt werden, 
darf also maximal 65536 groß werden.
65536 / 0,2s = 327680Hz.
deine timerfrequenz darf also höchstens 327,68kHz sein.

bei 250Hz ist die periodendauer 0,004s. wenn du hier mit 327,68kHz 
zählst, "mißt" du ca. 1310.

ob's die timer des tiny25 hergeben, die frequenz so genau einzustellen, 
weiß ich leider nicht. aber das kannst du ja selbst nachlesen :-)

gruß

michael

Autor: Helftmirbitte (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Antwort! Das ist ein gutes Konzept.

Mit welcher Taktfrequenz und welchem Prescaler komme ich den errechneten 
327kHz am nächsten?


Taktfreq.     Presc.
6.4 MHz:      19,5 -> real 16
8.0 MHz:      24   -> real 32
25.6 (?)      78   -> real 64 ???
64   (?)

Ist es richtig, daß auch 25,6 und 64 MHz zur Verfügung stehen?
An dieser Stelle verstehe ich das Datenblatt nicht.

In wie weit kann ich den RC-Oszillator vertrimmen, um zu Taktfrequenzen 
zu kommen, die meinen Anforderungen eher entsprechen?

Autor: michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo.

die maximale taktfrequenz ist 8MHz, wenn du über den internen 
RC-oszillator gehst.

und diese frequenz kannst du für den timer nochmal durch definierte 
werte teilen (/2, /4, /8, /64, usw.).

für timer 1 gibt's noch eine PLL, die kann dir dann 64MHz (geteilt durch 
eine potenz von 2) zur verfügung stellen. nützt dir hier aber nix.

dein teiler ist idealerweise 8MHz (bzw. 6,4MHz) / 327kHz, also 24,46 
(bzw. 19,57). der nächstmögliche wert, den du einstellen kannst, ist 32. 
damit kommst du auf 250kHz zähltakt.

wenn du dein meßergebnis anders skalieren willst (z.b. "ich will bei xHz 
einen zählerstand von y haben, weil sich damit leichter rechnen läßt") 
ändern sich die werte natürlich.

gruß

michael

Autor: Helftmirbitte (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Prima, das Prinzip habe ich verstanden! Bei 8,0 MHz und Vorteiler 32 -> 
250 kHz Zählfrequenz komme ich auf eine untere Signalgrenzfrequenz von 
3,8 Hz bis zum 16 bit Überlauf des Zählerworts. Bei 250 Hz 
Signalfrequenz erhalte ich immernoch 1000 Inkremente im Zählerwort. Mit 
den Daten gehe ich mal ins Rennen.

Daß die 64 MHz nichts bringen verstehe ich jetzt.
Wie ist es mit den 25,6 MHz?

Im Datenblatt steht, daß man den internen RC-Oszillator nur um maximal 
10% vertrimmen soll. Ist das tatsächlich so oder ginge auch mehr?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.