Forum: Mikrocontroller und Digitale Elektronik Timer des ATtiny 2313


von Achim S. (achims)


Lesenswert?

Hallo
bin auf der such nach Infos zum ATtiny 2313. Habe mur das Datenblat 
gelden und gelesen. Dort stehen die Anzahl der Timer drin mit den Bit, 
die Einstellungen der einenzelnen Mode, die Prescaler usw.
Es steht was zum Register A und B ( OCROA (B) ) drin.
Was ich nicht begriffen habe ist der Zusammenhang dabei.
Wenn ich z.B. den Timer 0 (8 Bit) mit 16MHz betreibe, wie muss ich dan 
Register A und/oder B einstellen? Auf was bezieht sich der Prescaler?
Kann mir jemand dabei weiterhelfen?
achim

von c-hater (Gast)


Lesenswert?

Achim Seeger schrieb:

> bin auf der such nach Infos zum ATtiny 2313.

Nicht wirklich.

> Habe mur das Datenblat
> gelden und gelesen. Dort stehen die Anzahl der Timer drin mit den Bit,
> die Einstellungen der einenzelnen Mode, die Prescaler usw.

Da steht noch viel mehr drin, nämlich u.a. eine detaillierte 
Beschreibung der Funktionsweise sämtlicher unterstützter Timermodi.

> Was ich nicht begriffen habe ist der Zusammenhang dabei.

Dann hast du den Beschreibungsteil des DB nicht gelesen oder nicht 
verstanden.

> Wenn ich z.B. den Timer 0 (8 Bit) mit 16MHz betreibe, wie muss ich dan
> Register A und/oder B einstellen?

Das hängt natürlich von der Anwendung ab. Also davon, was der Timer 
darin genau tun soll.

> Auf was bezieht sich der Prescaler?

Das ist einfach. Der teilt einfach nur den Systemtakt durch einen 
einstellbaren Faktor, um den Betriebstakt für den Timer bereitzustellen. 
Der Prescaler spielt also für die Verständnis der Timerfunktionen 
eigentlich weiter keine Rolle. Es ist genau andersrum: man legt die 
Funktion fest, die der Timer erfüllen soll, berechnet den zur Erfüllung 
dieser Funktion nötigen Timertakt (bzw. eher meist: Taktbereich) und 
wählt den Prescaler dann so, daß der Muttertakt, geteilt durch den 
Prescalerfaktor, in genau diesem Bereich landet.

von Christian O. (hightec)


Lesenswert?

Achim Seeger schrieb:
> Hallo
> bin auf der such nach Infos zum ATtiny 2313. Habe mur das Datenblat
> gelden und gelesen. Dort stehen die Anzahl der Timer drin mit den Bit,
> die Einstellungen der einenzelnen Mode, die Prescaler usw.
> Es steht was zum Register A und B ( OCROA (B) ) drin.
> Was ich nicht begriffen habe ist der Zusammenhang dabei.
> Wenn ich z.B. den Timer 0 (8 Bit) mit 16MHz betreibe, wie muss ich dan
> Register A und/oder B einstellen? Auf was bezieht sich der Prescaler?
> Kann mir jemand dabei weiterhelfen?
> achim

Was genau hast du denn für Fragen?

Die Register OCR0A und B stehen für den Output Compare Wert. Huer kommt 
es auch darauf an in welchem Modus du den Timer betreiben willst.
Die beiden Register brauchst du z.B. im CTC-Modus. Hier zählt der Timer 
taktgebunden hoch und vergleicht stetig den Wert in OCR0x mit dem 
aktuellen Wert des Timers. Ist der Timer auf dem gleichen wert wir OCR0x 
kann man damit z.B ein interrupt auslösen.

Der Prescaler gibt an wie schnell der Timer inkrementiert wird.
Entweder wird der Timer bei jedem Takt hochgezählt oder erst bei jedem 
8. , 16., usw (je nachdem wie der Prescaler eingestellt wird.

Also:
Anzahl der Takte zum inkrementiere = Takt/Prescaler

von Achim S. (achims)


Lesenswert?

Danke für die Antworten
Rechne mal:
- 16 MHz sind 16 000 000 Takte je Sekunde  Takt soll 10 ms sein  CTC 
Mode
- möchte 8 Bit Zähler nutzen 0-255 (256)
- bei 10 ms bis 256 zählen sind je Sekunde 25600 mal
- 16 000 000 : 25600 = 625
- Prescaler auf 1024 gesetzt / Nach Datenblatt
- 16 000 000 : 1024 = 15625 Takte für den Timer je Sekunde
- 15625 : 100 = 156
- im CTC Mode einstellen auf 156 oder 157? Ungenau?
- beim erreichen des eingestellten Wertes löse ich einen ISR aus, Zähler 
von vorn

Wie ihr seht geht das mit den 8 Bit und der Einstellung und verstehe es
Was mache ich aber mit den Registern A und B im CTC Mode bzw für was 
nutze ich diese überhaupt
Leider versteh ich das Datenblatt nicht so richtig. Bei diesen 
technischen Sachen bringen manche übersetzer ganz schön mi.. raus
achim

von Luke (Gast)


Lesenswert?

Achim Seeger schrieb:
> Danke für die Antworten
> Rechne mal:
> - 16 MHz sind 16 000 000 Takte je Sekunde  Takt soll 10 ms sein  CTC
> .
> .
> - im CTC Mode einstellen auf 156 oder 157? Ungenau?
> - beim erreichen des eingestellten Wertes löse ich einen ISR aus, Zähler
> von vorn
>
> Wie ihr seht geht das mit den 8 Bit und der Einstellung und verstehe es
> Was mache ich aber mit den Registern A und B im CTC Mode bzw für was
> nutze ich diese überhaupt

Beim Timer0 ist das OCR0A das Vergleichsregister für den CTC-Mode. Da 
kommt deine 156 bzw 157 rein. Also CTC Mode mit dem WGM1-Bit im TCCR0A 
einstellen und 156 bzw 157 in das OCR0A Register schreiben. Dann läuft 
der Timer mit deinen oben ausgerechneten Werten und erzeugt bei TCNT0 
Stand 156 bzw 157 (je nach OCR0A) einen Output Compare Interrupt - wenn 
der Interrupt auch enabled ist.

von Thomas E. (thomase)


Lesenswert?

Achim Seeger schrieb:
> Wie ihr seht geht das mit den 8 Bit und der Einstellung und verstehe es
> Was mache ich aber mit den Registern A und B im CTC Mode bzw für was
> nutze ich diese überhaupt

Für CTC brauchst du nur eins.
Aber bei einer PWM kannst du damit 2 Kanäle ansteuern.

mfg.

von Achim S. (achims)


Lesenswert?

Begreiffe langsam. Leider reicht mir das als Antwort noch nicht. Wie 
rufe ich Register a oder b oder beide auf? Bei welchem Mode kann ich es 
nutzen? Wie kann ich die Zeit messen? z.B. Dauer eines Impulses?
achim

von Luke (Gast)


Lesenswert?

Achim Seeger schrieb:
> Begreiffe langsam. Leider reicht mir das als Antwort noch nicht. Wie

Lern Englisch fürs Datenblatt! Bis dahin kannst du es mit 
deutschsprachigen Behelfen versuchen zB
http://rn-wissen.de/wiki/index.php/Timer/Counter_%28Avr%29
http://www.mikrocontroller.net/articles/AVR-Tutorial:_Timer

von Alexander S. (alesi)


Lesenswert?

Achim Seeger schrieb:
> Wenn ich z.B. den Timer 0 (8 Bit) mit 16MHz betreibe, wie muss ich dan
> Register A und/oder B einstellen? Auf was bezieht sich der Prescaler?
> Kann mir jemand dabei weiterhelfen?

Achim Seeger schrieb:
> Leider versteh ich das Datenblatt nicht so richtig. Bei diesen
> technischen Sachen bringen manche übersetzer ganz schön mi.. raus

Hallo,

hier gibt es Anleitungen in deutsch:

https://www.mikrocontroller.net/articles/AVR-Tutorial:_Timer

http://www.weigu.lu/a/pdf/MICEL_C2_Timer.pdf

http://www.avr-asm-tutorial.net/avr_de/seminar2/Seminar2.pdf  (ab S. 27)

von Christian O. (hightec)


Lesenswert?

Am besten probierst du ein wenig rum (so blöd es klingt)
Ich habe die Timer damit am besten verstanden.
Ein wenig herumprobiert was die verscheidenen prescaler und Modis anging 
und mir immer eine entsprechende ausgabe auf einem lcd ausgeben lassen. 
So gings dann recht einfach..

Aber am wichtigsten ist: Lesen Lesen Lesen..
Manchmal hilft es, sich das Datenblatt auch 2 oder 3 mal durch zu lesen 
und auch die Diagramme mal genauer zu betrachten. Die sind nämlich gar 
nicht so übel.

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.