mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MSP430F2012 - PWM und Timer Problem


Autor: Nat (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo. Ich brauche Hilfe. Ich arbeite mit MSP430F2012. Ich habe 
folgendes Problem. Ich muss PWM ansteuern und gleichzeitig einen Timer 
von 10 s laufen lassen, der Timer soll nach der Zeit die PWM 
ausschalten. Da der uC nur einen Timer hat, geht das nicht (oder habe 
ich da was falsch verstanden). Hat jemand vielleicht eine Idee, wie ich 
das Problem lösen kann.

Ich bedanke mich schon im Voraus bei Allen, die mir antworten.

Autor: Wolfgang Mües (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dein PWM-Timer hat ja auch einen Interrupt.

Schreibe eine kleine Interrupt-Routine dafür, die einen Zähler 
dekrementiert und nach 10s den PWM totlegt.

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Da der uC nur einen Timer hat, geht das nicht
Doch, geht schon!

>oder habe ich da was falsch verstanden?
Ja, hast Du ;-)

Der Timer_A beim F2012 hat 2 CCR-Register.
Im outmode benutzt Du beide CCR-Register um die gewünschte PWM-Frequenz 
und den Duty-Cycle festzulegen. Beim Frequenz-bestimmenden CCR-Register 
benutzt Du zusätzlich dessen IRQ, um in der ISR einen Zähler zu 
inkrementieren (siehe Wolfgang Mües) und bei 10s ist eben Schluß!

Der User-Guide der 2xxx-Familie klärt Dich über die Verwendung von CCR, 
outmodes, usw auf!

Autor: Nat (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry (vieleicht bin zu blöd dafür)
>um in der ISR einen Zähler zu inkrementieren
heißt das ich könnte eine normale Variable hochzälen lassen?

Das habe ich gemacht, aber er spring nie in die ISR.

Könnt Ihr mir vieleicht ein Beispiel geben, wie die ISR für meinen Fall 
sein soll.

Autor: Jörg S. (joerg-s)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kannst auch den Watchdog als 2. Timer nutzen.

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Nat
>um in der ISR einen Zähler zu inkrementieren
>heißt das ich könnte eine normale Variable hochzälen lassen?
>Das habe ich gemacht, aber er spring nie in die ISR.
Mir scheint so, als würden Dir einige Grundlagen fehlen...
Ich kann Dir nur raten, Dir mal den User-Guide zu Gemüte zu führen und 
die Code-Beispiele von TI anzuschauen!

@Jörg
>Kannst auch den Watchdog als 2. Timer nutzen.
Könnte man, aber Timer_A reicht völlig aus.
Daher würde ich den WDT lieber Watchdog spielen lassen!

Autor: Nat (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für eure HILFE. Es geht.

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.