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
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.
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.
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ß.
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.
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.
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
@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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.