Forum: Mikrocontroller und Digitale Elektronik STM32F4Discovery Systick Verständnisproblem


von Ticker (Gast)


Lesenswert?

Man kann ja die Systicks folgendermaßen angeben:
1
SysTick_Config(SystemCoreClock/1000); //SystemCoreClock=168MHz

Daraus folgt ja, dass der entsprechende Interrupt 168.000 mal pro 
Sekunde ausgelöst wird oder bin ich da jetzt auf dem Holzweg?

Das heisst wenn ich folgendes programmiere:
1
SysTick_Config(SystemCoreClock/1680); //SystemCoreClock=168MHz

komme ich bei 100.000 Interrupts pro Sekunde raus.
wenn ich jetzt bei jedem Interrupt einen Wert nach oben Zähle, z.B. 
folgendermaßen:
1
int test=0;
2
void   SysTick_Handler(void){
3
  test=test+1;
4
  if (test==1000){
5
   test=0;}
6
}

Dann müsste nach einer Sekunde der Wert test einen Wert von 1000 
betragen richtig?

Danke schonmal und Grüße an alle

von dummy (Gast)


Lesenswert?

>Daraus folgt ja, dass der entsprechende Interrupt 168.000 mal pro
>Sekunde ausgelöst wird oder bin ich da jetzt auf dem Holzweg?

Ja, bist du. Es wird nach 168000 Zyklen ein Int ausgelöst.

von Hanz mit z (Gast)


Lesenswert?

Wodurch der Systick-Interrupt dann genau jede Millisekunde kommt.

von Ticker (Gast)


Lesenswert?

Aber wenn nach 168000 Zyklen ein Interrupt ausgelöst wird, dann bin ich 
doch bei 0.005952381ms

Gibt es eine Formel für den Interrupt?

Ich steck da irgendwie fest und steig da nicht wirklich durch.

Könnte mir das jemand Schritt für Schritt erklären?

von Frank W. (Firma: DB1FW) (frankw) Benutzerseite


Lesenswert?

Wie kommst Du auf 0.005952381ms ?

168000000 Zyklen pro Sekunde
alle 168000 Zyklen ein Interrupt.
Das sind dann 1000 Interrupts pro Sekunde.

von Ticker (Gast)


Lesenswert?

Das mit 0.005952381ms war quark. Irgendwie war ich bei der Berechnug der 
Periodendauer (was für ein Blödsinn) :)

Also ist es quasi irrelevant was für ein Systemtakt verwendet wird
1
SysTick_Config(SystemCoreClock/1000);

Bewirkt immer ein auslösen des Interrupts bei einer Millisekunde, egal 
ob 168Mhz oder 8Mhz oder oder oder.
Richtig?

von Oppa (Gast)


Lesenswert?

Richtig, deswegen steht da SystemCoreClock. Funktioniert wie es soll 
auch wenn man den Systemtakt ändert.

von Ticker (Gast)


Lesenswert?

Ok super, Danke!

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.