MSP430 Pin auf high + PWM

Gast #3149945
Lesenswert?
• ▲
▼
Guten Tag,
ich brauche mal eure Hilfe bei einem MSP430.
Ich möchte an einen Ausgang(Pin 1.2) ein PWM Signal ausgeben, welche 
aber nur ab und zu benötigt wird.
PWM an sich ist auch kein Problem, aber der Pin muss standardmäßig, wenn 
keine PWM benötigt wird, auf high sein.
Ich habe zwar eine Lösung, in der ich jedesmal den Pin sofort wieder auf 
high setze, wenn keine PWM ist, jedoch frage ich mich, ob es da nicht 
auch eine, sagen wir mal elegantere, Lösung für gibt.
Ich habe es schon probiert mit P1REN |= BIT2, jedoch funktioniert dann 
die PWM nicht mehr.
Danke :)
1
void main(void) {
2

3
  WDTCTL = WDTPW | WDTHOLD;
4

5
  P1DIR |= BIT2;
6
  P1SEL = 0x00;
7
  P1SEL = BIT2;              //PWM
8
  P1OUT |= BIT2;             //Ausgang
9
  //P1REN |= BIT2;
10
  P1OUT &=~ BIT1;      
11
  P1REN |= BIT1;             //Pull down
12

13
  BCSCTL1 = CALBC1_8MHZ;
14
  DCOCTL = CALDCO_8MHZ;
15

16
  TA0CCTL1 = OUTMOD_4;       //Toggle
17
  TA0CTL = TASSEL_2 + MC_0;  //SMCLK & Stop
18
  TA0CCR1 = 32000;
19

20
  while(1){
21
    if(P1IN & BIT1)
22
      TA0CTL |= MC_2;        //Cont. mode
23
    else{
24
      //P1OUT |= BIT2;
25
      P1OUT |= BIT2;
26
      TA0CTL &=~ MC_2;       //Stop
27
    }
28
  }
29
}
Gast #3150736
Lesenswert?
• ▲
▼
guten morgen,
Stimmt, mit dem DutyCycle ist ne gute Idee gewesen.
Habe jetzt einen Mix aus beiden Antworten, es funktioniert Bestens und 
meiner Meinung nach ne bessere Lösung als vorher. Danke!!

Jörg S. schrieb:
> Und es muss per Pull-Up sein?

Nein, muss nicht, war nur eine Überlegung von mir, die ja leider nicht 
so ganz funktioniert hat.

So funktioniert es jetzt genau wie es soll:
1
  while(1){
2
    if(P1IN & BIT1){
3
      TA0CTL |= MC_2;    //Cont. mode
4
      TA0CCR1 = 32000;
5
      TA0CCTL1 = OUTMOD_4;
6
    }
7
    else{
8
      TA0CCR1 = 65535;
9
      TA0CCTL1 = OUTMOD_1;
10
    }

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.