Hallo, ich brauche einen hochgenauen Impulsausgang an meinem System mit dem TMS320C6747. Die auszugebende Frequenz soll sich im bereich von 5 bis 50000 Hz bewegen, dabei sollte die Genauigkeit bei 0,01 % sein. Ich habe es erstmal mit dem integrierten PWM / HRPWM Modulator probiert. Doch bei hohen Frequenzen habe ich einen zu starken Fehler. Desweiteren gibt es ein grosses Problem bei der Frequenzeinstellung. Man stellt bei dem Modulator die Periodenbreite und Pulsbreite ein, desweiteren kann man die Systemfrequenz mit 2 Dividern einstellen. Ich habe bei verschiedenen Divider Einstellungen und Periodenbreiten die Ausgangsfrequenz gemessen und musste festellen, dass der Periodencounter (16 bit Counter) relativ ungenau ist, d.h. bei einer niedrigen Counterconfiguration (16 bit Periodendauer Regisster) have ich Fehler bis zu 3% waehrend im hohen Counterbereich nur ein tausendstel % Fehler auftritt. Die Divider dagegen sind supergenau. Um immer bei 0,01 % Fehler zu liegen muesste ich also staendig zusaetzlich zu dem 16 Bit Periodenbreitenregister auch noch die Divider veraendern. Das klingt fuer mich jedoch unsinnig und extrem Ressourcenfressend. Der letzte Ausweg waere fuer mich ein zusaetzlicher DDS Chip (Direct Digital Synthesizer) im System. Vorher wollte ich jedoch noch hier nachfragen ob schon jemand geschafft hat hochgenaue Frequenzen mit dem PWM Ausgang hinzubekommen? Vlt. habe ich noch was uebersehen. Also wer Erfahrung hat mit dem PWM ausgang der DSP. Gruss Johann
Hi Johann, Das Problem ist, so meine Vermutung, der Systemclock. Dieser wird ja durch einen Quarz und einer PLL erzeugt. Diese Beiden haben selbstverständlich ein "Eigenleben", welches temperaturabhängig und vielleicht auch alterungsabhängig ist. Natürlich geschieht die Erzeugung des Systemclocks in einer Regelschleife, doch jeder Regelkreis hat wohl auch eine kleine Regelabweichung. Ob diese sich im Bereich von kleiner 0,01 % bezogen auf den eingestellten Systemclock bewegt, wage ich zu bezweifeln. Warum ist die Abweichung bei der kleinen Frequenz deines Signals also geringer als zum Beispiel bei einer Frequenz von 50 kHz? Der (Frequenz)Fehler des Systemclocks wird durch die Frequenzteiler auch heruntergeteilt. Deswegen ergibt sich bei der Frequenz von 5 Hz eine kleinere Abweichung. Denke das du auch bei einer Frequenz von 50 kHz die Frequenzteiler extrem hochstellen solltest, sodass die Zähler der einzelnen PWM-Register immer sehr hoch gezählt werden müssen (kann auch 60000 sein!). Dadurch wird der Fehler vom Systemclock "gemittelt" und es könnte sein, dass die Abweichung kleiner wird. Du musst also die Frequenzteiler verändern. Außerdem lächelt dein Controller wohl müde, denn in das Periodenbreitenregister kannst du zu jedem beliebigen Zeitpunkt einen neuen Wert eintragen, wenn du das Shadow-Register verwendest. Es ist auch noch wichtig deine PWM Pins mit dem Systemclock zu synchronisieren, falls du das noch nicht gemacht hast! Hoffe ich konnte dir ein wenig helfen! Grüße, Jürgen
Danke für die Antwort Jürgen, hab verschiedene Systemclocks und Zähler ausprobiert, die Abweichungen sind trotzdem zu hoch und vorallem aufwendig immer den richtigen Clock und Zähler zu errechnen und dann immer an den Registern rumzuspielen, der Controller lächelt wirklich müde :) Hab mich deshalb entschieden einen externen programmierbaren Waveformgenerator zu nehmen, genauergesagt den AD9833. Ich wollte diese Lösung zuerst vermeiden um das System kompakt zu halten, aber ich brauche unbedingt die hohe Genauigkeit. Angesteuert über SPI entlastet es die CPU enorm. Außerdem kann ich den PWM Controller in der DSP anderweitig einsetzten. Freu mich schon den IC auszuprobieren. Gruß Johann
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.