Hallo,
ich habe die Zeitmessung aus dem Tutorial von Christian Schifferle
nachgebaut (zwei Taster, und die Zeit zwischen dem Betätigen der beiden
Taster wird gemessen: Beitrag "C Anfänger Tutorial AVR" ), mein
Atmega8 steht noch mangels Oszi auf dem internen Takt, als Prescaler
habe ich 1024.
Wenn ich die Zeitmessung nun starte, verliert er in ca. 3 Min eine
Sekunde, kann das an der Ungenauigkeit des internen Oszillators liegen?
der entscheidene Codeschnipsel:
1 | void calc_time(unsigned short int tmp) //Übergeben wird die Anzahl der Überläufe
|
2 | {
|
3 | unsigned short int nTicks; // für das was bei Abbruch noch in ICR1 steht
|
4 | unsigned long int zeit; // wird berechnet
|
5 |
|
6 | nTicks=TCNT1; //
|
7 | zeit = (tmp * 65536 + nTicks)*10000/9765625; //Berechnung der Zeit
|
8 | lcd_number(zeit);
|
9 | }
|