Hi zusammen,
ich möchte, wie im Betreff geschrieben, 3PWM Signale mit gleicher
Frequenz und unterschiedlichem Puls-Pausen-Verhältnis mit dem 470R1B1M
Controller erzeugen.
Das klappt soweit auch ganz gut. Ich bin nur mit der Auflösung des
Puls-Pauses-Verhältnisses nicht zufrieden. Dieses kann ich nur in 66
Schritten bei einer Frequenz von 50kHz einstellen.
Nun zum Grund, weshalb es nur so grob eingestellt werden kann:
Die Frequenz des Quarzes beträgt 10MHz, mit der PLL wird dann eine
Taktfrequenz von 40MHz erreicht.
Im HETGCR Register habe ich den LR-Prescaler auf 1 und den HR-Prescaler
auf 12 eingestellt.
Dies kann nicht verringert werden, da das HET Programm ansonsten nicht
abgearbeitet werden kann.
Somit komme ich auf 40Mhz/12=ca. 3,3MHz.
Um die Frequenz dann auf 50KHz einzustellen muss ich den Counterwert des
PWMs auf 66 stellen. (3,3MHz/50000Hz=66)
Hier noch der HET Programmcode:
1
; Implement a counter that uses register A and rolls over at 0x042 (ergibt ca. 50kHz)
Im Hauptprogramm verändere ich die Puls-Pausen-Verhältnisse aller 3
Ausgänge in gewissen Zeitabständen, aber nicht jedes mal, wenn der
Counter überläuft.
Hat jemand eine Idee, wie ich die Auflösung des
Puls-Pausen-Verhältnisses verbessern kann? (Durch Codeverbesserungen)
Eine Auflösung von ca. 200 Schritten wäre wünschenswert.
Besser geht natürlich auch noch. ;)
Ich habe nur die Möglichkeit gefunden den Quarz durch einen anderen zu
ersetzten um dann dann auf die maximalen 60Mhz zu kommen. Somit hätte
ich eine Auflösung von 100 Schritten bei 50kHz mit 60MHz Taktfrequenz.
Eine andere Möglichkeit ist die Frequenz von 50kHz auf 40KHz zu
verringern, allerdings möchte ich diese nicht noch tiefer ansetzen.
Geringer geht nicht!
Ein anderer Controller kommt auch nicht in Frage. ;)
Diese Dokumente von TI habe ich gelesen:
http://www.ti.com/lit/ug/spnu199d/spnu199d.pdfhttp://www.ti.com/lit/ug/spnu495a/spnu495a.pdf
Gruß Chris
Nein, aber das werde ich jetzt machen müssen. Verstehen tue ich
überhaupt nichts. Wie das mit den Registern und überhaupt der komische
Code Funktioniert.
gruß
Matthias
Hi Matthias,
wenn du etwas neues weißt, dann lass es mich bitte wissen.
Ich bin auch noch mit diesem Problem beschäftigt, habe jedoch noch
andere
Probleme zu Lösen, sodass ich dieses erstmal "aufgeschoben" hatte.
Danke und grüße
Chris
Hi Matthias,
danke für die Info.
Muss mich mal dadurcharbeiten.
Ich muss von meinem Hauptprogramm die PWM Ausgänge wechseln und die
Puls-/ Pausenverhältnisse einstellen können...
Grüße Chris
Was ich bis jetzt nicht hinbekomme ist, dass der HET selbständig läuft.
Das Programm wird in den Speicher geladen und die Register werden auch
richtig gesetzt aber es will einfach nicht laufen.
Gruß
Matthias
Hallo,
Habe ein PWM Signal mit veränderbaren Duty Cycle, ein Signal das mir
einmalig fünf mal ein Low Signal macht und das einlesen und erkennen
Steigender Flanken realisiert.
Zum dem Tool HET-IDE gibt es noch ein PDF Getting Started, darin steht
wie man alles einstellen muss um in der Simulation (Wave Former) alles
richtig angezeigt zu bekommen.
Sind Sie mit Ihrem Problem weiter gekommen ?
So wie ich das jetzt verstanden habe, müssen Sie den LRP mindestens auf
16 einstellen, dabei können Sie den HRP So niedrig wie gewünscht
setzten. Lasse mich aber gerne eines besseren belehren.
Hi,
ich habe bis jetzt mit dem HET nichts mehr gemacht,
da ich an der weiteren Hardware noch zu tun habe/hatte.
Was mneinen Sie mit LRP auf 1 stellen?
Ich brauche bei 40MHz mit meinem aktuellen Code um auf 50kHz PWM
frequenz zu kommen einen LR-Prescaler von 1 und einen HR-Prescaler
von 12.
Andere Möglichkeit wäre, da immer nur ein PWM Pin aktiviert sein
muss/kann, nur die PWM Kanäle also auf welchem Pin das Signal kommt, vom
Hauptprogramm aus zu ändern.
Haben Sie soetwas realisiert, oder wissen wie ich auf den HET zugreife
vom Hauptprogramm aus um den PWM Ausgangs PIN zu wechseln?
Wir können auch gerne mal Email Adressen austauschen und so weiter
schreiben, wenn sie sich hier anmelden.
Grüße
Alsoooo,
Der HET kann mit einigen Befehlen und auf einigen Pins auch mit
Highresolution Ausgeben und Messen.
Welche Pins und welche Befehle das sind hängt von der Prozessorversion
ab.
Steht im Datenblatt.
LR meint das ist die Zeit zwischen 2 HetProgramm starts.
Also bei "0" startet das Hetprogramm und läuft bis zur letzten
Instruktion.
Dann wartet der HET bis LR angelaufen ist und startet das Program wieder
bei "0" + LowResolutionLooptime. usw......
HR ist die Highresolution.
Aus dem ersten Text : 40Mhz/12=ca. 3,3MHz.
==> highresolution ist 200 nsec
50 kHz => 240µsec
Das heißt die PWM kann bei Verwendung der highresolution mit einer
Auflösung von 240µsec/ 200nsec = 1200 Schritten laufen.
Hallo Ralph,
sprich, wenn ich ein HET Programm mit 13 Instructions hab, muss ich
meinen
Loop Resolution Prescaler (LRP) auf 16 setzen (im Register 0x4), damit
das HET Programm abgearbeitet werden kann bevor LR abgelaufen ist,
stimmt das so?
Den HRP kann man dann so wählen wie man möchte, um so kleiner um so
höher die Auflösung.
Oder einfacher ausgedrückt: Um so höher kann in der CNT Instruction
gezählt werden.
Wie kommen Sie bei
40Mhz/12=ca. 3,3MHz.
==> highresolution ist 200 nsec
und
50 kHz => 240µsec
auf die Zeiten.
___________________________________________________________________
Hallo Chris,
Um auf das Control field zuzugreifen:
Hi,
bei mir handelt es sich um den Mikrocontroller TMS470 R1B1M.
Ich denke ihr werdet mit neueren Controllern zu tun haben?
Ich komme bei 3,3MHz sowie 50kHz auch nicht auf die genannten Zeiten.
Irgenwo hat einer von uns einen Denkfehler.
Ich komme auf ca.: 0,3µS bei 3,3MHz
20µS bei 50kHz
--> 20µ/0,3µ = 66 was meine Auflösung ist.
@Matthias, was für einen Controller und Entwicklungsumgebung verwendest
Du?
Ich denke die Bitdefinitions bzw. Registerbezeichnungen sind
verschieden, wenn ich das so sehe.
Grüße
@Chris
Eigentlich dürften die sehr Gleich sein: TMS470R1x
Für den C-Code nehme ich entweder Eclipse oder Notepad++
Für den HET die HET-IDE. Die gibt es bei TI zum herunterladen.
std_het.h nicht vergessen.
Du müsstest eigentlich wenn du mit dem HET arbeitest dir noch eine
typedef volatile struct anlegen für die HET und das MMC Register
anlegen.
Beispiel:
Chris B. schrieb:> Ich komme bei 3,3MHz sowie 50kHz auch nicht auf die genannten Zeiten.> Irgenwo hat einer von uns einen Denkfehler.>> Ich komme auf ca.: 0,3µS bei 3,3MHz> 20µS bei 50kHz>> --> 20µ/0,3µ = 66 was meine Auflösung ist.
Ja ich, deine Zahlen sind richtig, frag mich nicht was ich da für einen
Müll in den Rechner getippt hat.
Hier ist ein Link zum HET datasheet bei Ti.
http://www.ti.com/litv/pdf/spnu199d
Auf Seite 32 ist ein Beispiel wie die Einstellungen berechnet werden
können.
In dem Beispiel hat der Het eine highresolution von 62,5 nsec bei einer
Loopresolution von 2 µsec.
also max PWM frequenz wäre 1 / 2µsec bei einer Auflösung von 62,5 nsec
Und du kannst 63 Instructions abarbeiten.
Sysclock ist da 32 MHz.
Sollte also zu deinen Parametern passen.
Du kannst an dem Beispiel aber auch leicht mit deinen Parametern die
richtigen Werte ausrechnen.