Hallo Stefan,
ich habe das Programm in der Tat sinngemäß vereinfacht.
Ich habe mich dem 32-bit Software Timer-Modell von PeterDanegger
bedient. Die OVF Routine sieht daher so aus:
1 | ulTimer1Software += 65536; // Variable ist 32-bit
|
Ich lese das Input Capture dann aus:
und berechnete daraus meine Endzeit:
1 | EndTime = ulTimer1Software+usTimer1Stand; // EndTime ebenfalls 32-bit
|
im Anschluss wird nach einer Messung der Startzeit die Endzeit
zugewiesen:
1 | StartTime = EndTime //(da die Startzeit für die nächste Messung die Endzeit der alten Messung ist); Startzeit ebenfalls 32-bit
|
Ich rechne daher die Zeiten komplett in 32-bit, sodass ich diese nur
voneinander subtrahieren muss.
Selbst den Fall, dass OVF und ICP gleichzeitig auftauchen habe ich
berücksichtigt, so wie es PeterDanegger in dem Beispiel getan hat.
Mir geht es eigentlich nur um das Prinzip, ob man sagen kann, dass ein
interner Oszi so genau sein kann oder nicht. Im Prinzip misst das ganze
ja auf 1024 Timertakte genau, was bei 32-bit "relativ" gering ist. Daher
sollte das Programm zur Messung eigentlich korrekt sein und ich vermute
tatsächlich das Problem an den beiden interenen Oszis.
Werde mir wohl im neuen Jahr schnell einen Quarz besorgen und das
durchsimulieren...