Forum: Mikrocontroller und Digitale Elektronik Bits vertauscht, 1=low / 0= high - Warum?


von Sven (Gast)


Lesenswert?

Ich habe dieses Wochenende angefangen mich mit dem Atmel, at90s8115, zu
beschäftigen. Ich habe acht LEDs, gemäss der Beschreibung AVR-Tutorial
- 2. I/O-Grundlagen angeschossen, also Kathode der LEDs an den Ausgang
des Port A, und über die Widerstände gehts an VCC. Dann  habe ich
folgendes Testprogramm mit AVR-GCC geschrieben: DDRA=0xFF (Port A auf
Ausgang) und alle Bits gesetzt mit PORTA=255. Nach dem Ausführen des
Programms gehen alles LEDs aus, und wenn ich PORTA=0 schreibe gehen
alle LCDS an. Also genau umgekehrt wie ich mir das denke - Warum ???

von Christian Zietz (Gast)


Lesenswert?

Du schreibst ja selbst: Du hast ein Ende der LEDs an VCC, also +5V
angeschlossen. Wenn Du die Port-Pins nun mit PORTA=255 high schaltest,
gehen sie auf ca. +5V und Deine LEDs folglich aus. PORTA=0 schaltet die
Pins auf ca. 0V.

von Daniel Lancelle (Gast)


Lesenswert?

Ganz einfach. Wenn der Ausgang auf low geht, leuchtet die LEDs, weil sie
dann an VCC und über den Controller an GND angeschlossen ist. Geht der
Ausgang auf high, leuchtet sie nicht, weil beide Anschlüsse auf VCC
liegen und daher kein Strom fließen kann. wenn du die LEDs über einen
Widerstand mit der Anode an den Ausgang legts und die Kathode an GND,
dann ist es genau andersherum: Port auf high --> LED leuchtet, Port auf
low --> LED leuchtet nicht.

Gruß

von Sven (Gast)


Lesenswert?

Vielen Dank, darüber habe ich mir seit vergangen Freitag den Kopf
zerbrochen. Jetzt ist mir das schon klar.

Beitrag #7320721 wurde von einem Moderator gelöscht.
Beitrag #7320723 wurde von einem Moderator gelöscht.
Beitrag #7320725 wurde von einem Moderator gelöscht.
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.