mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PWM-Signal mit MSP430, TBCCR Problem


Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo liebe Leute.
Ich bin relativ neu in uP Technik und stehe gerade vor einem kleinen 
Problem.
Ich habe am P4.0 und P4.1 EINEN Summer "hängen" (auf 2 Pins für größere 
Spg. wenn man einen normal und den anderen invertiert ansteuert).
Jetzt mein Problem:
Am 4.0 ist der TBO, 4.1 der TB1, 4.2 der TB2.
Laut meinen "Programm-versuchen" stellt man mit dem TBCCR0 die Pulslänge 
des PWM Signals ein und mit dem TBCCR1 und/oder TBCCR2 kann man dann die 
Pulsweiten einstellen. Oder liege ich da falsch??
Da ich aber den Summer mit 2 PWM Signalen ansteuern möchte liegt hier 
mein Problem: Wie kann ich mit dem TBCCR0 die Pulsweite einstellen, oder 
geht das überhaupt gar nicht und dient dieser nur zum einstellen der 
Pulslänge??

Bitte um tatkräftige Unterstützung ;)

mfg Mike

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Ich habe am P4.0 und P4.1 EINEN Summer "hängen" (auf 2 Pins für größere
>Spg. wenn man einen normal und den anderen invertiert ansteuert).
Aha... wie genau steuert man beim MSP noch gleich einen Pin invertiert 
an (mit -3V)???

>Laut meinen "Programm-versuchen" stellt man mit dem TBCCR0 die Pulslänge
>des PWM Signals ein und mit dem TBCCR1 und/oder TBCCR2 kann man dann die
>Pulsweiten einstellen. Oder liege ich da falsch??
Das hängt von den Einstellungen der Output-Einheit zusammen. 
Normalerweise stellt man mit CCR0 die PWM-Frequenz ein und mit den CCRx 
die jeweilige Pulsbreite (oder nenn' es Duty-Cycle).

>Da ich aber den Summer mit 2 PWM Signalen ansteuern möchte...
Ich versteh's immer noch nicht... Ein Pin ist high, der andere low, da 
kommt beim Piepser immer der gleiche Spannungshub (Vcc) an!

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

Bewertung
0 lesenswert
nicht lesenswert
Ich hätt es mir auch nicht gedacht, theoretisch hast du recht dass immer 
3V anliegen müssten.
Aber diesen Tipp hab ich mal wo auf einer Webseite gelesen.
So brauchst du dein Signal nicht verstärken oder ähnliches und du hast 
am Summer ganze 6 V.
Beweis: siehe Bild (hier habe ich zwischen TB1 und TB2 gemessen und 
diese im gegentakt geschalten)

Weist du das zufällig wie man das einstellt, dass man auch mit dem CCR0 
die Puls weite einstellt und vielleicht mit einem anderen CCR die 
Frequenz?

Mit freundlichen Grüßen
Mike

PS. Sry für das unscharfe Bild, aber habs grad mit dem Oszi gemessen.

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmm... glaub ich Dir halt mal.
Zum ernsthaften Nachdenken hab ich jetzt keine Lust mehr.
Aber unter einem "Beweisfoto" verstehe ich was anderes!

Zur Gegentaktansteuerung brauchst Du m.E. Outputmode 3 u. 7, die sind 
genau gegenläufig. Nur funktionieren die beiden eben nicht mit CCR0. 
Musst also auf 4.1 und 4.2 umlöten!

Autor: Torsten Broxtermann (tbrox)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
es wäre toll wenn du diesen Web-Hinweis wiederfindest
interessehalber

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
an Stefan:
Was verstehst du sonst unter Beweisphoto?

Leider kann ich den nicht mehr umlöten, da dies bereits auf einer nicht 
von mir fertig hergestellten platine ist und der TB2 auch bereits 
vergeben ist.
Und ich verwende bereits Outputmode 2 und 6.

Gibt es da nicht eine andere Lösung?
Vieleicht mit einem CLK die 2 PINs toggln lassn?


an Thorsten:
Nein, leider weiß ich das nicht mehr. Aber es war irgendwo in einem 
anderen Forum.
Aber es funktionert auf diese Weise ;)

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Was verstehst du sonst unter Beweisphoto?
Eins auf dem man die wichtigen Parameter erkennt ;-)

>Und ich verwende bereits Outputmode 2 und 6.
Die beiden gehen für CCR0 ja auch nicht!

Ich verstehe noch nicht so ganz den Sinn dieser PWM-Geschichte.
Ich vermute mal, Du willst ein akustisches Signal erzeugen?
Dann ist dafür die Frequenz entscheidend und nicht der Duty-Cycle. Wobei 
man wohl idealerweise DC=50% wählen würde.
Oder habe ich jetzt den entscheidenden Ansatz, der eine "echte" PWM 
notwendig macht verpasst?!

Dann nimm halt outmode4 (toggle) mit CCR0 = CCR1 als frequenzbestimmende 
Komponente. Vorher einmal einen output setzen und anderen output 
löschen (z.B. über outmode 0 und OUTx = 0/1), damit die Gegenläufigkeit 
erreicht wird.

Oder ganz anders: Timer-Interrupt über z.B. CCR0 und in der ISR dann 4.0 
und 4.1 gegentaktmäßig toggeln.

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja da hast du recht, ich will ein akustisches Signal erzeugen.
Und ich dachte mir ich machs so, dass wenn der Summer eh schon am Timer 
Pin hängt dann mach ich es über ein PWM Signal mit DC = 50%.

Deine Idee mit dem Outmode 4 mit CCR0 = CCR1 versteh ich nicht so ganz 
wie du es meinst. Vielleicht könntest du mir es ein wenig genauer 
erklären, oder vl gleich die paar Zeilen Code verraten.

Ich machs jetzt einmal so, dass ich die BCSCTL und DCOCTL einstell und 
dann mit dieser Frequez die Pins im Gegentakt toggle.
So erspar ich mir dir ISR.

Gruß
Mike

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Deine Idee mit dem Outmode 4 mit CCR0 = CCR1 versteh ich nicht so ganz
>wie du es meinst.
Hast Du Dir eigentlich mal den User-Guide zum Thema Output-Modes näher 
angeschaut?
Outmode 4 (toggle): Wie der Name schon sagt, jedesmal wenn der Timer den 
Wert CCRx erreicht, toggelt der entsprechende Ausgang P4.x! Da Du P4.0 
und P4.1 im Gegentakt betreiben willst, musst Du also vorher einmal 
einen der Ausgänge auf 1 setzen, während der andere auf 0 bleibt, 
ansonsten wäre das Toggeln von 4.0 und 4.1 ja im Gleichtakt!
Desweiteren darf der Timer natürlich nur bis zum Wert CCR0 laufen und 
muss dann wieder von 0 beginnen, sonst stimmt ja die Frequenz, die Du 
mit CCR0 (und CCR1) eingestellt hast, nicht!

>Ich machs jetzt einmal so, dass ich die BCSCTL und DCOCTL einstell und
>dann mit dieser Frequez die Pins im Gegentakt toggle.
Das ist dann so ziemlich die ineffizienteste Methode, die es gibt.
Außerdem änderst Du damit ja nicht nur die Tonfrequenz, sondern auch den 
Takt für die CPU...

>So erspar ich mir dir ISR.
Das wäre allerdings (außer der PWM-Variante) so ziemlich die 
effizienteste Methode!

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.