Hallo, ich komme einfach nicht weiter. An einem mega8 habe ich an PortC über je eine Vorwiderstand eine LED mit VCC verbunden. Über die Makro (z.B. LED_STATUS_ON) kann ich diese auch ein- und ausschalten und über das Makro isStatusLedOn auf den Zustand abfragen. Die StatusLED und die grüne LED blinken gemeinsam. So weit - So gut. Nur wenn ich über das Makro isGREENLedOn klappt nicht - die rote LED bleibt aus und damit auch alle restlichen. Kann mir jemand weiterhelfen?
1 | #define isStatusLedOn ((PORTC & (1 << LED_STATUS)) == LED_STATUS)
|
Kann nicht funktionieren. Müsste vielmehr so heißen:
1 | #define isStatusLedOn ((PORTC & (1 << LED_STATUS)) == (1 << LED_STATUS))
|
2 | /* oder */
|
3 | #define isStatusLedOn ( (PORTC & _BV(LED_STATUS)) == _BV(LED_STATUS) )
|
Vielen Danke! Natürlich - jetzt fällt es mir auch auf! Bei isStatusLED hat es funktioniert, da 1 == (1<<StausLED) ist. Oh Mann - ich hab schon an meinem Verstand gezweifelt.
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.