Forum: Mikrocontroller und Digitale Elektronik PORTA und DDRA Zusammenhang


von Sascha M. (stmech)


Lesenswert?

einen schönen guten Morgen!

bin ein Anfänger in Sachen Mikroprozessor und kann verschiedene 
Zusammenhänge einfach nicht komplett begreifen. Die Erklärung auf 
diversen Internet-Seiten und im Skript ist zu trocken und bringt mich 
leider auch nicht viel weiter.
Im Labor sollten wir eine Funktion zur Initialisierung der Ports 
erstellen.

als erstes kam der Befehl DDRA=0x00; wie ich verstanden haben, ist DDRA 
allgemein ein Eingang und wird nun auf 0 geschaltet (LEDs aus). Dann 
kommt ein komischer PORTA .. Der wird mit 0xff auf 1 geschaltet.
Die DDRB und PORTB werden auch auf 0xff geschaltet, also alle 1.

danach kann man anfangen mit proz. zu arbeiten.
Kann mir vielleicht jemand netterweise klar machen, wie diese komische 
DDRs und PORTs zusammenhängen?

Vielen dank im Voraus.

von ttl (Gast)


Lesenswert?

musst du in dem komischen Datenblatt nachlesen

von Ben _. (burning_silicon)


Lesenswert?

RTFM!!

DDR= Data Direction Register

Es legt fest, ob die entsprechenden Pins eines Ports als Eingang oder 
Ausgang benutzt werden sollen.

von Sascha M. (stmech)


Lesenswert?

Ben, vielen Dank für die Antwort!

von Marcel L. (superhans)


Lesenswert?

Ich steh auch noch ziemlich am Anfang.
Aber wie Ben___ schon sagte gibt DDRx jeweils die DataDirection fest, 
also ob Daten rein kommen oder raus gehen (Ein oder Ausgang). Mit PORTx 
kannst du dann sagen, dass ein Ausgang dann ein logisches High führen 
soll oder ein Low.

von Andi (Gast)


Lesenswert?

Dein ATmega(???) hat mehrere Ausgangsports (Port A, Port B, ...) deren 
Pins Px0 bis Px7 heißen.

Zu jedem Port gehören drei Register:
DDRx
PORTx
PINx

Jedes dieser Register ist 8 Bit breit, die Bits 1-8 im Register 
entsprechen den Pins 0-7.

Funktionen der Register:
DDR -> Datenrichtung bestimmen (0=Eingang, 1=Ausgang)
PORT -> Ausgaberegister
PIN -> Eingaberegister

Besonderheit des PORT-Registers: Seine Funktion ist vom DDR-Register 
abhängig.
Wenn DDR = 0: Aktiviert/deaktiviert interne Pull-Ups
Wenn DDR = 1: Schaltet Ausgangspin high/low

Deswegen kannst du mit dem PORT-Register auch keine Eingangssignale 
lesen, du würdest nur den Status der Pull-Ups einlesen.
Verwende also zum Einlesen das PIN-Register.

Du solltest zu dem Thema mal allgemein nach Atmega, AVR-GCC, Ports & 
Pins usw. googlen, da kommt noch einiges mehr...

von Sascha M. (stmech)


Lesenswert?

ach so, das heist DDR und PORT beschreiben ein Element des 
Mikroprozessors, sind aber für verschiedene Eigenschaften 
verantwortlich. So versteh ich das jetzt ..

von Sascha M. (stmech)


Lesenswert?

hey Andy, das ist ne super Erklärung! herzlichen Dank! Die Sache wird 
allmählich klarer )) genau, das ist ein Atmel AVR. Gruß

von Michael (Gast)


Lesenswert?

Sascha M. schrieb:
> Die Sache wird allmählich klarer )) genau

Wenn du dir jetzt im Datenblatt im Abschnitt "Ports as General Digital 
I/O" die Abbildung "General digital I/O" ansiehst, kannst du genau 
sehen, wie die drei für einen Port zuständigen Register zusammenwirken.

von datasheet (Gast)


Lesenswert?

Sascha M. schrieb:
> allmählich klarer )) genau, das ist ein Atmel AVR. Gruß

Und wenn du jetzt endlich mal die genaue Bezeichnung des µC bekanntgeben 
würdest, könnte man dir sogar das Datenblatt verlinken, das du offenbar 
nicht kennst.

von Heißduscher (Gast)


Lesenswert?

Weißt du, es gibt noch so viele andere schöne Hobbies.
Suche dir eines davon aus!

Wie wäre es mit Synchronschwimmen?

von EGS_TI (Gast)


Lesenswert?

Heißduscher schrieb:
> Diesen Beitrag bewerten:
>   ▲ lesenswert
>
>   ▼ nicht lesenswert
>
>
>
>       Weißt du, es gibt noch so viele andere schöne Hobbies.
> Suche dir eines davon aus!
>
> Wie wäre es mit Synchronschwimmen?

Das schlimme ist, dass es ja scheinbar kein Hobby ist, sonder er 
Elektrotechnik oder technische Informatik oder etwas ähnliches studiert, 
was die beiden kleinen Wörtchen "Skript" und "Labor" in seinem 
Anfangspost suggerieren. So besonders didaktisch wertvoll scheint das 
Skript nicht zu sein. Persönliche Erfahrung mit MCU-Technik scheint auch 
nicht vorhanden zu sein. Wieso also studiert man dann überhaupt sowas?
Jetzt hört man ja öfters, dass ein Studium einen lernfähig macht etc. 
pp. .
Alles nur Hörensagen. Also wozu braucht man noch ein Studium, wenn man 
es nicht mal mehr schafft, sich selber Informationen zu besorgen?

von ::::::::::::::::::::::::::::::::::: (Gast)


Lesenswert?

EGS_TI schrieb:
> So besonders didaktisch wertvoll scheint das
> Skript nicht zu sein. Persönliche Erfahrung mit MCU-Technik scheint auch
> nicht vorhanden zu sein. Wieso also studiert man dann überhaupt sowas?
> Jetzt hört man ja öfters, dass ein Studium einen lernfähig macht etc.
> pp. .
> Alles nur Hörensagen. Also wozu braucht man noch ein Studium, wenn man
> es nicht mal mehr schafft, sich selber Informationen zu besorgen?

Kann man eigentlich das Fach "mikrocontroller.net-Forum" irgendwo 
studieren?

Manche glauben das zumindest ;-)

von Sascha M. (stmech)


Lesenswert?

Heißduscher schrieb:
> Weißt du, es gibt noch so viele andere schöne Hobbies.
> Suche dir eines davon aus!
>
> Wie wäre es mit Synchronschwimmen?

haha)) guter Witz. Ne Synchronschwimmen ist mir schon zu schwer. 
Elektrotechnik fällt mir einfacher, vor allem, wenn man 
freundlicherweise Hilfe bekommt. Dadurch habt Ihr ja auch ein Vorteil, 
anstatt irgendwann dem Staat auf der Tasche zu liegen und Harz 4 zu 
beziehen, werde ich selbst einzahlen. Ist doch gut.

von Sascha M. (stmech)


Angehängte Dateien:

Lesenswert?

also nach euren freundlichen Beiträgen konnte ich nun auch was mit dem 
Datenblatt anfangen. Nur bin ich nicht ganz sicher ob einzelne Elemente 
auch wirklich das sind, was ich vermute. Sicherheitshalber habe ich ein 
einzelnes PORT raus genommen und eingezeichnet. Wenn Ihr mal kurz einen 
Blick rein werfen würdet und Bescheid sagen, ob das wirklich so ist)
Danke!

von datasheet (Gast)


Lesenswert?

datasheet schrieb:
> Sascha M. schrieb:
>> allmählich klarer )) genau, das ist ein Atmel AVR. Gruß
>
> Und wenn du jetzt endlich mal die genaue Bezeichnung des µC bekanntgeben
> würdest, könnte man dir sogar das Datenblatt verlinken, das du offenbar
> nicht kennst.

Toll das du das Datenblatt kennst. Wir kennen es immer noch nicht.

von Cyblord -. (cyblord)


Lesenswert?

Sascha M. schrieb:
> also nach euren freundlichen Beiträgen konnte ich nun auch was mit dem
> Datenblatt anfangen. Nur bin ich nicht ganz sicher ob einzelne Elemente
> auch wirklich das sind, was ich vermute. Sicherheitshalber habe ich ein
> einzelnes PORT raus genommen und eingezeichnet. Wenn Ihr mal kurz einen
> Blick rein werfen würdet und Bescheid sagen, ob das wirklich so ist)
> Danke!

NEEEIN.

DDR= Data Dir. Register, das stimmt und
PORT=Data Register.

Das steht sogar PORTF drin in dem Kasten. Warum sollen dann die Driver 
PORTF sein?
Du solltest mehr den Text lesen und weniger Bilder angucken.
Die Blockschaltbilder in den Datenblättern sind eher weniger informativ 
als die Texte.

gruß cyblord

von Sascha M. (stmech)


Lesenswert?

asooo)) ok, habs kapiert! )

von EGS_TI (Gast)


Lesenswert?

Habe hier ein Datenblatt vom ATtiny48 vorliegen und dort gibt es ein 
"Lesezeichen" im Adobe Reader namens "10. I/O-Ports".
Darin findet man ab Seite 60 alle Informationen sehr gut erklärt.
Da steht alles drin. In Prosa und mit selbsterklärendem Blockschaltbild, 
falls man schonmal was von Digitaltechnik gehört hat.

Was hast du denn für eine Arbeitsweise? Wie bist du bei dem Problem 
jetzt genau vorgegangen? Und wieso ist das in eurem komischen Skript 
nicht näher beschrieben? An welcher HS studierst du?

von Michael (Gast)


Lesenswert?

Sascha M. schrieb:
> port.PNG

Pin-Register != Portpins (=Anschlussbeinchen)

von Atm (Gast)


Lesenswert?

Sascha M. schrieb:
> also nach euren freundlichen Beiträgen konnte ich nun auch was mit dem
> Datenblatt anfangen.

Verrate jetzt endlich mal, von welchem verf..kten Prozessor du redest. 
Dann könnte man dir wenigstens die Zeilen im Datenblatt nenne, die du 
lesen solltest.

von Andi (Gast)


Lesenswert?

Zu deinem Bild:

Welcher µC ist das? ATmega128?

So wie du es eingezeichnet hast stimmt es nicht.
Deine Angabe "Pins" ist korrekt, das sind die Pins zur Außenwelt 
(erkennt man daran das sie den gestrichelten Kasten verlassen).

"PORTF DRIVERS" bezeichnet die Schaltungstechnik ("Treiber") des Ports - 
sie bekommt von den DDR und PORT Registern vorgeschrieben, wie sie den 
Port genau schalten muss (z.B. Pull-Up ein oder einen Pin auf High-Pegel 
treiben).
An dieser Stelle sollten dir die drei möglichen Zustände eines solchen 
Pins wieder einfallen:
- Tri-State: Treiber hochohmig, Eingang
- High: Treiber niederohmig, Pin wird auf High-Pegel geschaltet
- Low: Treiber niederohmig, Pin wird auf Low-Pegel geschaltet

Der Kasten "DATA REGISTER" entspricht nicht zu 100% der Realität. In 
Wahrheit verstecken sich darin zwei verschiedene Datenregister:
1. PORT um Pins/Pullups zu schalten (Pfeil in Richtung PORTF DRIVERS)
2. PIN um Pins einzulesen (Pfeil in Richtung der Register)

"DATA DIR. REG." bezeichnet das DDR-Register.
Dieses Register gibt der Treiberelektronik vor, was sie jetzt mit den 
Daten aus dem PORT-Register tun soll:
DDR 1: Daten aus PORT schalten die Pins high/low --> Pins ist ein 
Ausgang
DDR 0: Daten aus PORT schalten die Pullups ein/aus --> Pin ist ein 
Eingang

Blöde Frage am Rand: An welcher Schule gibt es so grottige Skripte?!

von Sascha M. (stmech)


Lesenswert?

EGS_TI schrieb:

> Was hast du denn für eine Arbeitsweise? Wie bist du bei dem Problem
> jetzt genau vorgegangen? Und wieso ist das in eurem komischen Skript
> nicht näher beschrieben? An welcher HS studierst du?

also das vom Skript kapiere ich nicht. Da sind meist irgendwelche 
Abkürzungen und Diagramme. In Vorlesung verliert man so oft den Faden 
und kommt einfach nicht mit.
Ich fange damit an, dass ich die Begriffe die in Vorlesung und Labor 
fallen aufschreibe und danach separat im Internet suche. In 
Laborvorbereitung bekommt man konkrete Anweisungen, was zu machen ist 
und davon lernt man bestimmte Prozesse z.B. das Programmieren blind zu 
realisieren. Durch das Programmieren merkt man auch einiges. Da stellt 
man z.B. DDRA auf 0 und PORTA auf 1. Das heißt DDR und PORT hängen 
irgendwie zusammen. Aber wie? Nach einer langen Suche ist mir das nicht 
klarer geworden, dann bitte ich um Hilfe im Forum. Nun bin ich noch ein 
Schritt weiter, doch das ist immer noch der Anfang..)

von ::::::::::::::::::::::::::::::::::: (Gast)


Lesenswert?

Sascha M. schrieb:
> EGS_TI schrieb:
>
>> Was hast du denn für eine Arbeitsweise? Wie bist du bei dem Problem
>> jetzt genau vorgegangen? Und wieso ist das in eurem komischen Skript
>> nicht näher beschrieben? An welcher HS studierst du?
>
> also das vom Skript kapiere ich nicht. Da sind meist irgendwelche
> Abkürzungen und Diagramme. In Vorlesung verliert man so oft den Faden
> und kommt einfach nicht mit.
> Ich fange damit an, dass ich die Begriffe die in Vorlesung und Labor
> fallen aufschreibe und danach separat im Internet suche. In
> Laborvorbereitung bekommt man konkrete Anweisungen, was zu machen ist
> und davon lernt man bestimmte Prozesse z.B. das Programmieren blind zu
> realisieren. Durch das Programmieren merkt man auch einiges. Da stellt
> man z.B. DDRA auf 0 und PORTA auf 1. Das heißt DDR und PORT hängen
> irgendwie zusammen. Aber wie? Nach einer langen Suche ist mir das nicht
> klarer geworden, dann bitte ich um Hilfe im Forum. Nun bin ich noch ein
> Schritt weiter, doch das ist immer noch der Anfang..)

Falls das wirklich so ist, dann solltest du
- deinen Prof fragen dass es das besser erklärt oder
- deine Kommilitonen fragen, ob sies verstanden haben und dir erklären 
können oder
- die ein anderes Fach suchen

Du kannst nicht alles über Foren erfragen, dass ist auf Dauer nicht 
zielführend.

Das Thema ist sicher nix für weitergehende Vorlesungen, und wenns an 
solchen Grundlagen hapert, das wird das aus meiner Sicht nix mit dem 
(diesem) Studium.

Sorry, klingt jetzt hart, aber m.E. bist du bisher nicht in der Realität 
angekommen.

von Sascha M. (stmech)


Lesenswert?

Andi schrieb:
> Zu deinem Bild:
>
> Welcher µC ist das? ATmega128?
>
hey Andi, vielen vielen Dank für deine Beiträge! hat mich echt viel 
weiter gebracht! Ja das ist ein ATmega128 . das Bild hatte ich nicht vom 
Script, sondern irgendwo vom Datenblatt, doch Scripte sind für mich auch 
nicht viel verständlicher) Wenn der Prof es so erklären würde, wie Du 
jetzt gerade, bräuchte ich keine Hilfe von außen, doch meist ist das 
leider nicht der Fall ((
Noch mal vielen, herzlichen Dank!
Gruß

von Cyblord -. (cyblord)


Lesenswert?

Sascha M. schrieb:
> Da stellt
> man z.B. DDRA auf 0 und PORTA auf 1. Das heißt DDR und PORT hängen
> irgendwie zusammen. Aber wie?

Da schaut man ins Datenblatt und liest den Text der dort steht und dann 
weiß man es. Darum gibt es das Datenblatt. Was meinst woher die Leute 
hier das wissen? Trial & Error?

Du solltest dich weniger auf deinen Prof. verlassen und mehr selber 
recherchieren. Ein Studium ist in erster Linie immer ein Lernen für sich 
und aus verschiedenen Quellen. Die Vorlesung und das Skript sind da 
höchstens Hilfsmittel.

gruß cyblord

von Sascha M. (stmech)


Lesenswert?

::::::::::::::::::::::::::::::::::: schrieb:

> Sorry, klingt jetzt hart, aber m.E. bist du bisher nicht in der Realität
> angekommen.
das sehe ich anderes. gerade diejenigen die alle Mittel nutzen um 
Grundlagen zu verstehen kommen weiter, als die, die gleich in 
Verzweifelung geraten und Studiengang wechseln, wenn sie etwas nicht 
kapieren.  Solche Beiträge lese ich übrigens schon seit Anfang des 
Studiums und alle Fächer, um die es ging habe ich längst bestanden.

von Sascha M. (stmech)


Lesenswert?

cyblord ---- schrieb:

>
> Du solltest dich weniger auf deinen Prof. verlassen und mehr selber
> recherchieren. Ein Studium ist in erster Linie immer ein Lernen für sich
> und aus verschiedenen Quellen. Die Vorlesung und das Skript sind da
> höchstens Hilfsmittel.
>
> gruß cyblord
 jop, genauso mache ich das, danke! )

von ::::::::::::::::::::::::::::::::::: (Gast)


Lesenswert?

Sascha M. schrieb:
> ::::::::::::::::::::::::::::::::::: schrieb:
>
>> Sorry, klingt jetzt hart, aber m.E. bist du bisher nicht in der Realität
>> angekommen.
> das sehe ich anderes. gerade diejenigen die alle Mittel nutzen um
> Grundlagen zu verstehen kommen weiter ...

Zu deinem Eingangsposting gabs am Anfang des Threads eine gute Erklärung 
von Andi, unten nochmals reinkopiert.
Irgendwie erweckst du nicht den Eindruck, das verstanden zu haben.

Sascha M. schrieb:
> schon seit Anfang des
> Studiums und alle Fächer, um die es ging habe ich längst bestanden.

Welches Fach studierts du denn?
Welches Semester bist du denn?
Welchen Controller verwendest Du?
Warum ist das für einen Studenten (der eine abgeschlossene 
Schulausbildung mit Hochschulreife hat) so schwierig, das Posting von 
Andi zu verstehen?!?!?

Trollst Du?

Fragen über Fragen ...



Andi schrieb:
> Dein ATmega(???) hat mehrere Ausgangsports (Port A, Port B, ...) deren
> Pins Px0 bis Px7 heißen.
>
> Zu jedem Port gehören drei Register:
> DDRx
> PORTx
> PINx
>
> Jedes dieser Register ist 8 Bit breit, die Bits 1-8 im Register
> entsprechen den Pins 0-7.
>
> Funktionen der Register:
> DDR -> Datenrichtung bestimmen (0=Eingang, 1=Ausgang)
> PORT -> Ausgaberegister
> PIN -> Eingaberegister
>
> Besonderheit des PORT-Registers: Seine Funktion ist vom DDR-Register
> abhängig.
> Wenn DDR = 0: Aktiviert/deaktiviert interne Pull-Ups
> Wenn DDR = 1: Schaltet Ausgangspin high/low
>
> Deswegen kannst du mit dem PORT-Register auch keine Eingangssignale
> lesen, du würdest nur den Status der Pull-Ups einlesen.
> Verwende also zum Einlesen das PIN-Register.
>
> Du solltest zu dem Thema mal allgemein nach Atmega, AVR-GCC, Ports &
> Pins usw. googlen, da kommt noch einiges mehr...

von Sascha M. (stmech)


Lesenswert?

::::::::::::::::::::::::::::::::::: schrieb:

> Zu deinem Eingangsposting gabs am Anfang des Threads eine gute Erklärung
> von Andi, unten nochmals reinkopiert.
> Irgendwie erweckst du nicht den Eindruck, das verstanden zu haben.

ich habe es komplett verstanden, deine Eindrücke sind falsch.


> Schulausbildung mit Hochschulreife hat) so schwierig, das Posting von
> Andi zu verstehen?!?!?
>
> Trollst Du?
>
> Fragen über Fragen ...
 sinnlose Schlussfolgerungen erweckt durch falsche unbegründete 
Eindrücke.. trollst du?

von Sascha M. (stmech)


Lesenswert?

ok, muss noch Bereichte für 3 Versuche zu Ende schreiben. Vielen Dank an 
die, die mir geholfen haben! )

von EGS_TI (Gast)


Lesenswert?

Sascha M. schrieb:
> also das vom Skript kapiere ich nicht. Da sind meist irgendwelche
> Abkürzungen und Diagramme. In Vorlesung verliert man so oft den Faden
> und kommt einfach nicht mit.
> Ich fange damit an, dass ich die Begriffe die in Vorlesung und Labor
> fallen aufschreibe und danach separat im Internet suche. In
> Laborvorbereitung bekommt man konkrete Anweisungen, was zu machen ist
> und davon lernt man bestimmte Prozesse z.B. das Programmieren blind zu
> realisieren. Durch das Programmieren merkt man auch einiges. Da stellt
> man z.B. DDRA auf 0 und PORTA auf 1. Das heißt DDR und PORT hängen
> irgendwie zusammen. Aber wie? Nach einer langen Suche ist mir das nicht
> klarer geworden, dann bitte ich um Hilfe im Forum. Nun bin ich noch ein
> Schritt weiter, doch das ist immer noch der Anfang..)

Falls du die Port-Geschichte noch nicht verstanden hast: hast du 
zufällig mal das Datenblatt vom ATiny48 runtergeladen und dir die Seiten 
die ich oben genannt habe angeschaut?

von EGS_TI (Gast)


Lesenswert?

Sascha M. schrieb:
> also das vom Skript kapiere ich nicht. Da sind meist irgendwelche
> Abkürzungen und Diagramme. In Vorlesung verliert man so oft den Faden
> und kommt einfach nicht mit.

Zeig uns doch mal das Skript.

von Spess53 (Gast)


Lesenswert?

Hi

Beim ATMega128 sollte aber die M103-Fuse gelöscht sein. Sonst 
funktionieren einige Ports etwas unerwartet:

• Port C is output only.
• Port G serves alternate functions only (not a general I/O port).
• Port F serves as digital input only in addition to analog input to the 
ADC.

MfG Spess

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.