Problem mit Timer und Delay

Gast #7296319
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!
#7296375
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
Gast #7296485
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
Gast #7296491
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.

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.