Forum: Mikrocontroller und Digitale Elektronik STM32 8 verschiedene Frequenzen mit 2 Timern?


von Knut E. (knulli)


Lesenswert?

Ich will auf nem STM32 8 verschiedene Frequenzen ausgeben.
Die Betonung liegt auf Frequenzen. (nicht PWM-Tastverhältnisse mit alle 
der gleichen Frequenz). Verhältnis H/L soll immer 50/50 sein, 
Periodendauer variabel. Für alle 8 Strippen unabhängig voneinander.

Mein jetziger STM hat insgesamt 4 Timer mit je 4 Channels.

Geht das mit verschiedenen Channels eines Timers verschiedene Frequenzen 
auszugeben, oder muss ich 'nen anderen Chip mit 8 Timern nehmen?

Aus dem hier (CC Einheit) bin ich nicht schlau geworden:
Beitrag "STM32 - zwei Frequenzen mit einem Timer erzeugen?"

Knulli

von Jim M. (turboj)


Lesenswert?

Kennt der STM32 einen Timer Mode wo der Pin nur bei Compare-Match aber 
nicht beim Ender der Timer Periode toggelt?

Wenn ja, könnte man versuchen die Compare-Werte vorberechnen und jeweils 
neu via DMA laden.

von Chris D. (myfairtux) (Moderator) Benutzerseite


Lesenswert?

Oder einfach den Timer durchlaufen lassen und per ISR bei Overload eines 
CCRs die halbe Taktperiode aufaddieren. Dann nur noch toggeln lassen und 
fertig sind die unabhängigen Frequenzen. Dadurch könnte man auch das 
PWM-Verhältnis ändern.

von m.n. (Gast)


Lesenswert?

Knut E. schrieb:
> Ich will auf nem STM32 8 verschiedene Frequenzen ausgeben.
> ,,,
> Verhältnis H/L soll immer 50/50 sein,
> Periodendauer variabel.

Das geht, wobei bei höher werdenden Frequenzen die Abstufung immer 
gröber wird und bei niedrigen Frequenzen der Überlauf des Timers 
beachtet werden muß.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Ein Beispiel für 2 Töne mit einem Timer ist in AVR314 enthalten, das mit 
einem Timer DTMF Tonpaare erzeugt.
http://www.atmel.com/images/doc1982.pdf

Selbst wenn das für AVR ist, sollte ein Port auf den STM recht einfach 
sein.

von m.n. (Gast)


Lesenswert?

Matthias S. schrieb:
> Ein Beispiel für 2 Töne mit einem Timer ist in AVR314 enthalten, das mit
> einem Timer DTMF Tonpaare erzeugt.

Das hilft hier nicht weiter, da wohl acht Frequenzen auf separaten 
Ausgängen gleichzeitig ausgegeben werden sollen.
Hier wäre noch interessant, welcher Frequenzbereich abgedeckt werden 
soll. Da mit ISRs gearbeitet werden muß, dürfte die obere Grenze im 100 
kHz Bereich liegen.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

m.n. schrieb:
> Das hilft hier nicht weiter, da wohl acht Frequenzen auf separaten
> Ausgängen gleichzeitig ausgegeben werden sollen.

Das ist wahr. Man könnte sich aber die abschliessende Addition der Werte 
sparen und diese dann getrennt rausschieben. Mir gings nur ums Prinzip.

m.n. schrieb:
> Hier wäre noch interessant, welcher Frequenzbereich abgedeckt werden
> soll.

So isses. AVR314 ist nur für NF zu gebrauchen - zumindest auf den AVRs.

: Bearbeitet durch User
von Knut E. (knulli)


Lesenswert?

@TurboJ:
Es gibt nen Toggle-Mode und den hab ich schon ausprobiert. Ergebnis war: 
Es wird die Phasenlage verschoben.
Da hatte ich aber noch nix mit DMA nachgeladen. Müsste ich auch nochmal 
genauer erklärt bekommen.


@myfairtux:
Ja, die Idee hatte mein Chef (Elektroniker) auch schon. Einfach nen 
zähler laufen lassen und dann mit GPIO die Pins Wackeln lassen.
Meine Befürchtung: Die Motoren werden nicht gleichmäßig laufen, wenn 
irgendwas höher Priorisiertes (USB, RS232, ???) stört.

@ m.n. (Gast):
Frequenzen sollen zwischen 0-200 Hz mit max. 0.1 Hz Stufen einstellbar 
sein.
Damit sollen 8 Steppermotorkarten angesteuert werden, die bei jedem 
Impuls den Motor eins weiterschubst:
http://de.rs-online.com/web/p/funkentstorfilter-und-zubehor/2173611/

Da das erstmal nur einmal gebaut werden soll, "weigert" sich mein 
Elektroniker ne neue Platine zu machen.
Also vorhandene STM-Platine verwenden, die bisher nur eine Frequenz 
ausgeben musste! Der hat nen 8MHz Quarz drauf, damit komme ich auf die 
max. möglichen 72 MHz für diesen STM.

Ich werd mal die Zählergeschichte ausprobieren und mal gucken, wie doll 
das rumeiert.

Knulli

: Bearbeitet durch User
von m.n. (Gast)


Lesenswert?

Knut E. schrieb:
> Frequenzen sollen zwischen 0-200 Hz mit max. 0.1 Hz Stufen einstellbar
> sein.

Das ist ja langweilig.
Ich habe Beipiele, wie man Compare-Ausgänge zur Impulserzeugung mit 
feiner Auflösung benutzen kann, allerdings für AVR mit 2 Kanälen. Das 
Prinzip ist aber auf den STM32xxx übertragbar.
Dabei wird die 1/2 Periodendauer ins Compare-Register geladen und per 
Hardware der Ausgang gesetzt bzw. gelöscht. Bei tiefen Frequenzen ist 
der Nachladewert zu groß, als daß er direkt ins Compare-Register passen 
würde. Da wird dann der Nachladewert in Häppchen zerlegt und erst dann 
einen Ausgangsänderung freigegeben, wenn das letzte Häppchen geladen 
wurde: http://mino-elektronik.de/Generator/takte_impulse.htm#bsp3a


> Damit sollen 8 Steppermotorkarten angesteuert werden, die bei jedem
> Impuls den Motor eins weiterschubst:
> http://de.rs-online.com/web/p/funkentstorfilter-und-zubehor/2173611/

Du hast gesehen, daß diese Karte für unipolare Stepper ist? Freiwillig 
würde ich die heutzutage nicht mehr verwenden wollen.

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.