Ja so etwas habe ich schon gemeint, nur wundert es mich dass ich den Timer allein durch den einen Befehl starte und sonst nichts einstellen muss.
Dass heißt dann ich kann so eine Timerfunktion schreiben:
Code:void timer(){ TCCR0 = 0x05; TIFR = 0; while(TIFR == 0); TIFR = 0; }
Ich bin es in der Schule gewöhnt wo wir ein Trainigsboard haben allerdings mit einem anderen µController dass man ebenfalls einen wert einstellen muss sodass der Timer z.b. anstatt von 0 bei 100 anfängt um so genau zu sagen wie lang der timer für einen durchlauf benötigt.
In der Schule haben wir das immer so gemacht:
Um den Wert der von 0xffff abgezogen wird zu berechen haben wir diese Formel verwendet:Code:void wait(){ TR0 = 0; // Timer wird gestoppt TL0 = (0xffff-16666)%256; // Einstellung für TH0 = (0xffff-16666)>>8; // 10ms Timer TF0 = 0; // Timer Flag wird auf 0 gesetzt TR0 = 1; // Timer wird gestartet while(TF0 == 0); // warten solange Timer läuft TF0 = 0; // Timer wird wieder gestoppt }
Anzahl der Takte = Zeit(z.B. 10ms) / 0,6µs = 16666
Ist sowas hier bei dem Timer des ATMEGA8 nicht nötig oder möglich?????
Danke







Zitieren

Lesezeichen