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
Gast
#495423
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.
Was bedeutet eigentlich tristate
Gast
#495435
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
Gast
#495439
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
Gast
#495440
... ooops, da war ich wohl zu langsam :)
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?
Mit den PORTx-Registern. Ist der Pin als Eingang geschaltet, kannst du mit dem entsprechenden Bit den Pullup aktivieren/deaktivieren.
Hat super geklappt! Vielen Dank für die Hilfe