Forum: Mikrocontroller und Digitale Elektronik AVR-Pin als Ein- und Ausgang nutzen


von Marc (Gast)


Lesenswert?

Hallo,

ich habe in Erinnerung, dass es möglich ist einen Pin so zu beschalten
(irgendwas mit einer Diode), dass man am Anfang des Programms den
Zustand eines Schalters einlesen kann, und dann den Pin als Ausgang
nutzen kann.
Geht das überhaupt, und wenn ja, wie war das?

Marc

von vex (Gast)


Lesenswert?

sorry aber wenn du hier auf diesen Seiten stöbern würdest findest du
auch etwas dazu.
z.B. :
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Zugriff_auf_Ports
http://www.mikrocontroller.net/articles/AVR_Checkliste#Hardware

von Marc (Gast)


Lesenswert?

ich habe mich vielleicht etwas ungenau ausedrückt, nicht die Software
ist das Problem, sondern die Hardware.
Wenn ich z.B. den Schalter einschalte, also den Pin auf Low ziehe, und
dann den Pin als Ausgang definiere, hätte ich ja einen Kurzschluss,
wenn dieser auf High ist. Das will ich eigentlich vermeiden.

Marc

von vex (Gast)


Lesenswert?

also der Pin ist grundsätzlich Low Active d.h er schaltet von High auf
Low um . da der Port Ausgang aber ein OC Typ ist (Open Collector)
wird es(glaube ich) wahrscheinlich keinen Kurzen geben auch wenn der
interne Pull-up  Widerstand dazu geschaltet wird. (verbesser mich wer,
wenn es falsch ist)
Nur!! nochmal spez. zu der Aufgabe:
du schaltest einen Schalter (extern) von high auf low, der Port ist
mittels int. Pullup auf high und wird darauf vom Programm auf low
gezogen - in dieser Position passiert also nix (low -> low) aber es
passiert was, wenn der Schalter auf High liegt und der Port auf Low
geschaltet wird - in dem Fall würde ich den Schalter mittels Pullups
ausrüsten

von johnny.m (Gast)


Lesenswert?

@vex:
> ...verbesser mich wer, wenn es falsch ist...

Gerne! Die AVRs haben symmetrische Ausgangstreiber und keine
Open-Collector-Ausgänge! Wenn man einen als Ausgang mit High-Pegel
programmierten Pin extern auf GND zieht, dann kann man sich i.d.R. von
seinem Port verabschieden!

von Schoasch (Gast)


Lesenswert?

Wären es nicht, wenn überhaupt OD-Ausgänge (der PIC hat welche).. also
Open drain-Ausgänge.. wir sind ja bei CMOS und nicht TTL ;-)

von Pete Nerlinger (Gast)


Lesenswert?

TTL = TRANSITOR TRANSISTOR LOGIK!

von johnny.m (Gast)


Lesenswert?

> ...wir sind ja bei CMOS und nicht TTL...
Korrekt, wir sind heutzutage bei CMOS. Aber das Funktionsprinzip (und
um das geht es hier, ganz egal ob CMOS oder bipolar) ist dasselbe!

@Pete:
Ich glaube, hier wissen die meisten, was TTL heißt. Was ich persönlich
nicht weiß, ist, was dieser Kommentar soll...

von arc (Gast)


Lesenswert?


von Johannes (Gast)


Lesenswert?

Ich bin immer wieder verblüfft, wie oft welche Räder jedesmal neu
erfunden werden. Das Prinzip, per externem Serien-R einen Output-Crash
zu vermeiden, hat doch schon der olle Sir Clive Sinclair im ZX80 und 81
verwendet, um den (damals noch sehr teuren) extra Steuerchip für die
Videoausgabe einzusparen...

Aber, weswegen ich eigentlich poste: Wieso soll ein AVR keinen
OD-Output können? Klar kann er das! Und braucht es auch gelegentlich
selber, nämlich für das TWI (=I2C-Bus). Und auch 1-Wire-Teile kann man
anders gar nicht anflanschen.

Das geht ganz einfach: Externen Pullup dran, im PORT-Register das
betreffende Bit auf Null, und dann die Ausgabe per DDR. Voila!

von Michael U. (Gast)


Lesenswert?

Hallo,

Als Eingang beim Start mit PullUp, Schalter über z.B. 4,7k an Masse.
Dann als Ausgang, es fließen zusätzlich ca. 1mA bei H, stört wohl kaum.
Klappt, wenn die anzusteuernde Schaltung merklich hochohmiger ist, sonst
zusätzlich Diode mit Katode an Port-Pin, Anode über passenden Widerstand
an +, Verbindung ist der "neue" Ausgang.
Widerstand hängt vom benötigten Strom bei H ab, also möglichst nach L
schalten.

Gruß aus Berlin
Michael

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.