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
Lesezeichen