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
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
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
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
@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!
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 ;-)
> ...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...
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!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.