PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Clock, SysSecElapsed, Syssec - Zeitmessen



dj_cyborg
21.04.2014, 11:50
Hallo,

ich wollte lt. Bascom Hilfe (http://avrhelp.mcselec.com/index.html?syssec.htm), eine Zeit messen.

Ich bekomme mit folgenden Code ständig folgende Ausgabe "Now it's 0 seconds later 23155200". Die interne Uhr scheint also zu stehen.

Was mache ich falsch?

Danke für Eure Hilfe.


$regfile = "m88adef.dat"
$crystal = 8000000
$hwstack = 48
$swstack = 48
$framesize = 48
$baud = 500000


Enable Interrupts
Config Clock = Soft

Dim Lsystemtimestamp As Long
Dim Lsystemsecondselapsed As Long

Lsystemtimestamp = Syssec()
Print "Now it's " ; Lsystemtimestamp ; " seconds past 2000-01-01 00:00:00"


Do

Wait 3
Lsystemsecondselapsed = Syssecelapsed(lsystemtimestamp)
Print "Now it's " ; Lsystemsecondselapsed ; " seconds later " ; Lsystemtimestamp


Loop

End

peterfido
21.04.2014, 13:22
Ja, ich hatte auch schonmal Probleme mit den Zeitfunktionen. Geholfen hatte mir damals eine Dummyauslesung von Time$ oder den _hour,_minute,_sec Variablen. Bin mir da nicht mehr so sicher.

Mangels Testhardware kann ich das grad nicht nachstellen. Und Zeitfunktionen laufen nicht vernünftig im Simulator.

dj_cyborg
21.04.2014, 14:02
Hallo peterfido,

und Danke für deine Antwort.

Ich werde das mal testen.

Ich möchte eigendlich nur die Zeit, die ich für einen Schleifendurchlauf brauche, messen.

Mit einen Timerinterrupt unterbricht es mir ja ständig die zu messende Hauptschleife.

Gibt es dafür evtl. eine bessere Variante? Diese sollte aber das Ergebniss nicht allzu sehr verfälschen?

Momentan messe ich die Zeit zwischen 2 Print Ausgaben, die ich aller 1000 Schleifendurchläufe mache, am PC.

Dabei komme ich etwa auf 2,8-3ms pro Schleifendurchlauf. Ich hätte aber es auch gern einmal die Zeit im MC gemessen.

Danke

mfG
Mario

peterfido
21.04.2014, 14:16
Da ein Interrupt nicht bei jedem Durchlauf der Hauptschleife erfolgen muss, würde ich mehrere Durchläufe, z.b. 1000, nehmen und dann eine mittlere Durchlaufzeit ermitteln. Wobei das Ermitteln und Hochzählen einer Variable auch wieder etwas Zeit benötigt, welche nach dem Herausnehmen dieses Ermittelns wieder abgezogen werden müsste, um genauer zu werden...