Forum: Mikrocontroller und Digitale Elektronik MSP430 - #define GREEN_LED BIT6 - funktioniert nicht richtig


von Tristan S. (reacher)


Angehängte Dateien:

Lesenswert?

Hier ist mein Code.
Wie ihr seht funktioniert es mal und mal nicht...

#include <msp430g2553.h>


#define RED_LED BIT0;
#define GREEN_LED BIT6;

double i = 0;

void wait(double j){
    for (i = 0; i < j; ++i) {
    }
}

void main(void)
{
    WDTCTL = WDTPW + WDTHOLD;
    P1DIR |= BIT0 + BIT6; <-- Hier funktioniert GREEN_LED oder RED_LED 
nicht (P1DIR |= GREEN_LED + RED_LED)

    while(1)
    {
        P1OUT ^= GREEN_LED; <-- hier funktioniert es
        wait(1000);
        P1OUT ^= RED_LED; <-- hier funktioniert es
    }
}

Danke für eure Hilfe.

von ewwer (Gast)


Lesenswert?

wait nach red?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Ganz genau hingucken:
1
#define RED_LED BIT0;
2
#define GREEN_LED BIT6;
3
4
...
5
6
    P1DIR |= GREEN_LED + RED_LED;
7
8
....
9
10
    P1OUT ^= GREEN_LED;

Was geschieht beim Textersatz eines #defines?

Der komplette Text wird ersetzt.

In Deinem Code passiert das hier :
1
#define RED_LED BIT0;
2
#define GREEN_LED BIT6;
3
4
...
5
6
    P1DIR |= BIT6; + BIT0; ;
7
8
....
9
10
    P1OUT ^= BIT6; ;

Na? Fällt Dir was auf?

von Tristan S. (reacher)


Lesenswert?

Sorry habe vergessen zu sagen, dass eine Warnmeldung kommt
"expression has no effect"
Diese Meldung kommt wenn ich BIT0 und BIT6 benutze nicht (dann blinken 
auch beide abwechselnd).
Nur bei den Variablen GREEN_LED und RED_LED.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Tristan S. schrieb:
> Sorry habe vergessen zu sagen, dass eine Warnmeldung kommt
> "expression has no effect"

Eben. Lies mal, was ich gerade geschrieben habe.

Genau hinsehen!

von Tristan S. (reacher)


Lesenswert?

Vielen Dank ^^
Das ging ja echt schnell.
Bin etwas Java verseucht (alles mit ; abschließen) und habe es total 
übersehen.
Das ist die Lösung!!!

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
Noch kein Account? Hier anmelden.