Forum: Mikrocontroller und Digitale Elektronik 2 verschiedene Pulse mit gleichem Timer


von Kevin L. (kevka2908)


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

von Ingo L. (corrtexx)


Lesenswert?

Kevin L. schrieb:
> "Timersparend"
Gibt es denn eine sinnvolle Begründung, außer Sparwahn, Timer 
einzusparen?

von Sebastian R. (sebastian_r569)


Lesenswert?

Ingo L. schrieb:
> Gibt es denn eine sinnvolle Begründung, außer Sparwahn, Timer
> einzusparen?

Bei 17 Timern in dem Ding...

von Kevin L. (kevka2908)


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.

von Hans-Georg L. (h-g-l)


Lesenswert?

Jeder Kanal hat eigene Compare-Register kannst du die nicht benutzen ?
Die lassen sich im Interrupt oder mit DMA jederzeit umprogrammieren.

von Peter D. (peda)


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.

von Joe F. (easylife)


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

: Bearbeitet durch User
von Kevin L. (kevka2908)


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.

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.