www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik SysTick STM32


Autor: MArkus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Rene B. (themason) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Markus Müller (mmvisual)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Den Systick einfach laufen lassen.
- Zu Beginn Wert auslesen.
- Am Ende zweiten Wert lesen.

Wert Ende - Wert Beginn = Takte dazwischen

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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).

Autor: Arne (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oder den Cycle Counter nehmen. Der ist m.W. 32bit breit. Liegt bei 
0xE0001004.

Autor: MArkus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 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.

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: MArkus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich weiß das ich mit
SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK);
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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.