Hi Ich wollte ein Laufzeitmessung in meine Applikation einzubauen. Anfangs wollte ich den Timer 1 dazu verwenden. Hab mir aber dann gedacht es vielleicht mit dem SysTick besser funkt. Meine Frage ist ob der SysTick nur als Timer verwendet werden kann, der jede ms einen interrupt auslöst oder kann man auch eine "variable" Zeit messen? Also kann man den Systick speichern und dann nach ca. 15 ms von dem aktuellen Tick den gespeicherten abziehen das man die Zeit verstriche Zeit rausbekommt?? Lg Markus
Also soweit ich weiß lässt sich der SysTick Timer variabel einstellen. Frag mich aber gerad nicht wo welches Register womit zu beschreiben ist. Aber prinzipiell müsste das gehen.
MArkus schrieb: > Also kann man den Systick speichern und dann nach ca. 15 ms von dem > aktuellen Tick den gespeicherten abziehen das man die Zeit verstriche > Zeit rausbekommt?? Klar doch. Aber Obacht, der ist keine 32 Bits breit.
Den Systick einfach laufen lassen. - Zu Beginn Wert auslesen. - Am Ende zweiten Wert lesen. Wert Ende - Wert Beginn = Takte dazwischen
Markus Müller schrieb: > Wert Ende - Wert Beginn = Takte dazwischen Fast. Ich glaube der zählt rückwärts. Und wenn du es umdrehst, dann wird die Laufzeit trotzdem ab und zu negativ sein, nämlich wenn auch bei nur kurzer Messzeit der Systick zwischendrin überläuft. Muss man also ggf. korrigieren (2**24 draufaddieren).
> Klar doch. Aber Obacht, der ist keine 32 Bits breit.
Also ist es vielleicht doch besser einen Timer für die Aufgabe zu
verwenden. Da kann man mit einem Interrupt feststellen ob der Timer
schon überlaufen ist.
MArkus schrieb: > Also ist es vielleicht doch besser einen Timer für die Aufgabe zu > verwenden. Da kann man mit einem Interrupt feststellen ob der Timer > schon überlaufen ist. Kann man beim Systick auch. Nein, der Systick ist schon ok dafür. Man muss halt vorher das Limit kennen, d.h. wenn der unskaliert bei vollen 72MHz läuft, dann ist dank der 24 Bits bei einer Viertelsekunde Anschlag.
Ich weiß das ich mit
1 | SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK); |
2 | SysTick_Config(SystemCoreClock / 1000); // = 1ms |
Den SysTick einstellen kann dass jede ms ein Interrupt geschickt wird. Wie ist denn die einstellung wenn ich einen überlaufinterrupt brauche? Und wie kann ich mir den Momentanwert von dem Counter ausgeben lassen?? Lg
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.