Hallo, die Lösung mit dem Markro funktioniert auch nur, wenn ich auch den PIN mit den Taster als Ausgang initialisiere. Wenn ich den PB1 als Input initialisiere, klappt auch die Makro Lösung nicht (ich wunder mich immer noch). Genauso gut klappt aber auch die auskommentierte Lösung mit der If-Anweisung.
Hier das was klappt:
noch einmal vielen Dank.Code:#include <avr/io.h> #include <avr/interrupt.h> #define VALUEPB1 ((PINB & (1<<PB1)) > 0 ? (1):(0)) int main( void ) { DDRB = 0xFF; // Alles als Ausgang deklarieren PORTB |= (1 << PB1); // Pin 1 auf High PORTB |= (1 << PINB4); // LED an while(1) { switch(VALUEPB1) { case 0: //bit is cleared PORTB |= (1 << PB4); break; case 1: //bit is set PORTB &= ~(1 << PB4); break; default: //fallthru break; } /* if( bit_is_clear(PINB, PB1)) PORTB |= (1 << PB4); else PORTB &= ~(1 << PB4); */ } }
Gruß Frank






Zitieren

Lesezeichen