Frequenz zwischen zwei Signalen erzeugen

Gast #4370797
Lesenswert?
• ▲
▼
Hallo,

ich habe folgendes Problem für das ich eine gute Lösung suche. Und zwar 
bekommt mein µC von außen ein Stützsignal zugeführt (Größenordnung 100 
Hz). Die (soll) Stützsignalfrequenz ist dem µC bekannt und wird sich 
während der gesamten Laufzeit nicht ändern.

Zwischen diesen Stützsignalen sollen von dem µC N äquidistante 
Untersignale erzeugt werden wobei N sich vor Beginn eines jeden 
Stützsignals ändern kann.

Also im Endeffekt würde entstehen für N = 6; N = 3 und N = 8:

S U U U U U U S   U   U   U   S UUUUUUUU S

Mein Lösungsansatz wäre gewesen einfach nach jedem Stützsignal einen 
Timer aufzuziehen mit f = f_S * N (also Stützfrequenz mit der Anzahl der 
Untersignale multipliziert).

Was meint ihr dazu?

Was mir ein wenig Sorgen bereitet ist das die Frequenz von S (aufgrund 
der Quarz Streuung) nicht z.B. 100 Hz sondern 98 Hz beträgt während der 
Quarz des µC meinetwegen etwas schneller läuft. Das würde dazu führen, 
dass die Untersignale zu schnell generiert würden und sie zwischen S 
nicht mehr äquidistant verteilt wären (sondern der letzte U hätte in 
diesem Beispiel einen zu großen Abstand zum nachfolgenden S).

Gibt es eine Möglichkeit den Timer für die Untersignale optimal auf den 
Stützsignalgeber anzupassen?

Vielen Dank!
Gast #4370814
Lesenswert?
• ▲
▼
Da brauchst du einen Timer mit genug Auflösung, also eher
16 Bit.

Ich kenne mich mehr in der Atmel-Welt aus, bei anderen µCs
wirds aber ähnlich gehen.

Bevor du nicht zwei Stützsignal-Trigger empfangen hast, wird es
nicht 100% passen, aber wenn du den Stützsignal-Trigger zu einem
Input-Capture-Eingang des selben Zählers schickst, kannst du die
Frequenz des Stützsignals (Zeitabstand in Timer-Ticks) gut
erfassen, und die Abstände (Timer-Ticks) zu den N gewünschten
Untersignal-Zeitpunkten berechnen.

Die Untersignal-Ausgabe könnte dann z.B. über Timer-Compare-
Interrupts bewerkstelligt werden.
#4370820
Lesenswert?
• ▲
▼
@ starseed (Gast)

>ich habe folgendes Problem für das ich eine gute Lösung suche. Und zwar
>bekommt mein µC von außen ein Stützsignal zugeführt (Größenordnung 100
>Hz). Die (soll) Stützsignalfrequenz ist dem µC bekannt und wird sich
>während der gesamten Laufzeit nicht ändern.

Kein mensch nennt das Stützsignal. Das ist ein Referenzsignal der 
Referenztakt.

>Zwischen diesen Stützsignalen sollen von dem µC N äquidistante
>Untersignale erzeugt werden wobei N sich vor Beginn eines jeden
>Stützsignals ändern kann.

Das macht eine PLL. Das kann man auch rein digital machen.

>Mein Lösungsansatz wäre gewesen einfach nach jedem Stützsignal einen
>Timer aufzuziehen mit f = f_S * N (also Stützfrequenz mit der Anzahl der
>Untersignale multipliziert).

>Was meint ihr dazu?

Ich würde es mit einem 16 Bit Timer und den Input Capture sowie Output 
Compare Funktion machen. Damit kann man SEHR genau die Referenz messen 
und daraus die Pulse Zwischen den "Stützpulsen" generieren.

>Was mir ein wenig Sorgen bereitet ist das die Frequenz von S (aufgrund
>der Quarz Streuung) nicht z.B. 100 Hz sondern 98 Hz beträgt

Ein Quarz hat nie 2% Fehler, bestenfalls 200ppm, das sind 0,02%.

>während der
>Quarz des µC meinetwegen etwas schneller läuft. Das würde dazu führen,
>dass die Untersignale zu schnell generiert würden und sie zwischen S
>nicht mehr äquidistant verteilt wären (sondern der letzte U hätte in
>diesem Beispiel einen zu großen Abstand zum nachfolgenden S).

Die Pll misst immer wieder den Abstand der Referenzpulse und generiert 
daraus immer wieder leicht korrigierte Pulse.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.