Hallo, in der Schule wurde uns die Aufgabe gestellt einen Motor mit Hilfe des MSP430 anzusteuern. Wir sollen das über ein einstellbares PWM Signal mit Timer B in C realisieren. Nur leider habe ich überhaupt keine Ahnung davon. Hat jemand so eine Funktion, oder könnte mir jemand weiterhelfen? Vielen Dank schonmal Gruß Timo
Hi! Hast Du denn überhaupt schon eine Toolchain für den MSP430? Auf welchem Prozessor dieser Familie sollst Du das denn realisieren?
Toolchain ist die "Entwicklungsumgebung", also Compiler und Tools zum erstellen der nötigen Files.
Wir benutzen einen einfachen Texteditor, compilieren mit gcc und laden mit IAR Systems die Software in den Flash
PWM : PUls-Weiten-Modulation. Es gibt verschiedene Modelle - ich erläutere jetzt kurz den phasen- und frequenzrichtigen Modus. Es gibt eine feste Dauer eines Zyklus, im weiteren f_PWM. Während dieses Zyklus ist die Spannung eine Zeit lang 100% an, den Rest des Zyklus aus. Mit einem Timer kann man das wie folgt realisieren : Man lässt den Timer von 0 aus hochzählen. Wenn er eine vorgegebene Obergrenze erreicht hat, lässt man ihn wieder herunterzählen bis auf Null und dann wieder von vorn. Die Zykluszeit ist dann genau T_PWM = 2 * (Obergrenze) * (Zeit für einen Schritt) (Achtung - falls höchste Genauigkeit gefordert ist, muss man sich noch Gedanken machen, was im Zähler im Umkehrpunkt passiert!) f_PWM = 1/T_PWM Es fehlt jetzt noch das Ein-/Ausschalten der Spannung. Das realisiert man durch einen einstellbaren Wert zwischen 0 und Obergrenze des Zählers. Erreicht der Zähler beim Aufwärtszählen den Wert (x_PWM) so wird der Ausgang ausgeschaltet. Beim Erneuten Durchlaufen beim Herunterzählen wird der Ausgang wieder eingeschaltet. Als Puls-/Pauseverhältnis ergibt sich : ED = x_PWM / Obergrenze (mit 0<=x_PWM<=Obergrenze) Um die Phasen-Richtigkeit zu gewährleisten und Fehlzyklen zu vermeiden, darf der Wert x_PWM nur im Zählerstand 0 modifiziert werden. Tips : - Im Datenblatt das Zählerkapitel durchlesen - nach "Compare-Match" suchen - nach "PWM" suchen - bei Nichtverstehen wieder hier mit Seitenangabe hier nachfragen MfG, Khani
Aha! Für den Timer_A gibt es ein Beispiel, wie man mit dem PWM macht. Mit Hilfe des Datenblattes sollte das recht einfach auf den Timer_B übertragbar sein! Schau doch mal in "/examples" im mspgcc-Verzeichnis. Genauer: /examples/slac015/fet140_ta_pwm01 bis fet140_ta_pwm06 Für den Timer_B hab ich jetzt auf Anhieb kein Beispiel gefunden, kann aber sein, daß eins dabei ist. Aber wie gesagt: mit dem Family User Guide lässt sich das auch einfach auf den Timer_B anpassen.
Na das ging aber flott! Würdest Du uns mal auf Deine Sourcen gucken lassen? Würd mich jetzt echt interessieren...
Die Pwm Funktion sieht folgendermassen aus: void PWM(int dutycycle, int period) { TBCTL = MC_0; // Stop the timer TBCTL = TASSEL_2 + TBCLR; // ACLK, Clear Tar TBCCR0 = period; // PWM Period TBCCTL2 = OUTMOD_7; // CCR2 reset/set TBCCR2 = dutycycle; // CCR2 PWM duty cycle P4DIR |= 0x0F; // P4 output P4SEL |= 0x0F; // P4 TA1/2 otions TBCTL |= MC0; // Start Timer_B in up mode }
Hm, das sah nach so nem "wer macht meine Hausaufgaben"-Thread aus, aber anscheinend hat ja wirklich nur der Denkanstoß gefehlt. Weiter so...
Das stimmt nicht ganz. Ich hatte eine Lösung mit einer Schleife, die mir mein Ausgangssignal generiert hat. Was natürlich keine saubere Lösung war, da ja nicht anderes mehr gemacht werden kann. Die zweite Aufgabe baute dann auf die erste auf und meine Lösung war damit hinfällig. Ich habe nur den Hinweis auf Timer B erhalten. Da ich vorher nie mit Timern gearbeitet habe stand ich wie der "Ochs vorm Berg", durch eure Denkanstösse konnte ich diesen Teil der Aufgabe aber ziemlich schnell lösen. Tolles Forum und vielen Dank nochmals für die Hilfe Timo
Und auf www.mathar.com hab ich das ganze noch als schicke kleine Lichtorgel mit dem Timer_A gemacht. Falls euer Lehrer 'ne Disco machen möchte oder so ... ;-)
Hi @Sebastian Meinst du du könntest deine Seite so gestalten das sie auch mit Auflösungen jenseits von 1024x768 ordentlich dargestellt wird? Hier (1600x1200) ist alles seitlich verschoben. Siehe Anhang. Zusätzlich könnte ein Besuch von http://validator.w3.org/ nicht schaden. Bitte nicht böse sein. Nur konstruktive Kritik. Matthias
Jaja, ich weiss. Die Seite ist blöderweise für 1024*768 optimiert. Sobald ich Zeit habe, werde ich sie "offener" gestalten. Solange muss eben noch der Inhalt zählen, nicht die Form. ;-)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.