Forum: Mikrocontroller und Digitale Elektronik LED ein/ausschalten


von Wimme (Gast)


Lesenswert?

Hallo!

Ich habe einen Atmega644 und möchte mit diesem eine LED an bzw. 
ausschalten.
Die LED befindet sich in einem Schaltkreis der mit PINC1 und dem GND des 
MCs verbunden ist.
Nun meine Frage:
Reicht es um die LED einzuschalten, den Ausgang PINC1 auf 1 zu setzen?
Oder muss ich, so wie ich es mal gelesen habe, aber irgnedwie für 
unlogisch halte, das ganze etwa auf 0 setzen?

Im Tutorial habe ich sowas hier gesehen:
PORTB ^= ( 1 << PB0 );

Was genau soll das eigentlich bedeuten?

Dankeschön!
Wimme

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Wimme wrote:

> Ich habe einen Atmega644 und möchte mit diesem eine LED an bzw.
> ausschalten.

Geht.

> Die LED befindet sich in einem Schaltkreis der mit PINC1 und dem GND des
> MCs verbunden ist.

Hoffentlich mit einem Vorwiderstand im Schaltkreis zur Strombegrenzung.
http://www.mikrocontroller.net/articles/LED#Vorwiderstand

> Nun meine Frage:
> Reicht es um die LED einzuschalten, den Ausgang PINC1 auf 1 zu setzen?

Kommt darauf an, wie die LED angeschlossen ist. Wenn sie

Pin    Vorwiderstand     LED
---+--------###----------->|--------+ GND

Angeschlossen ist, muss der Pin eine positive Spannung liefern, um die 
LED zum leuchten zu bringen. Dann stimmt deine Vermutung bzgl. des 
Ausgangspegels (HIGH, 1).

Zusätzlich muss der Portpin auch noch als Ausgang konfiguriert werden.
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Datenrichtung_bestimmen

> Im Tutorial habe ich sowas hier gesehen:
> PORTB ^= ( 1 << PB0 );
> Was genau soll das eigentlich bedeuten?

Anweisungen dieser Art nimmt man, um Bits in einer Zahl zu toggeln, d.h. 
1 in 0 umzuwandeln und 0 in 1. Nützlich beim Blinken einer LED... 
Erklärungen stehen im Artikel Bitmanipulation bzw. die Operatoren ^ 
und << sind in allgemeinen C-Lehrbüchern erklärt.

von Otto (Gast)


Lesenswert?

Hallo Wimme,

1. Du musst zwischen µC und LED einen Vorwiderstand von ca. 1k einbauen.
2. Du musst das Datenrichtungsregister für den Portpin auf "1" setzen.
3. Wenn die LED zwischen Portpin und Masse liegt, ist PC1 = "1" LED ein.

Otto

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.