Hallo allesamt,
ich bastle gerade mit meinem AT89S52 (ein 8051er Derivat).
Nun wollte ich den Port 0 eigentlich ganz normal als I/O-Port nutzen,
habe nun allerdings festgestellt, dass er, wenn er als I/O-Port genutzt
werden soll mit externen Pull-Up-Widerständen gegen + gezogen werden
muss.
Im Datenblatt steht dazu:
1 | Port 0
|
2 | Port 0 is an 8-bit open drain bidirectional I/O port. As an output port, each pin can sink eight TTL inputs. When 1s are written to port 0 pins, the pins can be used as high-impedance inputs.
|
3 | Port 0 can also be configured to be the multiplexed low-order address/data bus during accesses to external program and data memory. In this mode, P0 has internal pull-ups.
|
4 | Port 0 also receives the code bytes during Flash programming and outputs the code bytes during program verification. External pull-ups are required during program verification.
|
In einem anderem Thread habe ich gelesen, dass Pull-Ups von 2K bis 10K
benötigt werden.
Bei mir sollen konkret LEDs angesteuert werden, mit denen ich mir
Status-Ausgaben mache. (Jeder Pin von Port 0 hat also ein kleine rote
3mm LED).
Nun meine Frage :
1.) Wie berechne ich wie groß der Pull-Up-Widerstand sein muss und ist
dann noch ein Vorwiderstand für die LED nötig?
2.) Ist es richtig, dass ich dann wie im angehängten Bild einfach nur
direkt mit meinem Widerstand vom Pin zu Plus (bzw. von der LED zu Plus)
verbinde?
3.) Was passiert eigentlich genau dabei im µC. Ist das zweite angehängte
Bild hierfür richtig? Und verstehe ich es richtig:
- dass Bei einer 1 am Pin, der Transistor die Verbindung von Plus, über
den Pull-Up und den Verbraucher zu Masse durchschaltet, deswegen dann
Strom fließen kann und quasi eine 1 anliegt?
- dass bei einer 0 am Pin, der Transistor die Verbindung nicht schaltet,
kein Strom fließen kann und quasi eine 0 anliegt?
Viel Grüße
anon1234