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:
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
}
Um den Wert der von 0xffff abgezogen wird zu berechen haben wir diese Formel verwendet:
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
Lesezeichen