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!
Hallo, also wenn Deine Quarze um 2% streuen würde ich mir Gedanken darüber machen, was Du da als "Quarz" eingebaut hast... Gruß aus Berlin Michael
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.
@ 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.
Abhängig von der Eingangsfrequenz wird eine Ausgangsfrequenz mit (im möglichen Rahmen) beliebigen Faktor erzeugt. Frequenz/Frequenz-Umsetzer: http://www.mino-elektronik.de/Generator/takte_impulse.htm#bsp4
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.