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:
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);

*/
  
  }
}
noch einmal vielen Dank.
Gruß Frank