Hallo zusammen, ich habe hier einen STM32F100 und will mit diesem (unter anderem) zwei konstante Takte erzeugen- einen mit 2kHz, einem mit 16-32kHz (konstant und frei wählbar). Ganz habe ich die Timer noch nicht verstanden (will erst das Layout machen, dann kann ich mich mit den Timern beschäftigen, während die Leiterplatte gefertigt wird). Brauche ich für zwei Takte in einem festen Verhältnis einen oder zwei Timer? Wenn ich das richtig verstanden habe, ist für jeden Timer das ARR-Register nur einmal und die CCRx-Register viermal vorhanden. Damit kann ich mit einem Timer vier phasenverschobene PWMs mit der gleichen Frequenz machen. Oder gibt es auch die Möglichkeit, zwei Takte auseinander zu teilen? Viele Grüße W.T.
:
Bearbeitet durch User
Ich kenne mich mit dem STM32 jetzt nicht aus, aber du kannst mit einem Timer doch mehrere Frequenzen realisieren. Ich weiss nicht, auf welche Vorteiler usw. man den Timer beim STM32 einstellen kann, aber mal angenommen, du kannst den Timer genau auf deine 32kHz einstellen. Wer hindert dich dann daran, einen Pin bei jedem 16. durchlauf deines Timers zu toggeln? Dann hast du 32kHz und 2kHz.
Was möchtest du denn genau machen? Zwei PWM mit unterschiedlichen Frequenzen mit einem Timer geht nicht. (Zu mindestens nicht in Hardware). Mit dem ARR und dem Takt gibst du die Frequenz vor, die CCR Register dienen bei einer PWM dazu zu bestimmen, wann der entsprechende Pin von High nach Low wechselt. Wenn du "nur" zwei verschiedene Takte brauchst, lässt sich das höchst wahrscheinlich per Software lösen. Der Timer liefert dann nur den Basistakt und daraus erstellt du selber deine gewünschten Ausgangstakte.
Mike S. schrieb: > Was möchtest du denn genau machen? Ich will einfach zwei Takte erzeugen. Die beiden Takte müssen nicht phasenstarr und auch nicht besonders arm an Jitter sein. Das Tastverhältnis sollte bei beiden 50% sein. Einer betreibt eine Ladungspumpe und kann deshalb innerhalb einer Größenordnung (10-40kHz) frei gewählt werden, der andere wird für ein Display (DG12232) gebraucht. Generell ist das Problem total simpel. 2kHz könnte man auch einfach mit einem NE555 erzeugen. Oder die SysTick-Routine mit 4kHz aufrufen. Oder einen extra Timer-Kanal dafür vorsehen. Aber da die Timer der MCU soviele Einstellmöglichkeiten haben interessiert mich eben, ob man mehrere voneinander abgeleitete Frequenzen damit erzeugen kann. Viele Grüße W.T.
Ich bin der Meinung ohne extra Software in der IRQ geht es mit einem Timer nicht. Der Timer müsste dann einer Frequenz von 250µs laufen und dann halt entsprechend zählen, wann er die beiden Pins toggeln muss. Wenn du Code und Ausführungszeit sparen willst kann man dafür natürlich auch 2 getrennte Timer einsetzen, die müssen dann ein mal eingestellt werden und erzeugen die Signale dann von sich aus.
Mit der Compare Einheit sollte das doch gehen. Der Timer läuft frei. Die jeweilige Compare Wert gibt die Frequenz vor. In der ISR wird der Compare Wert einfach addiert und das nächste Intervall ist aktiv.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.