PUE Pins und Ports

Gast #5758664
Lesenswert?

Pull-Up-Enable
Bei den älteren wird das über das PORT Register gemacht.
Die neueren haben dafür das PUE Register

Zweck?
Naja...

Es lässt sich leichter ein OpenDrain Pin emulieren, ohne kurzzeitig 
floatenden Pin.
Es erlaubt u.U. den Verzicht auf einen externer Pullup.
Gast #5758796
Lesenswert?

Paul schrieb:
> Meinst du damit das ein Pin für den I2C Bus nach 5 V gelegt wird.

Paul schrieb:
> In meinem C-Buch steht nichts dazu drin.

Da fehlen Grundlagen der Schaltungstechnik, das hat mit der 
Programmiersprache nichts zu tun.

Vereinfacht stellen wir uns einen Schalter mit drei Anschlüssen 
(Umschalter) vor: Eine Seite an Masse (GND), die andere an +5V, das wäre 
ein Standard µC-Ausgang. Da kommen entweder 5V raus oder der Ausgang ist 
mit GND verbunden.

Jetzt klemmen wir die +5V ab: Der Ausgang ist dann offen und nur in der 
anderen Schalterstellung mit GND verbunden - das wäre der OpenDrain-Out, 
wie er für den I2C-Bus benötigt wird.

Beim I2C-Bus sind beide Leitungen mit einem Widerstand nach Plus 
beschaltet. Keines der angeschlossenen ICs darf Spannung liefern. 
I2C-ICs, die gerade nichts zu tun haben, sind offen, also elektrisch 
garnicht da. Wenn ein IC etwas zu melden hat, zieht es die Leitung nach 
Masse, geht danach aber wieder aus. In der Fachliteratur heißt das 
"wired OR".

Die Register im Controller haben den Sinn, dessen Anschlüsse passend 
einzustellen: Als Ausgang, als openDrain-Ausgang, als Eingang oder als 
Eingang mit Pullup.

------

So, liebes Forum, jetzt verhaut mich, weil ich einige Details 
vereinfacht habe :-)
Gast #5758852
Lesenswert?

W.A. schrieb:
> Man könnte auch sagen, dass Masse auf I2C den dominanten Zustand darstellt.

Erkläre bitte Deine Definition von "dominant".

Im zeitlichen Verlauf wird der I2C überwiegend "offen" sein, also per 
pullup an Ub. Auf Masse kommt er nur während aktiver Datenübertragungen.
Gast #5760069
Lesenswert?

So weit klar. Das benutze ich z.B. um LEDs oder über einen zusätzlichen 
Transistor Relais zu schalten.
Bei der Programmierung eines I/O benutze ich dann DDRx, Portx um Pins 
als Eingang oder Ausgang zu setzen.
Doch wie mache ich das mit PUE? Was schalte/defeniere ich damit?
Es wurden verschiedene Quellen angegeben. Leider empfinde ich es so, das 
sie nicht zutreffen. Es werden OpenDrain beschrieben. Direkt zu PUE oder 
was ich genau damit mache steht nicht viel drin. (mehr garnichts) So wie 
ich das anhand der Datenblätter vom Attiny 441 und 841 gesehen habe 
werden die Pins damit eingestellt.
Könnte jemand an Hand eines Beispiel es kurz zeigen?
LG Paul
Gast #5760121
Lesenswert?

Paul schrieb:
> Doch wie mache ich das mit PUE? Was schalte/defeniere ich damit?

Mit Pull-Up-Enable schaltest du die Pullups ein.
Was verstehst du daran nicht?

Paul schrieb:
> Leider empfinde ich es so, das sie nicht zutreffen.
OK.
Natürlich kann man Empfindungen höher bewerten, als Logik, Datenblätter 
usw., das macht dich vielleicht zu einem besseren Menschen, aber nicht 
unbedingt zu einem besseren Entwickler.

Klarer:
Was verstehst du an "Pullup Einschalten" nicht?
Zweifelst du die Notwendigkeit an?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren