Forum: Mikrocontroller und Digitale Elektronik LEDs an STK500 aktiv bei logisch 0?


von Andreas N. (typohneahnung)


Lesenswert?

Hallo miteinander,

habe gestern versucht mit meinem stk500 mal was einfaches zu probieren 
für den anfang. ich wollte die leds ansprechen über portb, aber wenn ich 
ne 1 auf den entsprechenden pin geschrieben hab, war die led aus, bei 
ner 0 ging sie an. komisch oder?

einstellungen portb:

DDRB=0xff;
PORTB=0b00001010;

d.h. die ersten vier leds sind an, dann eine aus, usw.

woran könnte das liegen?


grüße

von Andreas K. (a-k)


Lesenswert?

Andreas Neef wrote:

> ne 1 auf den entsprechenden pin geschrieben hab, war die led aus, bei
> ner 0 ging sie an. komisch oder?

Ist so, ja. Und für Leute, die schon einmal mit TTL- oder NMOS-Technik 
gearbeitet haben, ist diese Sichtweise auch völlig normal.

Früher konnten Ausgänge weit besser runter als hochziehen, bei 
8051-Varianten ist das heute noch oft so und die alten AT90-AVRs waren 
auch nicht symmetrisch.

von Patrick (Gast)


Lesenswert?

Siehe hier erstes Bild:

AVR-Tutorial: IO-Grundlagen

Da ist gezeigt, wie die LEDs angeschlossen sind.

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Die Schaltung der LEDs auf dem STK500 ist analog wie in 
http://www.mikrocontroller.net/articles/AVR-Tutorial:_IO-Grundlagen#Hardware

> PORTB=0b00001010;
> d.h. die ersten vier leds sind an, dann eine aus, usw.

Aus der Sichtweise des Programmieres sind nicht die ersten sondern die 
oberen LEDs an (4 bis 7, sowie 0 und 2).

Bit   76543210
    0b00001010;

Siehe auch Zahlensysteme
http://www.mikrocontroller.net/articles/AVR-Tutorial:_IO-Grundlagen#Zahlensysteme

von Andreas N. (typohneahnung)


Lesenswert?

Aha, alles klar. das tutorial hilft soweit weiter, danke.

man lernt nie aus...

von Andreas N. (typohneahnung)


Lesenswert?

D.h. aber dann auch, wenn ich eine Bitfolge direkt ausgeben möchte, muss 
ich sie vorher, wie auch immer, invertieren? Da kommt man doch 
durcheinander oder?

von Falk B. (falk)


Lesenswert?

@ Andreas Neef (typohneahnung)

>D.h. aber dann auch, wenn ich eine Bitfolge direkt ausgeben möchte, muss
>ich sie vorher, wie auch immer, invertieren?

Wo ist das Problem? Das ist ein einfacher Befehl, sowohl in C als auch 
Assembler.
1
  com    r16
1
  PORTA = ~leds;

> Da kommt man doch durcheinander oder?

Nö.

MFG
Falk

von vorbeigeschlendert (Gast)


Lesenswert?

>D.h. aber dann auch, wenn ich eine Bitfolge direkt ausgeben möchte,
>muss ich sie vorher, wie auch immer, invertieren? Da kommt man
>doch durcheinander oder?

das liegt eben in deinem Ermessen... 'denkst' du high-active oder 
low-active... von links nach rechts oder von rechts nach links...

das schöne ist, man kann sich das so einrichten wie man am besten damit 
klarkommt...

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.