2 verschiedene Pulse mit gleichem Timer

OP #5990048
Lesenswert?

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
OP #5990062
Lesenswert?

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.
#5991219
Lesenswert?

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.
#5991339
Lesenswert?

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
OP #5997176
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren