Verwendung von TCNT0

Gast #6763602
Lesenswert?
• ▲
▼
Hallo
Bei der Verwendung des Timers 0 habe ich im Netz, auf AVR GCC und im 
Datenblatt TCNT0 gefunden.
Da steht zum Beispiel:

Timer/Counter Daten Register Timer 0
Dieses ist als 8-Bit Aufwärtszähler mit Schreib- und Lesezugriff 
realisiert. Wenn der Zähler den Wert 255 erreicht hat, beginnt er beim 
nächsten Zyklus wieder bei 0.

Als Beispiel dazu:
1
void timer0_init()            // Timer 8 Bit, 8MHz, 1ms
2
    {                    // Timer 0 konfigurieren
3
    TCCR0A = (1<<WGM01);          // CTC Modus
4
    TCCR0B = (1<<CS01)|(1<<CS00);      // Prescaler 64
5
    TCNT0=1;
6
    OCR0A=124;              // Wert für 1ms
7
    TIMSK0|=(1<<OCIE0A);          // Interrupt erlauben
8
    }
Bei einem anderen Teil steht dann TCNT0=0 drin. Wenn ich mir die 
Funktion im DB ansehe bin ich ganz durcheinander.
Einige sagen es muss sein andere brauches nicht.
Was stimmt den nun oder bin ich wieder zu blöd um es zu verstehen?
(Firma: matzetronics) #6763612
Lesenswert?
• ▲
▼
Bei dieser Initialisierung läuft der Timer eben einmal von 1 bis 255 und 
löst dann den Interrupt aus. Dann startet er aber wieder bei 0. Nur der 
erste Lauf ist also etwas kürzer. Ist meistens Quak, das so zu 
schreiben, es sei denn, in der ISR wird TCNT0 wieder mit 1 vorbelegt.
Wird der Timer nur einmal nach dem Reset initialisiert, kann man sich 
TCNT0 = 0 ebenfalls sparen, da 0 nach Reset sowieso im TCNT0 Register 
steht.
Gast #6763666
Lesenswert?
• ▲
▼
Klaus schrieb:

> Wenn ich das richtig verstanden habe kann man sich TCNT0 bei CTC sparen.

TCNT0 (TCNTx) kann man sich fast generell sparen. Nur in einigen wenigen 
Anwendungen ergibt es einen Sinn, jemals auf das Zählerregister 
schreibend zuzugreifen.

Und bei genauerer Betrachtung sind das obendrein auch noch fast immer 
Anwendungen, bei denen das nicht nötig wäre, wenn man ein wirklich für 
die konkrete Anwendung geeignetes Timerfeature verwendet hätte...

Letztlich bleiben also noch sehr viel weniger Anwendungen über, bei 
denen es wirklich sinnvoll ist, schreibend auf das Zählerregister 
zuzugreifen.
Gast #6763711
Lesenswert?
• ▲
▼
Harry L. schrieb:
>> oder bin ich wieder zu blöd um es zu verstehen?
> Wenn du so fragst....JA!
> Steht alles haarklein im Datenblatt!

... und danke für die Blumen. Leider hält sich meine Intellegenz in 
Grenzen die mich sehr stören. Leider bin ich zu dumm um das zu ändern.
Das hat aber einen Vorteil: Ich darf die blöden Fragen stellen und 
darüber freue ich mich sehr.
Danke für eure Hilfe
LG Klaus
Gast #6763932
Lesenswert?
• ▲
▼
Klaus schrieb:
> Harry L. schrieb:
>>> oder bin ich wieder zu blöd um es zu verstehen?
>> Wenn du so fragst....JA!
>> Steht alles haarklein im Datenblatt!
>
> ... und danke für die Blumen. Leider hält sich meine Intellegenz in
> Grenzen die mich sehr stören. Leider bin ich zu dumm um das zu ändern.
> Das hat aber einen Vorteil: Ich darf die blöden Fragen stellen und
> darüber freue ich mich sehr.
> Danke für eure Hilfe
> LG Klaus

Na, dass das noch kein Moderator gelöscht hat 🤔
#6763982
Lesenswert?
• ▲
▼
Klaus schrieb:
> Harry L. schrieb:
>>> oder bin ich wieder zu blöd um es zu verstehen?
>> Wenn du so fragst....JA!
>> Steht alles haarklein im Datenblatt!
>
> ... und danke für die Blumen. Leider hält sich meine Intellegenz in
> Grenzen die mich sehr stören. Leider bin ich zu dumm um das zu ändern.
> Das hat aber einen Vorteil: Ich darf die blöden Fragen stellen

Nein, darftst du nicht. Zumindest nicht, ohne dafür Feuer zu kriegen.

Deine Fragen zeigen, daß du dich NULL mit den Timern auseinander 
gesetzt hast. Deswegen geht auch alles drunter und drüber. Es gibt einen 
Timer0, der ist 8 Bit breit und dessen Zählerstand kann aus TCNT0 
gelesen (oder ein neuer Wert dahin geschrieben) werden. Aber der Zähler 
hat verschiedene Betriebsmodi, in denen er sich unterschiedlich verhält.

Und das steht alles haarklein im Datenblatt. Nicht "im Netz" oder "auf 
AVR GCC". Und wenn du es schon im Datenblatt nicht liest, warum sollen 
wir es dann für dich nochmal aufschreiben?

Damit du es wieder nicht liest?
Gast #6764811
Lesenswert?
• ▲
▼
Servus,

ich würde es so zusammenfassen:

Mit dem TCNT0 Register kann man verrückte Sachen anstellen (positiv wie 
negativ).
Zu 99,9999% möchte man das nicht machen.
Wenn man so wenig Erfahrung mit AVR's und Timern hat, daß man danach 
fragen muß: Dann glaube ich nicht, daß man so verrückte Sachen machen 
möchte, daß man Zugriff auf dieses Register benötigt.
Wenn man wirklich verstanden hat, was man mit diesem Register an 
Timer-Funktion darstellen möchte, dann hat man den AVR so weit 
verstanden, daß man nicht mehr fragen muß.

Gruß

Robert
Beitrag #6764812 wurde von einem Moderator gelöscht.
Gast #6764830
Lesenswert?
• ▲
▼
Leider stimmt deine Vermutung nicht ganz. Bei dieser Frage ging es nicht 
um den Attiny841 sondern um den Atmega 8 bzw 32, oder eben eine 
allgemeine Frage.
Trotzdem hast du die Frage zu Anfang nicht korrekt gelesen. Es gibt viel 
mehr um die Beispiel auf den Seiten, bei manchen steht es drin bei 
anderen nicht.
Wenn es drin steht haben auch andere den Sinn nicht verstanden.
Es ging dabei nicht um bestimmte Betriebsarten sondern ganz allgemein.
Warum darf man nicht fragen wenn man den einen oder anderen Teil der 
Technik nicht versteht oder unklar ist. Der Sinn dieses Forums besteht 
auch darin anderen zu Helfen und nicht an den Pranger zu stellen.
Gast #6764927
Lesenswert?
• ▲
▼
Klaus schrieb:
> Leider stimmt deine Vermutung nicht ganz. Bei dieser Frage ging es
> nicht
> um den Attiny841 sondern um den Atmega 8 bzw 32, oder eben eine
> allgemeine Frage.
> Trotzdem hast du die Frage zu Anfang nicht korrekt gelesen. Es gibt viel
> mehr um die Beispiel auf den Seiten, bei manchen steht es drin bei
> anderen nicht.
> Wenn es drin steht haben auch andere den Sinn nicht verstanden.
> Es ging dabei nicht um bestimmte Betriebsarten sondern ganz allgemein.

Hallo Klaus

Du verstehst weder die Datenblätter noch bist Du fähig, Dich 
auszudrücken 🤷‍♂️ (Siehe das zitierte Gefasel - was willst Du damit 
sagen?)

Woher soll der geneigte Leser wissen, welchen Prozessor Du meinst, wenn 
Du ihn nicht explizit benennst?

Du kopierst irgendwelche Codeschnipsel aus dem Netz hirnlos zusammen und 
erwartest, dass sich jemand dann erbarmt und Dir die Funktion erklärt.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren