Forum: Mikrocontroller und Digitale Elektronik Atmega8 vertauscht Bits(?)


von Hendrik G. (hndr)


Lesenswert?

Hey Leute,
jetzt bin ich doch wieder etwas verzweifelt... Nachdem mein letztes
mysteriöses Problem simpel gelöst wurde, hoffe ich mal, dass das beim
2. auch so ist, allerdings komm ich nicht ganz von selbst drauf.

Ich habe einen Atmega8 mit dem Einsteigerboard aus dem Shop hier. So
wie ich das verstanden hab, muss man, um z.B. eine LED an einem Ausgang
anzumachen, das entsprechende Bit am Pin von 1 auf 0 setzen und sie
leuchtet. So verhält sich auf dem Board auch die Beispielled. Wenn man
einen Taster an einem Eingang hat (verbindet Masse und nen Eingangspin)
sollte ja bei gedrücktem Taster das entsprechende Bit ebenfalls von 1
auf 0 springen. Der AVR-Simulator verhält sich jedenfalls so.

Mein Problem: Alles, was ich angeschlossen hab, verhält sich genau
andersrum: Schließe ich eine LED an einen Ausgang, geht sie bei 1 an
und bei 0 aus. Ein Taster erzeugt gedrückt eine 1, losgelassen eine 0.
Besonders paradox: schließe ich eine 2. LED an die Beispiel-LED, geht
die Beispiel-LED bei 1 aus, meine 2. geht dafür bei 1 an (bei 0 genau
umgekehrt).
Was könnte ich da falsch machen? :( Würde mich echt über kleine oder
große Hinweise freuen.

von Hans M. (h_meier)


Lesenswert?

Hallo,

ohne das Board zu kennen: wie sieht die Hardware aus?
Schaltet der Taster gegen GND oder VCC?
Ist die LED gegen GND oder VCC geschaltet?
Je nach Anschlussart hast du das beschriebene Verhalten. Siehe dazu für
die Eingänge/Taster z.B. hier:
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Tasten_und_Schalter
Für die Ausgänge verhält es sich analog. Wenn dein uC 1 liefert (=VCC)
und du den Verbraucher gegen VCC angeschlossen hast, fließt kein Strom.
Ist er hingegen gegen GND geschaltet, fließt Strom => LED leuchtet. Wenn
dein uC eine 0 liefert (=GND) und dein Verbraucher ist gegen VCC
angeschlossen, fließt Strom => LED leuchtet. Ist er hingegen gegen GND
geschaltet, fließt kein Strom.

Hans

von inoffizieller WM-Rahul (Gast)


Lesenswert?

Ein Schalltplan wäre nicht schlecht...

von Karl H. (kbuchegg)


Lesenswert?

> Alles, was ich angeschlossen hab, verhält sich genau
> andersrum:

Dann hast du nicht wirklich verstanden, wie die Beispielled
angeschlossen war.
Studier den Schaltplan! Wenn du keinen hast: Studier die
Leiterführung auf dem Board.

Du wirst feststellen, dass im Falle der Beispielled es
vom Ausgang des Mega8 über die Led nach + geht.
Deine eigenen Leds jedoch sind nach - verkabelt.

von Hendrik G. (hndr)


Lesenswert?

...Und wieder war es so eine verhältnismäßig einfache Erklärung, auf die
nich nie allein gekommen wär :D Danke Leute, aber ich muss noch viel
lernen...
Ich hab mir das mit meinen bescheidenen Elektronikkentnissen so
vorgestellt, als ob sozusagen im µC eine art Schalter ist, der einfach
nur nen Kontakt schließt und entweder 5V anschaltet oder den Stromkreis
unterbricht. Genau das Gleiche bei den Inputs...
Es war tatsächlich so, dass ich gegen GND geschaltet habe.

von Karl heinz B. (kbucheg)


Lesenswert?

> Ich hab mir das mit meinen bescheidenen Elektronikkentnissen so
> vorgestellt, als ob sozusagen im µC eine art Schalter ist,

Diese Modell ist auch nicht schlecht als Gedankenmodell.
Nur sieht der Schalter in etwa so aus:


  +  ----------------+
                     |
                     |
                     o
                       \
                        \
                         ------- Pin an dem du deine Schaltung
                                 anhängst

                     o
                     |
                     |
  - -----------------+

Der Schalter schaltet also den Ausgangspin wahlweise an +
oder an -

von Thomas O. (Gast)


Lesenswert?

ändere einfach den Befehl mit dem du den Pin abfrägst, also statt
sbis, pind7 ->sbic, pind7 oder umgekehrt also springe wenn gelöscht
oder wenn gesetzt.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.