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 | }
|