Moin zusammen, und zwar möchte ich mit meinem STM32F415RG sowohl eine PLL als auch einen ADC ansteuern. Der ADC fängt an zu samplen, sobald ein Triggerimpuls auf der dazugehörigen Leitung anliegt. Das ist ein einfacher Rechteckimpuls. Gleichzeitig möchte ich aber auch die PLL ansteuern, die dann anfängt zu sweepen. Die Ansteuerung dafür geschieht auch wieder über Triggerimpulse auf der dazugehörenden Leitung. Der Unterschied zum ADC ist jedoch, dass nach dem ersten Impuls nach einer definierten Sweepzeit ein zweiter Impuls kommen soll. Sprich der erste Impuls signalisiert der PLL, dass sie anfangen soll zu sweepen, der zweite, dass sie wieder aufhören soll. Die Impulse sollen nicht kontinuierlich sondern einmalig ausgegeben werden. Die beiden Impulse für die PLL erzeuge ich momentan mittels Repitition Counter von TIM1. Der läuft im OnePulseMode. Aus Gründen der Übersichtlichkeit und weil ich ungerne freie Timer "verschwenden" möchte, war mein bisheriges Vorhaben, für jede Leitung einen anderen Channel des gleichen Timers zu nehmen. Bis mir aber im Manual nochmal aufgefallen ist, dass der OPM sich auf den Counter und nicht auf die einzelnen Channels bezieht. Deswegen meine Frage, ob jemand vielleicht eine bessere Idee hat das ganze möglichst "Timersparend" zu realisieren? Viele Grüße
Kevin L. schrieb: > "Timersparend" Gibt es denn eine sinnvolle Begründung, außer Sparwahn, Timer einzusparen?
Ingo L. schrieb: > Gibt es denn eine sinnvolle Begründung, außer Sparwahn, Timer > einzusparen? Bei 17 Timern in dem Ding...
Ingo L. schrieb: > Kevin L. schrieb: >> "Timersparend" > Gibt es denn eine sinnvolle Begründung, außer Sparwahn, Timer > einzusparen? Da es nur eine begrenzte Anzahl an advanced Timern in dem Chip gibt, ja. Sebastian R. schrieb: > Ingo L. schrieb: >> Gibt es denn eine sinnvolle Begründung, außer Sparwahn, Timer >> einzusparen? > > Bei 17 Timern in dem Ding... Timer ist nicht gleich Timer.
Jeder Kanal hat eigene Compare-Register kannst du die nicht benutzen ? Die lassen sich im Interrupt oder mit DMA jederzeit umprogrammieren.
Die ARM-Timer haben ja tausende Möglichkeiten, da kenne ich mich nicht aus. Beim AVR würde ich einfach die Output-Compare-Funktion nutzen. Der Pin wechselt zyklusgenau seinen Pegel und im Interrupthandler lädt man dann einfach die nächste Comparezeit. Soll nichts mehr passieren, schaltet man den Pin wieder vom Timer ab. Der Timer läuft aber weiter und kann noch andere Sachen machen. Eine PLL sweept nicht, sondern rastet ein. Sie erzeugt immer ein festes Vielfaches der Eingangsfrequenz. Du meinst vermutlich einen durchstimmbaren Oszillator.
Kevin L. schrieb: > Der ADC fängt an zu samplen, sobald ein > Triggerimpuls auf der dazugehörigen Leitung anliegt. Das ist ein > einfacher Rechteckimpuls. Ist denn die Länge des Impulses für den ADC entscheidend? Der ADC fängt ja vermutlich bei einer Flanke des Signals an zu sampeln (low->high oder high->low). In dem Fall könntest du mit einem externen XOR Gatter + Tiefpass aus einem Rechtecksignal 2 Pulse an den Flankenwechseln generieren. Das Rechtecksignal nutzt du für den ADC, die Pulse für die "PLL".
1 | _________ |
2 | A __/ \____ -> ADC |
3 | _________ |
4 | B ____/ \__ |
5 | _ _ |
6 | C ___/ \_______/ \__ -> PLL |
7 | |
8 | +-------+ |
9 | A o----+-------------->|A | |
10 | | | XOR |>--o C |
11 | +---[ R ]--+--->|B | |
12 | | +-------+ |
13 | | |
14 | === C |
15 | | |
16 | -+- GND |
:
Bearbeitet durch User
Joe F. schrieb: > Ist denn die Länge des Impulses für den ADC entscheidend? Der ADC fängt > ja vermutlich bei einer Flanke des Signals an zu sampeln (low->high oder > high->low). > > In dem Fall könntest du mit einem externen XOR Gatter + Tiefpass aus > einem Rechtecksignal 2 Pulse an den Flankenwechseln generieren. Die Länge des Impulses ist vernachlässigbar, zumindest bei den Taktfrequenzen. Der ADC hat, glaube ich eine Mindestzeitanforderung von 3ns, bisher waren meine Pulse immer mind. 1 µs lang. Die Idee mit dem externen XOR Gatter klingt aber einleuchtend, da werde ich mich mal dran setzen. Vielen Dank dafür.
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.