Mini-FAQ : Die Port-Register DDRx, PORTx, PINx

dino03

Aktives Mitglied
27. Okt. 2008
6.760
20
38
Sprachen
  1. BascomAVR
  2. Assembler
Hallo zusammmen,

es ist mal wieder an der Zeit ein paar Sachen zu erklären ... :D
Ich bin mal wieder schreibwütig :rolleyes:

Also heute geht es um die Anschlüsse der ATmegas und der dazu gehörigen
Port-Register DDRx, PORTx, PINx .

Zuerst mal die Namen ...

DDRB0 : Data Direction Register von Port B Bit 0

PORTB0 : PORT-Register von Port B Bit 0 (Ausgangs-Register)

PINB0 : Port INput-Register von Port B Bit 0 (Eingang , Abfrage des Anschlusses)

= = = = =

Mit den Bits im DDRx legt man also die Datenrichtung fest. Also ob man
den entsprechenden Anschluß des Ports als Eingang (0) abfragen oder
aber als Ausgang (1) etwas mit ihm steuern will.
_ _ _ _ _

Unabhängig von der eingestellten Datenrichtung kann man über das
PINx-Register immer die anliegenden Logikpegel der einzelnen Anschlüsse
abfragen
(0, Low, GND, 0V /// 1, High, +Vcc, +5V)
_ _ _ _ _

Mit dem PORTx-Register kann man zwei Sachen steuern (abhängig von der
eingestellten Datenrichtung).

1. Der Anschluß ist als Ausgang geschaltet ...
nun steuert man mit dem entsprechenden Bit im Register ob an dem
Anschluß ein logischer High-Pegel (+Vcc / +5V) oder ein logischer
Low-Pegel
(GND / 0V) anliegen soll. Wenn er +5V liefert, dann fließt der
Strom zwangsläufig aus dem Anschluß heraus (source) durch einen Verbraucher
(LED, Widerstand, ...) nach GND. Wenn er nach GND durchgeschaltet ist,
dann nimmt der Anschluß Strom auf (sink) der durch einen Verbraucher von
+5V an diesen Anschluß geliefert wird.

2. Der Anschluß ist als Eingang geschaltet ...
nun steuert man mit dem entsprechenden Bit im Register ob an dem
Anschluß der PullUp-Widerstand eingeschaltet (1) oder ausgeschaltet (0)
werden soll. Wenn man ihn ausschaltet ist der Eingang hochohmig. Wenn
man jetzt keinen definierten Pegel an dem Anschluß anlegt, fängt er wie
eine Antenne den Elektrosmog/Schmutz der Umgebung ein und interpretiert
ihn als logische Pegel. Das kann dann Netzbrummen oder der Radiosender
aus der Gegend sein. Dadurch wird der Anschluß natürlich dauernd hin und
hergeschaltet. Durch die dauernde Pegelwechsel steigt auch der Stromverbrauch
des Prozessors. Laut Atmel soll man an unbenutzten Eingängen den internen
PullUp-Widerstand aktivieren um Strom zu sparen. Man soll unbenutzte
Anschlüsse nicht als Ausgang definieren um nicht versehentlich Kurzschlüsse
zu erzeugen.

Hier ist noch einmal die Tabelle mit den Einstellungen aus dem Datenblatt ...
PortPinCfg.png

und damit es verständlicher wird habe ich mich auch noch ein wenig
künstlerisch betätigt ... :D

Als Beispiel habe ich Port B verwendet.
Hier ist ein Anschluß einmal als Ausgang dargestellt ...
Mega-InOut_0.png

und noch einmal als Eingang ...
Mega-InOut_1.png

Ich hoffe mal, es hilft beim Verständnis der Register-Funktionen weiter.

Und noch einmal ganz deutlich : Mit dem DDRx-Register stellt man die
DATENRICHTUNG der einzelnen Anschlüsse ein und NICHT die Stromrichtung.

Gruß
Dino
 
Zuletzt bearbeitet:
Kompliment

So ziemlich die beste Erklärung, welche ich je gesehen habe.

mfG Kurt
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)