Guten Morgen, ich habe mal ein dumme Frage. Ich möchte einen DIP Schalter an einen PIC anschließen und die Schaltzustände in der Firmware auslesen. Nun bin ich am überlegen wie ich den DIP Schalter am besten beschalte um bei allen möglichen Schaltzuständen möglichst wenig Strom zu verbraten. Hat da jemand einen Rat für mich? Gruß Christian
Zum Auslesen die internen Pull-Up Widerstände der IOs einschalten, danach die IOs auf Ausgang umschalten und LOW ausgeben. So brauchen sie 0mA. Die DIP-Schalter müssen hierbei nach GND schalten.
Chris S. schrieb: > um > bei allen möglichen Schaltzuständen möglichst wenig Strom zu verbraten Ohne Zusatzaufwand geht das nicht, aber man kann ja die "Versorgung" der Schalter, also die der Pullup-Widerstände, abschalten. Entweder ist das bei den I/Os vorgesehen, oder man hängt die Pullups an einen extra Ausgang. Oder man schaltet das ganze gleich als Matrix, dann ergibt sich die mögliche Abschaltung von selbst. (Die vorige Version ist praktisch eine 1 x n Matrix). Georg
@Georg: Wieso soll das nicht gehen? Falk schrieb doch bereits, wie es geht.
Georg schrieb: > Ohne Zusatzaufwand geht das nicht, Häh? An meinen AT328 ist ein Schalter gegen GND, der im Normalbetrieb geschlossen ist. Ich initialisiere meinen Pin als Output mit low. Schalter nach GND zu gibt keinen Strom, Schalter offen sowieso nicht. Alle paar Minuten schalte ich meinen Pin auf Input mit internem Pullup um, frage den Schalter ab und stelle dann wieder auf Output - low um. Wo ist nun das Problem?
Manfred (Gast) schrieb: >> Ohne Zusatzaufwand geht das nicht, > Häh? Ist das Umschalten von Ausgang/Low auf Input/PullUp kein Mehraufwand? - Wenn auch nur im Programm-Code...
... naja ... eine Batterie muß man auch noch anschließen ... vor lauter Schufterei kommt man hier gar nicht mehr zum Bier trinken ... Wer den Aufwand scheut, einen I/O nominal als LOW,Output zu betreiben und zum Einlesen auf Input,PullUP umzustellen, sollte mit der eigentlichen Routiene, ob der Pin nun high oder low ist, gar nicht erst weiter machen ... DAS nimmt Einem aber noch nicht Mal ein Arduino ab -> falsches Hobby MfG
Patrick J. schrieb: > ... vor lauter Schufterei > kommt man hier gar nicht mehr zum Bier trinken ... Anstatt Bier zu trinken am PC zu sitzen spart Geld und ist gesünder - damit wird das ganz klar wirtschaftlich sinnvoll. > Wer den Aufwand scheut, einen I/O nominal als LOW,Output zu betreiben > und zum Einlesen auf Input,PullUP umzustellen, sollte mit der > eigentlichen Routiene, ob der Pin nun high oder low ist, gar nicht erst > weiter machen ... "Routiene" - ??? > DAS nimmt Einem aber noch nicht Mal ein Arduino ab -> > falsches Hobby Aber Arduino kann das, in genau dieser Umgebung habe ich das gemacht. Ich habe das sogar gemacht, ohne hier um Rat zu fragen - wo ist mein Fehler?
Chris S. schrieb: > Nun bin ich am überlegen wie ich den DIP Schalter am besten beschalte um > bei allen möglichen Schaltzuständen möglichst wenig Strom zu verbraten. Ohne was zu tun geht das eben nicht, das haben weder Falk noch ich behauptet - man muss was umschalten, und es funktioniert auch nicht in "allen möglichen Schaltzuständen" ohne Strom. Wäre auch gegen Naturgesetze. Die vom TO gewünschte Beschaltung gibt es also nicht. Winfried M. schrieb: > @Georg: Wieso soll das nicht gehen? Falk schrieb doch bereits, wie es > geht. Auch nach dem Evangelium Falk geht es nicht einfach von selbst wie der TO das meint, und ausserdem hat nicht jeder Prozessor-I/O schaltbare Pullups, deswegen habe ich es ergänzt um die Möglichkeit, die Pullups mit einem Zusatzpin zu schalten. Scheint manche hier geistig zu überfordern. Rein sachlich ist alles klar und von Falk und mir umfassend beschrieben. Wahrscheinlich kommen trotzdem noch einige zig sinnlose Posts wie "Hä". Sowas muss man ja einfach mal loswerden. Georg
Hi Manfred schrieb: > ohne hier um Rat zu fragen ^^ Da Er gibt Es auch noch zu ;) Auch beim Arduino musst Du etwas Programm - zumindest per C&P ins Steinchen transferieren. Die Pin-Abfrage, ob High oder Low wird ebenfalls wohl gleich bleiben. Einzig das Umschalten auf LOW(PullUp aus) und dann auf OUT lässt den sonst durch den PullUp weiter fließenden Strom auf Null zusammen schrumpfen. Wo das Problem ist, Das So zu machen, erschließt sich mir auch nicht. Die Idee ist simpel und toll gleichermaßen. Kaum Mehraufwand (je zwei Befehle für vor und nach der Abfrage) und keinen 'Standby-Strom' für den Eingang. MfG
@Georg: Wer komplizierte Lösungen präsentiert, sollte das auch schon begründen. Anderen "geistige Überforderung" zu unterstellen, ist völlig überflüssig. ;)
Chris S. schrieb: > Ich möchte einen DIP Schalter an einen PIC anschließen und die > Schaltzustände in der Firmware auslesen. Früher (TM) hat man das mit 10 K bis 100 K Widerständen als Pull up oder Pull down gelöst...
Dipschalter kommen bekanntlich öfter im Rudel vor, das kann bei batteriebetriebenen Geräten schon mal "ins Geld" (an die Knopfzelle) gehen. Zur Sicherheit kann man über einen Angstwiderstand in Reihe zum Schalter nachdenken. Zu beachten ist, dass beim Umschalten auf die Reihenfolge geachtet werden muss, also zuerst auf Low schalten, dann auf Ausgang, bzw. zuerst auf Eingang, dann auf Pullup.
Zwischen Einschalten des Pullup und Abfragen muß noch mindestens 1 NOP sein, da die Eingänge einen Zyklus vorher gelatcht werden.
Mani W. schrieb: > Früher (TM) hat man das mit 10 K bis 100 K Widerständen als > Pull up oder Pull down gelöst... Heutzutage (TM) ist soetwas in vielen Mikrokontrollern fest eingebaut und auch noch steuerbar. Wenn man nicht zu eigenwillige Vorstellungen hat oder die letzt 1/10 µs im Programm ausreizen will/muss, kann man die durchaus für solche Aufgaben benutzen. Manfred schrieb: > "Routiene" - ??? Oh, oh - etwas übermüdet?
Patrick J. schrieb: >> ohne hier um Rat zu fragen > ^^ Da > Er gibt Es auch noch zu ;) > Auch beim Arduino musst Du etwas Programm - > zumindest per C&P ins Steinchen transferieren. Programm muß ich in jedem Fall ins Steinchen laden, und das ist beim Arduino ja nun ziemlich einfach. C&P macht wenig Sinn, ich schreibe meinen Kram selbst. Natürlich werde ich die Bedienung eines LCD oder Abfrage eines A/D-Wandlers nicht neu erfinden, da gebe ich schon zu, auf vorhandene Libraries zuzugreifen. > Die Pin-Abfrage, ob High oder Low wird ebenfalls wohl gleich bleiben. > Einzig das Umschalten auf LOW(PullUp aus) und dann auf OUT lässt den > sonst durch den PullUp weiter fließenden Strom auf Null zusammen > schrumpfen. Was eigentlich schon in der ersten Antwort von Falk hinreichend erklärt wurde. > Wo das Problem ist, Das So zu machen, erschließt sich mir auch nicht. > Die Idee ist simpel und toll gleichermaßen. Wenn wir ehrlich sind, wissen wir, auch aus eigener Erfahrung, dass man simple Lösungen mitunter einfach nicht sieht. Nach einem externen Denkanstoß kommt dann "Aha, das hätte ich selbst ..." Mani W. schrieb: > Früher (TM) hat man das mit 10 K bis 100 K Widerständen > als Pull up oder Pull down gelöst... Du hast die Ursprungsfrage nicht gelesen! Ich selbst hatte die Zielsetzung, das Gesamtsystem im sleep auf einstellige µA zu bringen. 100 kOhm an 5 Volt gibt ?? Mikroampere (rechne selbst!), das bringt jegliche Sparerei um.
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.