mikrocontroller.net

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


Autor: Hendrik G-punkt (hndr)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Hans Meier (h_meier)
Datum:

Bewertung
0 lesenswert
nicht 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-Tu...
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

Autor: inoffizieller WM-Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein Schalltplan wäre nicht schlecht...

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Hendrik G-punkt (hndr)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Karl heinz Buchegger (kbucheg)
Datum:

Bewertung
0 lesenswert
nicht 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 -

Autor: Thomas O. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.