Hi,

ich habe einen Timer für COMPA-Interrupt gebaut, der mir alle 50 µs einen Interrupt liefert. Die ISR zählt eine Variable hoch bis 20000 und bei diesem Wert wieder auf 1 mit Hochzählen einer Sekundenvariable. Beide sind uint_16. Damit kann ich auf 50 µs genau, das ist 1/20 Millisekunde, länger als einen halben Tag messen. Wenns noch genauer werden soll, müsste ich den aktuellen Timerstand auslesen. Beide Variablen können zwischen sei(); und cli(); sauber ausgelesen werden und liefern mir für Drehzahlmessung und -regelung von Motoren, Geschwindigkeitsberechnung eines Fahrzeugs und eben alle zeitrelevanten Operationen eine präzise "Bordzeit". Sogar ein Servo wird von der ISR etwas tricky aber recht codesparend angefahren.