Forum: Mikrocontroller und Digitale Elektronik Peripherie-Ports auf einem Mikrocontroller initialisiert


von Thomas Fleischer (Gast)


Lesenswert?

Hallo zusammen,

Ich habe folgende Fragen an euch:
a) Warum müssen Peripherie-Ports auf einem Mikrocontroller 
„initialisiert“   werden?
b) Welche Aufgabe hat diese Operation z.B. bei einem Parallel-Port?

Gruß. Thomas

von Max H. (hartl192)


Lesenswert?

Thomas Fleischer schrieb:
> a) Warum müssen Peripherie-Ports auf einem Mikrocontroller
> „initialisiert“   werden?
Weil sie vllt. mehr als eine Funktion haben und man erst konfigurieren 
muss welche man wie nutzen will.

Wenn du mit dem Programmieren anfängst wirst du sicher merken wieso...

Thomas Fleischer schrieb:
> b) Welche Aufgabe hat diese Operation z.B. bei einem Parallel-Port?
Das wird dir das Datenblatt sicher verraten.

von Stefan S. (sschultewolter)


Lesenswert?

Max hat es bereits erwähnt. Die Pins haben sind fast durchgehenden für 
mehrere Zwecke einsetzbar. Mit dem initialisieren legst du bspw. fest, 
ob es sich um einen Pin um einen Ausgang, Eingang handelt.

von Thomas Fleischer (Gast)


Lesenswert?

SORRY aber brauche noch mehr info  bitte! ich verstehe das nicht ganz 
genau!

Gruß

von Stefan S. (sschultewolter)


Lesenswert?

Besorge dir Lektüre!

Was ist darn nicht zu verstehen?

Fritz ist gut im 50, 100 und 1000m Lauf. Fritz muss aber wissen, wieviel 
er laufen muss. Wird ihm gesagt, er soll 1000m laufen, dann stellt er 
sich auf 1000 ein und nicht auf einen kurzen Sprint von 50m.

http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Zugriff_auf_IO-Ports

von Bitflüsterer (Gast)


Lesenswert?

Thomas Fleischer schrieb:
> SORRY aber brauche noch mehr info  bitte! ich verstehe das nicht ganz
> genau!

Die Antworten bezogen sich genau auf Deine Fragen und sind, so abstrakt 
sie gestellt sind ebenso erschöpfend beantwortet.
Man könnte sie höchstens noch paraphrasieren, was ich auch gerne 
unternehmen will. Aber es ist unklar, welche Informationen Du brauchst. 
Versuche Deine Frage präziser zu stellen. Was verstehst Du nicht?

Hier noch die versprochene Paraphrase:

> a) Warum müssen Peripherie-Ports auf einem Mikrocontroller „initialisiert“ 
werden?

Um sie in einen definierten Anfangszustand zu bringen und um eine von 
mehreren möglichen Funktionsweisen auszuwählen. Beide Punkte hängen 
zusammen und überschneiden sich begrifflich sind aber verschieden.

Ein Timer z.B. könnte theoretisch bei seinem Maximalwert oder bei 
einem wilkürlichen, vom Programmierer gewählten Wert eine bestimmte 
Aktion auslösen. Das sind schonmal zwei Möglichkeiten, unter denen man 
wählen muss. Die Aktion wiederum könnte ein Neustart des Zählers bei 
Null sein oder ein rückwärts zählen bis Null und erneutem Wechsel der 
Zählrichtung sein. Das sind Beispiele für den einen Aspekt - Auswahl von 
Funktionsweisen. Im Fall, das der Zähler bis zu einem wilkürlichen Wert 
zählen soll, muss auch dieser Wert gesetzt (initialisiert) werden. Das 
ist der zweite Aspekt - Anfangsbedingung.

> b) Welche Aufgabe hat diese Operation z.B. bei einem Parallel-Port?
Genau die oben geschriebene, nur eben speziell auf einen Parallel-Port 
bezogen. Dessen Initialisierung wird sich von der eines Timer und diese 
wiederum von der eines I2C-Bus-Interfaces unterscheiden.

Gruß
Bitflüsterer

von Mike (Gast)


Lesenswert?

Bitflüsterer schrieb:
> Um sie in einen definierten Anfangszustand zu bringen und um eine von
> mehreren möglichen Funktionsweisen auszuwählen.

Einen definierten Zustand nehmen die Ports beim Reset des µC 
normalerweise schon an. Diese Standardkonfiguration wird aber i.A. nicht 
zu der Aufgabe, die sie in deiner Schaltung übernehmen sollen, passen.

von Axel S. (a-za-z0-9)


Lesenswert?

Thomas Fleischer schrieb:
> b) Welche Aufgabe hat diese Operation z.B. bei einem Parallel-Port?

An dieser Stelle sollte man vielleicht noch erwähnen, daß ein µC so 
etwas wie einen "Parallelport" eher nicht hat. Genau genommen ist 
"Parallelport" noch nicht mal ein exakt definierter Begriff. Man 
verwendet ihn häufig als Synonym für "Druckerport an einem PC".


XL

von Bronco (Gast)


Lesenswert?

Bei allen mir bekannten Microcontrollern ist es so, dass alle GPIOs 
(General Purpose Inputs Outputs) nach Reset einen passiven hochohmigen 
Zustand haben.
Das ist auch nötig, weil der µC nach dem Reset noch nicht wissen kann, 
ob ein Pin als Eingang oder Ausgang verwendet werden soll.
Stell Dir vor Du legst von außen einen 5V-Pegel an einen Pin und der µC 
würde nach Reset diesen Pin erstmal als Ausgang mit Low-Pegel 
initialieren -> Kurzschluss!

Aus diesem Grund haben alle Pins nach Reset definierte Zustände, und 
diese sind im Datenblatt genau beschrieben.
Wenn der definierte Reset-Zustand zufällig genau dem entspricht, was Du 
mit dem Pin machen willst, musst Du nichts initialisieren oder 
konfigurieren.
Falls Du etwas anderes machen willst, z.B. den Pinne als Ausgang 
verwenden, musst Du das dem Pinne sagen, sonst kann er es nicht wissen.

von Karol B. (johnpatcher)


Lesenswert?

Bronco schrieb:
> Wenn der definierte Reset-Zustand zufällig genau dem entspricht, was Du
> mit dem Pin machen willst, musst Du nichts initialisieren oder
> konfigurieren.

Wobei es selbst dann Sinn machen kann, um seine Intentionen explizit zum 
Ausdruck zu bringen und die Portierung auf andere Mikrocontroller / 
Plattformen zu erleichtern/ermöglichen. Eine "init" Funktion - oder 
ähnliches - jedenfalls hat noch keinem Modul geschadet ;).

Mit freundlichen Grüßen,
Karol Babioch

von S. R. (svenska)


Lesenswert?

Das Semester fängt wieder an, was?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

S. R. schrieb:
> Das Semester fängt wieder an, was?
Das wäre aber noch früh. Ich tippe eher auf einen gemeinen Troll...

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.