Marcel L. schrieb:
> Weiterhin habe ich den Quellcode 1 zu 1 ins Atmel Studio kopiert
welchen?
Den hier
http://www.mikrocontroller.net/articles/AVR-Tutorial:_IO-Grundlagen#Eingabe
> und
> über ein STK500 auf den Controller geflasht. Wenn ich den Taster an PD0
> betätige (dann soll eigentlich nur PB0=0 werden) wird ebenfalls der
> PB5=0. Manchmal wird PB5 auch 0 (also LED geht an) wenn ich nichts
> drücke.
Das ist ok.
Du hast nur an den ersten 4 Pins einen Taster (und einen externen
Pullup). Du hast doch die erste Schaltung mit den externen
Pullup-Widerständen genommen, oder?
Der springende Punkt ist der, dass in diesem Programm keine internen
Pullup-Widerstände gesetzt sind. D.h. an allen Pins, an denen nichts
hängt (PD4 bis PD7) kann alles mögliche passieren. Die Eingänge sind
offen und je nachdem wie gerade der Wasserstand in der Donau ist, der
Fernseher eingeschaltet ist, dein Handy sich gerade was mit dem
Telefon-Provider aushandelt, ... fängt sich so ein offener Eingang alles
mögliche an elektromagnetischer Strahlung aus der Umgbung ein.
PD5 ist ein offener Eingang und mittels
in r16, PIND
out PORTB, r16
wird der komplette Port, also auch der Zustand aller offenen Eingänge
vom Port D auf den Port B 'gespiegelt'. Deine PB5 zeigt dir also gerade
an, dass sich der offene Eingang etwas 'eingefangen' hat.
> Ähnlich verhält es sich mit PD3 und PB4, Anstatt das nur PB3 0 wird,
> wird auch PB4=0.
Selbe Ursache. Kein Grund zur Panik.
Merk dir daraus: ein Eingang an dem nichts hängt, ist nicht sicher
gestellt, dass er sich mit 0 meldet.
Schliess deine Taster mal ohne externen Pullup an, so wie das dann in
weiterer Folge gezeigt wird und schalte dafür den internen Pullup am
kompletten Port D ein.