Forum: Digitale Signalverarbeitung / DSP / Machine Learning Runterteilen der SYSCLK zu einer kleinen TBCLK bei epwm modul funktioniert beim TMS320F2808 nicht


von Thomas S. (cheesie)


Lesenswert?

Hey zusammen,

ich habe jetzt 4 pwm module, 3 sind zur berechnung von comparewerten, 
und mit dem 4 möchte ich eine Zeitbasis zu dieser berechnung 
bereitstellen. also ich nimm den counterwert des counters, und berechne 
mir daraus in den interruptmethoden der anderen 3 immer wieder neue 
comparegrößen.
Jetzt zu meinem Problem:
Ich möchte das der 4 Counter seine Werte so langsam wie nur möglich 
ändert, umso für die berechnung in den 3 anderen counter nicht zu 
schnell zu sein.

Jetzt habe ich mit den Bits TBCTL.CLKDIV und TBCTL.HSPCLKDIV versucht 
den Teilungsfaktor für die TimeBaseClock des 4 Counters den maximalen 
wert von

 TBCLK = SYSCLKOUT/(CLKDIV*HSPCLKDIV) = SYSCLKOUT/128*14 = 
100MHz/1792=55,8 kHz

zu geben, um somit ganz langsam zählen zu können.

Wenn ich jetzt jedoch ein Oszi dranhäng, wird hier maximal der Wert 4 
als Faktor verwendet, auch wenn ich in beide 0x111; reinschreibe!?

Hatte evtl. schon mal jemand das Problem mit dem runterteilen der 
Frequenz?

Wäre um jede Hilfe dankbar!

Grüße, tom

von Peter D. (pdiener) Benutzerseite


Lesenswert?

Das mit dem falschen Teilen des Taktes kann ich ohne Quellcode nicht 
nachvollziehen.

Das Konzept mit den 4 Timern kann ich nicht ganz verstehen.

Normalerweise setzt man einen Timer auf und dieser macht PWM auf einem 
oder zwei Portpins und die Zeitbasis für die Berechnung.
Die Softwarezeitbasis wird vom Timer über das "Event trigger and 
Interrupt (ET)"-Modul abgeleitet.

In der epwm-Beschreibung
http://focus.ti.com/lit/ug/spru791f/spru791f.pdf

auf Seite 82 ist ein Beispiel wie man das löst, wenn man zwei 
Dreiphasenwechselrichter ansteuert.
Da bleibt kein epwm Modul mehr übrig, wenn man nur 6 davon hat.
Die Erzeugung der Softwarezeitbasis für alle Berechnungen passiert 
genauso mit den bereits für PWM benutzten Modulen.

Wenn man niedrigere Frequenzen für die Interrupts benötigt, kann das 
ET-Submodul noch etwas weiter runterteilen. Und sonst kann man noch 
problemlos im Interrupt selbst mitzählen und damit niedrigere 
Zykluszeiten erzeugen.

Grüße,

Peter

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.