Peripherie-Ports auf einem Mikrocontroller initialisiert

#3772214
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.
Gast #3773487
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
Gast #3773497
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.
Gast #3773696
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.
#3773806
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

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.