mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik I/Os als Eingang und Ausgang


Autor: Florian D. (fdsurfer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

kann man einen I/O zur Laufzeit von Eingang auf Ausgang umdefinieren und 
wenn ja muss dabei was beachtet werden?
Ich habe einen Pin mit einem Externen Pullup von 4,7K gegen VCC gezogen. 
Bisher ist das reiner input, also mit config portb.3=input definiert. 
Darf ich  den einfach mit config portb.3=output zum Ausgang machen und 
im Programm später wieder auf Eingang stellen?
Kann der Interne Pullup tatsächlich nur von allen Pins entweder ein oder 
ausgeschaltet werden oder kann ich auch einzelne Pullups abschalten?

Gruß
Florian

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kannst du jederzeit umstellen (ausser bei bestimmten Sonderfunktionen 
der Pins, ist beispielsweise der UART-Transmitter ein, ist der TxD-Pin 
ein Ausgang).
Prinzipiell kannst du jeden Pullup einzeln ein/ausschalten.

Autor: Florian D. (fdsurfer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was bedeutet eigentlich tristate

Autor: Michael U. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

tristate = 3 Zustände.

Normalerweise liefert ein Ausgang L oder H Pegel, also 2 Zustände.

Beim dritten wird er komplett abgeschaltet.
Wenn man z.B. mehere IC-Ausgänge auf einem Bus parallel schalten will, 
darf nur einer gleichzeitig aktiv sein, die anderen müssen hochohmig 
geschaltet werden, damit sie nicht stören oder Schaden anrichten.

Wenn 2 Ausgänge parallel geschaltet sind und einer liefert H- und einer 
L-Pegel, dann kannst Du Dir selbst denken, was passieren kann...

Gruß aus Berlin
Michael


Autor: FBI (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

tristate bedeutet, daß es nicht nur zwei Zustände (1/0 bzw H/L) gibt, 
sondern noch einen dritten (meist 'X' oder 'Z'). Im dritten Zustand ist 
der Ausgang hochohmig. Da AVRs das nicht direkt können, simuliert man 
daß indem man den Pin als Eingang konfiguriert und den Pullup 
ausschaltet. Sowas wird benötigt, wenn man mehrere Ausgänge 
zusammenschalten will/muß.

CU Frank

Autor: FBI (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
... ooops, da war ich wohl zu langsam :)

Autor: Florian D. (fdsurfer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, so ähnlich habe ich das aus dem Datenblatt auch rausgelesen. Mit 
welchem Register werden den die EINZELNEN, also pro Pin, die Pullups 
abgeschaltet. Ich finde nur das PUD und mit dem werden alle gleichzeitig 
disabled! Das Kann doch eigentlich nicht sein, oder?

Autor: Philipp Burch (philipp_burch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit den PORTx-Registern. Ist der Pin als Eingang geschaltet, kannst du 
mit dem entsprechenden Bit den Pullup aktivieren/deaktivieren.

Autor: Florian D. (fdsurfer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hat super geklappt!

Vielen Dank für die Hilfe

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.