Forum: Mikrocontroller und Digitale Elektronik Problem mit Timer und Delay


von helpme91 (Gast)


Lesenswert?

Hallo zusammen,

ich habe ein Problem mit meinem STM32F407VG.... in der Cube IDE.
Aktuell arbeite ich an einem Program, wo ich mehrere Timer verwenden 
muss.
Meine Programme davor hatten immer nur einen Timer.

Jetzt habe ich folgendes Problem, ich brauche in meinem Programm Delays 
die ich mit defines mache. Beispiel: "#define WAIT_200MS". Damit ich 
jetzt eine delay Zeit von 200 Millisekunden erreiche, nehme ich die 
Frequenz vom Timer und berechne die Preiodendauer mit: T = 1/f. Wenn der 
Timer jetzt z.B. mit 10Hz arbeitet, dann habe ich T = 1/10 = 0,1 
Sekunden, 0.1 * 2 = 0.2 Sekunden als Delay. Also liefert mir: "#define 
WAIT_200MS 2" ein Delay von 200 Millisekunden.

Da ich jetzt aber mehrere Timer habe, weiß ich nicht mit welcher 
Frequenz ich meine Delays berechne soll. Ich habe TIM6, TIM2 & TIM4 in 
verwendung. Wenn ich jetzt meine Delays anhand der Frequenz von TIM2 
realisieren möchte, wie mache ich das? Muss ich bei den Einstellungen 
den global interrupt von Timer 2 aktivieren?

Ich wäre euch für eine einfache Erklärung sehr dankbar.
STM32 ist für mich noch eine neue Welt.

Danke!

von Harry L. (mysth)


Lesenswert?

Also zunächst einmal reicht für solche schnarchlahmen Delays der 
Systick-Timer völlig aus, wenn es nicht gerade auf den Bruchteil einer 
µs ankommt.
Dafür braucht man keine weiteren Hardware-Timer.

Ansonsten empfehle ich dir das Studium des TimerCookbook:
https://www.st.com/resource/en/application_note/an4776-generalpurpose-timer-cookbook-for-stm32-microcontrollers-stmicroelectronics.pdf

von Stefan F. (Gast)


Lesenswert?


von Georg (Gast)


Lesenswert?

helpme91 schrieb:
> Da ich jetzt aber mehrere Timer habe, weiß ich nicht mit welcher
> Frequenz ich meine Delays berechne soll

Wenn du überhaupt mehrere Timer brauchst, dann musst du eben für jeden 
Timer eine eigene Konstante definieren - wo ist da das logische Problem?

Anscheinend ist deine Timerverwendung völlig vermurkst. Wofür brauchst 
du an 2 verschiedenen Timern das gleiche Delay von 200 ms??

Und was machst du wenn du 100 ms brauchst??

Georg

von W.S. (Gast)


Lesenswert?

helpme91 schrieb:
> ich brauche in meinem Programm Delays
> die ich mit defines mache. Beispiel: "#define WAIT_200MS".

Vielleicht wird dir mal klar, daß man mit solcher 
Geradeaus-Programmiererei irgendwann nicht mehr weiter kommt.

Du brauchst keine Delays von 200 ms oder so ähnlich, sondern dein 
Programm braucht nach 200 ms einen Hinweis, daß es anfangen sollte, 
irgendetwas bestimmtest zu tun. So herum. Und in der Zwischenzeit kann 
es sich um anderes Zeugs kümmern. Oder ein virtuelles Bier trinken 
gehen. Je nachdem, was du mit dem µC eigentlich machen willst.

W.S.

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.