Grüß Dich Geargineer,... Zeitmesser (Auflösung 0,01 Sek.) ...
durch Deinen Ansatz bin ich mal etwas in diese Idee eingestiegen. Insbesondere die mögliche Auflösung und Zeitkonstanz hatte mich da interessiert. Vielleicht interessiert Dich mein Ergebnis. (Na ja - wie so oft bei mir - tldr)
Meine Atmelcontroller machen ja immer wieder zeitlich basierte Aufgaben (Gestik des Controllers, Motor-Drehzahlsteuerung-Fahrantriebe, auch Gelenke) etc etc. Die Timer basieren bei mir üblicherweise auf einem Timerinterrupt mit 50 µs Zeitbasis. (Anm.: ich habe auch - bis auf einen - meine arduino-nanos auf 20 MHz umgequarzt).
........ISR(TIMER2_COMPA_vect) ; // Routine zählt hoch mit 50 µs
Nun habe ich leider keine wirklich gute Zeitbasis. Na gut, die Auflösung meines Analog Discovery 2 scheint mir - laut Reference Manual von 2015 - besser als 0,1 % zu sein.
Also habe ich die letzten Tage mal den Timer2 (mega328p ) genutzt um nen Ausgang zu schalten. Ohne jetzt Kenntnis über die Genauigkeit meines Analog Discovery (Reference Manual von 2015) zu haben, lese ich aus dem Handbuch eine Genaugikeit von besser als 0,1 % heraus. Damit hatte ich den Timer
....void TC2TMR_init(void) // Init Tmr/Cntr 2, 50 µs
..{
.... TCCR2A |= (1<<WGM21); // Timer im CTC-Mode, Top=OCR2A S 161
.....TCCR2B |= (1<<CS21); // Prescaler 1/8 / Clock <- CPU S 163
.....OCR2A = 124; // Preset 124 => 50µs <=> 20000/sec Ips bei 20 Mhz . . . . .
mit 19999, 20000 und 20001 Ticks gemessen. Die Konstanz bei 20000 war besser als 50,2 ± 0,6 µs.
Bei der Messung lief "nebenher" noch ein bisschen Motorsteuerung/-regelung mit 200 Hz
Damit kann ich gut leben.
PS: vergessen: Zeit- und Temperatureinfluss des Controllerquarzes wurden auch nicht berücksichtigt (dabei wärs gestern vorm Fenster mit "deutlich unter Null" ganz easy gewesen).







Zitieren

Lesezeichen