mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik variable PWM mit MSP430


Autor: Tom (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich weiß dieser Themenbereich wurde schon oft hier dikutiert, aber für 
das von mir geschilderte Verhalten habe ich noch immer keine Lösung 
gefunden. Es handelt sich um eine LED Ansteuerung mit dem MSP430F149 per 
PWm vom TimerB mit als Hardware PWM. Also die Pins 4.0...4.7. Er läuft 
mit 8MHz. Der Testcode zeigt nur die Funktionalitäten für die PWM 
generierung. Timer A erzeugt Interrupts, bei denen die neuen Compare 
Werte ins CCRx Register gelegt werden. Timer B erzeugt die PWM. Soweit 
läuft alles gut, nur gibt es "Ausreißer" beim Helligkeitsverlauf. 
Verwednet wird eine Wertetabelle. Willkürlich scheinbar blitzen die LED 
auf. Das passiert auch, wenn ich zum Comparewert ändern, die Main 
benutze! oder im TimerA nur die Laufvariabel hochzähle und die Werte 
direkt in der timerB ISR setze. Immer das gleiche Verhalten. Nun bin ich 
nicht der große Programmierer und mir fällt nix mehr ein.
Ich hoffe mir kann hier jemand mit einem Blick auf den Code helfen oder 
Hilfestellung geben. gerne gebe ich dann noch mehr Auskünfte dazu!

Danke!!

Gruß

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist das ein Schreibfehler?
void init_Timer_B(void)
{
    
    TBCCR0  = 65535-1;                           // PWM Periode-1
...

In diesen Falle (CCR0 = 65534) würde ein CCRx = 65535 aus der Tabelle 
ja nie erreicht werden können...

Autor: tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

nein kein Schreibfehler.
Stimmt, was würde aus deiner Sicht passieren?

Danke fürs Feedback!

gruß

Autor: P. Geisler (dronus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Timer B hat ein Latch (Zwischenspeicher) für die TBCCRn Register.

Diese aktiviert man in dem man die CLLD-Bits im jeweiligen TBCCTLn 
Register auf b01 setzt.

Wenn der Latch nicht aktiviert ist, ist man nie ganz sicher ob man den 
nächsten PWM-Wert vor oder nach dem Einschaltvorgang setzt. Wenn der 
Zeitpunkt zu früh liegt und der PWM-Wert niedriger ist, verpasst der 
Timer den Schaltzeitpunkt und die LED ist dann länger als eine ganze 
Periode aus. Dasselbe kann andersherum passieren, die LED ist dann eine 
länger als eine Periode an, was sich als Blitzer der LED äußert.

Wenn der Latch aktiviert ist, wird der neue Wert im TBCCRn-Register 
nicht verwendet bevor der Timer einmal über die 0 gelaufen ist. Damit 
ist sichergestellt, dass keine Periode verpasst werden kann.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.