Forum: Mikrocontroller und Digitale Elektronik SysTick Counter


von Mike (Gast)


Lesenswert?

Hallo,

ich habe eine Frage bezüglich des SysTickCounters.
Dieser soll der einzigste prozessorunabhängige Zeitstempel im 
Cortex-Kern sein.

Das Wort prozessorunabhängig bringt mich hier etwas durcheinander.

Was ist damit genau gemeint ?
Ich meine, wenn ich im Code den Counter-Wert auslese, bin ich doch im 
Prinzip schon wieder prozessorabhängig ?

Mike

von Sebastian R. (sebastian_r569)


Lesenswert?

Das ist halt ein eigener Timer.
Egal, was die CPU macht und wie ausgelastet sie ist, der SysTick läuft 
unabhängig davon konstant weiter, weil komplett in Hardware gegossen.

von Bauform B. (bauformb)


Lesenswert?

Mike schrieb:
> Das Wort prozessorunabhängig bringt mich hier etwas durcheinander.

mich auch, wo hast du das denn gefunden?

Sebastian R. schrieb:
> Egal, was die CPU macht und wie ausgelastet sie ist, der SysTick läuft
> unabhängig davon konstant weiter, weil komplett in Hardware gegossen.

Nicht ganz, der systick wird mit dem CPU-Takt getaktet. Wenn du den 
umschaltest, musst du auch den systick-Teiler anpassen. Alles genau so, 
wie bei jedem anderen Timer.

Mike schrieb:
> Ich meine, wenn ich im Code den Counter-Wert auslese, bin ich doch im
> Prinzip schon wieder prozessorabhängig ?

Jein, die Idee von ARM war, dass du auf jedem Cortex-M von jedem 
Hersteller die gleichen Maschinenbefehle und Adressen verwenden kannst. 
Alle anderen Timer "gehören" dem Chip-Hersteller und sind überall 
verschieden, der systick gehört ARM und sollte immer gleich aussehen. 
Ein anderer Vorteil: der systick ist extrem einfach aufgebaut und 
benutzbar.

von fop (Gast)


Lesenswert?

Hm, da war wahrscheinlich gemeint im Vergleich zu einer for-Schleife im 
Code, die Zeit vertrödelt. So eine Schleife ist natürlich abhängig, 
davon, wie gut der Compiler optimiert und welche Interrupts sie 
unterbrechen.
Oder noch heftiger händisch nachgezählten Zyklen zur Abarbeitung eines 
Stückes Code. Was bei mehreren Verzweigungen des Programmablaufs zu 
einer echten Aufgabe werden kann.

Der einzige Timer ist es auch oft nicht, Aber immerhin der eine, den Arm 
zusammen mit dem Core liefert, so dass er bei eigentlich allen Chips mit 
Arm-Core in dieser Form vorhanden ist.

von Axel S. (a-za-z0-9)


Lesenswert?

Mike schrieb:
> ich habe eine Frage bezüglich des SysTickCounters.
> Dieser soll der einzigste prozessorunabhängige Zeitstempel im
> Cortex-Kern sein.

Dieser Satz ist sehr überspezifisch, wegen "im Cortex-Kern". Denn 
natürlich sind alle anderen Timer ebenfalls prozessorunabhäng, werden 
aber als Peripherie angesehen und nicht als Teil des Kerns. Andererseits 
kann man streiten, ob der systick-Zähler nicht auch Peripherie ist.

> Das Wort prozessorunabhängig bringt mich hier etwas durcheinander.
> Was ist damit genau gemeint?

Daß der Zähler zählt, ganz egal was der Prozessor gerade macht. Auch 
dann, wenn der Prozessor gerade schläft (wfi und Freunde), zählt der 
trotzdem weiter.

> Ich meine, wenn ich im Code den Counter-Wert auslese, bin ich doch im
> Prinzip schon wieder prozessorabhängig ?

Das Auslesen ist keine Operation, die den Zähler als solchen irgendwie 
beeinflußt. Der zählt so oder so weiter.

von Mike (Gast)


Lesenswert?


von temp (Gast)


Lesenswert?

Das bedeutet nur, dass diese Systick-Timer bei allen Cortexen (M0-Mx) 
vorhanden ist. Egal ob ST, NXP, Atmel u.s.w. Alle anderen Timer sind 
herstellerübergreifend nicht vergleichbar da jeder seine eigene Suppe 
kocht.

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
Noch kein Account? Hier anmelden.