Andi schrieb:
> Erstmal danke für die Antwort und Sorry wenn ich mich zu blöd anstelle.
>
> Aber ich kapiers nicht im Tutorial wirds doch auch nicht anders gemacht
> als in meinem Programm.
Nochmal.
Wenn der µC Strom bekommt und dein Programm losläuft, sind bereits alle
Ports auf Eingang geschaltet. Das ist der Default-Zustand. In diesem
Zustand erhält dein main() die Kontrolle
Das du hier
1 | int main (void)
|
2 | {
|
3 | DDRC &= ~(1<<PC0); //Pin C1 als Eingang setzen
|
den Pin PC0 auf Eingang setzt, ist zwar löblich, aber eigentlich ist der
bereits auf Eingang geschaltet.
Du musst aber auf jeden Fall jeden Pin, den du als Ausgangspin verwenden
willst, auf Ausgang schalten (über das DDR Register) und das tust du
nicht!
Das hier
1 | PORTB |= (1<<PB0); //Pin B0 auf Ausgang und High setzen
|
schaltet den Pin nicht auf Ausgang!
Das schaltet den Pin, sofern er auf Ausgang gestellt ist auf 1. Aber
dazu muss er erst einmal als Ausgangspin definiert werden!
> Irgendwie leuchtet die led jetzt egal ob die brücke gesteckt ist
> oder nicht :)
Deine Alternativen sind daher:
Die Brücke ist gesteckt und die 1 vom Ausgangspin steuert den
Eingangspin auf 1
Aber: Wenn die Brücke nicht gesteckt ist, heißt das nicht automatisch,
dass der Eingangspin dann 0 ist! Ein Eingang der nicht aktiv angesteuert
wird (und der keinen Pullup Widerstand geschaltet hat) kann entweder 0
oder 1 sein, je nachdem wie weit dein Fernseher entfernt ist, heute
Vollmond ist bzw. wieviele Bier noch in deinem Eiskasten sind.
Man lässt einen Eingangspin niemals unbeaufsichtigt! Der darf nie
einfach so in der Luft hängen. Denn dann tut er genau das: Er saugt sich
jedes noch so kleine elektromagnetische Feld aus der Luft und schaltet
unkontrolliert damit auf 0 oder 1.