menubutton
Home
Contact
About
Disclaimer
Privacy Policy

Beispielcode: MSP430 PDM-Beispiel


By Nicholas Brown.

Für dieses MSP430-PDM-Beispiel schreiben wir ein sehr einfaches Programm für das TI-Launchpad-MSP430G2553-Entwicklungssystem, das auf Kontaktstift 1.2 ein PDM-Signal mit einer Einschaltdauer von 50 % erzeugt. Falls noch nicht geschehen, können Sie das für dieses Beispiel verwendete MSP430-Launchpad-System erwerben.

msp430g2452 MSP430 G2. Bild: Kompulsa.

Eine kurze Einführung in die PDM

PDM steht für Pulsdauermodulation, und die Dauer jedes Pulses ist eigentlich der Zeitraum, in dem der Strom eingeschaltet ist. Die Einschaltdauer ist der Prozentsatz der Zeit, in dem der Strom eingeschaltet ist. Eine Einschaltdauer von 50 % hat somit zur Folge, dass der Strom während der Hälfte der Zeit eingeschaltet und dann während der übrigen 50 % der Zeit ausgeschaltet wird.

Dies geschieht viele Male pro Sekunde, so dass Sie ohne ein Oszilloskop nicht genau erkennen können, was passiert. Sie können es jedoch testen, indem Sie die Spannung an den Kontaktstiften wie nachfolgend erläutert prüfen oder eine diskrete LED an Kontaktstift 1.2 anschließen. Sie können die Spannung mit einem Multimeter messen oder mittels eines Oszilloskops die PDM-Wellenform genauer betrachten.

Eine diskrete LED (dies ist die kleinste Art von LED; sie findet Verwendung bei der Hintergrundbeleuchtung von Tastaturen, Zugriffsanzeigen an Laufwerken usw.) ist erforderlich, da Mikrocontroller nicht dafür vorgesehen sind, hohe Stromstärken zu erbringen. Die LED sollte normal aufleuchten, aber etwa 50 % ihrer maximalen Helligkeit aufweisen.

PDM ist hochentwickelt, aber einfach, und sie eröffnet die Möglichkeit für effizientere Geräte. Sie benötigen nur eine MCU mit Timer und Kenntnisse auf dem Gebiet der Allzweckeingabe/-ausgabe. Sie könnten zur Steuerung einer hellen LED auch Transistoren verwenden (in Gestalt eines Darlington-Paars, eines Darlington-Transistors oder eines MOSFET), um eine Anpassung für die Beleuchtung eines Raums oder andere helle Beleuchtungen vorzunehmen.

Wenn Sie mit der Allzweckeingabe/-ausgabe, dem Grundpfeiler der PDM, nicht vertraut sind, können Sie hier erfahren, wie sie funktioniert. Eine ausführlichere Erläuterung der PDM finden Sie in Kompulsas Einführung in die PDM.

Der nachfolgende Code erzeugt eine Rechteckwelle.

Beispielcode

    
    #include 
    int main(void) {
        WDTCTL = WDTPW + WDTHOLD; //Watchdog-Timer aus.
        P1DIR |= BIT2; //Kontaktstift 1.2 zu Ausgabe.
        P1SEL |= BIT2; //Kontaktstift 1.2 fur PDM.
        TA0CCR0 = 1000; //1000 Mikrosekunden.
        TA0CCTL1 = OUTMOD_7;
        TA0CCR1 = 500; //Einschalten für 500 Mikrosekunden.
        TA0CTL = TASSEL_2 + MC_1;
        __bis_SR_register(LPM0_bits); //Wechzeln zu LPM0.
    }
    
    

Wenn Sie den Wert, den wir TA0CCR1 zugewiesen haben, durch den teilen, den wir TA0CCR0 zugewiesen haben, werden Sie sehen, dass wir für dieses Beispiel eine PDM-Einschaltdauer von 50 % PWM wählten. Um eine PDM-Einschaltdauer von 25 % zu erhalten, würden Sie einfach einen Wert von 250 auf TA0CCR1 schreiben.

Glossar

TA0CCR0: Timer A0, Register 0 erfassen/vergleichen.

TA0CCR1: Timer A0, Register 1 erfassen/vergleichen.

TA0CCTL1: Timer A0, Kontrollregister 1 erfassen/vergleichen.

TA0CTL: Kontrollregister für Timer A0.