Hallo, ich möchte gerne dem PIC über einen 4pol DIP-Schalter gegen GND kodieren. Dazu würde ich die Pullups PortB einschalten und RB0-RB3 auswerten. Der Pic soll die größte Zeit im Sleep-Mode sein und nur durch RB4-Tastendruck geweckt werden, seine codierte Funktion ausführen und wieder in den Sleep-Mode gehen. Ich gehe davon aus, dass die Pull-Ups auch im Sleep-Mode aktiv sind? Sonst könnte ich den Pic kaum über RB4 Taster gegen GND wecken. Wenn ich über den Dip-Schalter jetzt aber einzelne PINs auf Masse habe, verbraucht der PIC Strom über die Pullups? (laut Datenblatt 200uA pro Pin). Da ich das ganze über eine 3V Knopfzelle betreiben möchte, wäre das nicht gut. Die Pull-Ups kann man laut Datenblatt auch nicht einzeln abschalten, außer man schaltet den jeweiligen Pin auf Output um (was jeweils vor sleep ja möglich ẅare). Allerdings wäre es sicher eine schlechte Idee, wenn ein Pin, der niederohmig gegen GND gezogen ist, auf Output umgeschaltet wird?
Hallo, Ich würde die DIL-Schalter am anderen Ende gegen den Taster hängen. (sind dann natürlich nur auswertbar solange der Taster gedrückt ist). Gruß Anja
Für den Taster einen externen Pull-Up verwenden: dann kannst du die internen Pull-Ups abschalten bevor du Sleep aktivierst (und nach den Aufwecken wieder einschalten).
oder falls du noch einen Pin frei hast, diesen als geschalteten GND für die DIL-Schalter während der Aktivzeit verwenden.
Dominik schrieb: > Allerdings wäre es sicher eine > schlechte Idee, wenn ein Pin, der niederohmig gegen GND gezogen ist, auf > Output umgeschaltet wird? Wieso? Wenn der Pin auf "Out-Low" geschaltet ist, sehe ich da kein Problem! D.h. erst 0 ins PORTB-Register schreiben (per "write" operation - keine "read-modify-write" verwenden, also auch nicht BCF), dann mit TRISB auf Ausgang, und dann in Sleep.
Kastanie schrieb: > oder falls du noch einen Pin frei hast, diesen als geschalteten > GND für > die DIL-Schalter während der Aktivzeit verwenden. Danke für den Tipp! Die Idee gefällt mir am besten und so werde ich es machen!
Thomas E. schrieb: > Dominik schrieb: >> Allerdings wäre es sicher eine >> schlechte Idee, wenn ein Pin, der niederohmig gegen GND gezogen ist, auf >> Output umgeschaltet wird? > > Wieso? > Wenn der Pin auf "Out-Low" geschaltet ist, sehe ich da kein Problem! > D.h. erst 0 ins PORTB-Register schreiben (per "write" operation - keine > "read-modify-write" verwenden, also auch nicht BCF), dann mit TRISB auf > Ausgang, und dann in Sleep. Sehen das alle so? Der PIC könnte aus irgendeinen Grund ja mal durcheinander kommen (leere Batterie an der Spannungsgrenze, bzw. Spannungseinbruch durch Verbraucher) bzw. ein Programmierfehler passieren (falsches Programm reingeladen).
Dominik schrieb: > Der PIC könnte aus irgendeinen Grund ja mal > durcheinander kommen Selbst wenn das mal passieren sollte, dann spricht viel dafür (u.A. auch praktische Erfahrung ;)), daß der Ausgang davon nicht gleich kaputt geht. Die Highside FETs der Port-Ausgänge sind nicht besonders kräftig, bei 3V VCC erst recht nicht. Da wird der Ausgangsstrom selbst bei Kurzschluss gegen GND keine extremen Werte annehmen und Du wirst den damit kaum kaputt kriegen. Zudem liefert so eine Li-Knopfzelle sowieso nur ein paar mA. Sonst könntest Du notfalls auch noch einen Angst-Widerstand in die GND-Leitung der DIP-Schalter oder in die Versorgungsspannung zum PIC legen (z.B. 100 Ohm). Im Normalbetrieb ist der Spannungsabfall am Widerstand vernachlässigbar, im Kurzschlussfall aber der Strom auf unschädliche Werte begrenzt oder führt sofort zum Brownout-Reset. Zudem ist so ein Widerstand in der VCC-Leitung recht praktisch, um schnell mal mit dem Multimeter im Millivolt-Bereich die Stromaufnahme des µC zu kontrollieren (ist er wirklich im Sleep? Nimmt er evtl. mehr Strom auf, als erwartet? usw.) Aber ich halte das nicht für notwendig - durch Kurzschluss nach GND hatte ich noch nie einen defekten Ausgang, ESD ist da für den Port sicher um Größenordnungen gefährlicher.
:
Bearbeitet durch User
Thomas E. schrieb: > Die Highside FETs der Port-Ausgänge sind nicht besonders kräftig, bei 3V > VCC erst recht nicht. Da wird der Ausgangsstrom selbst bei Kurzschluss > gegen GND keine extremen Werte annehmen und Du wirst den damit kaum > kaputt kriegen. Falsch. Ich habe das schon geschafft, mehrfach. Insebesondere bei 5V macht es schnell "patsch" wenn man einen PIC (in meinem konkreten Fall PIC24FV32KA301) gegen GND treiben lässt. Hab das so zweimal auf dem Breadboard hinbekommen. Es mag Exemplarabhängig sein, möglich ist es aber. Also Vorsicht. Mein "Trick" dagegen: Serienwiderstand zu Ports, die auf Stiftleisten gehen. z.B. für 5V 470Ohm, für 3V3 220Ohm.
... "schlau" ist das alles nicht im sinne von low current im sleep mode. weil best wäre im sleep mode immer port pins als analog input (100mohm) zu setzen und externe mohm pull-up/downs! daher hier port-a pins verwenden, wo das geht. interne pull-ups (so max 50k) verwendet man nicht, wenn ua zählen, sondern externe im mohm bereich. mt
Apollo M. schrieb: > interne pull-ups (so max 50k) verwendet man nicht, wenn ua zählen, > sondern externe im mohm bereich. Ist Deine Shift-Taste kaputt? Hat wohl zu hochohmige Pull-Ups eingebaut... :D Milliohm-Widerstände bei Strömen in µA Bereich wären auch nicht so schlau! Nein, Megaohms wären mir zu störanfällig. Für Schaltkontakte/Taster ist oft 20-30k schon zuviel, weil die Kontakte evtl. einen gewissen Mindeststrom haben wollen. Und es ist gar nicht notwendig, im Sleep-Modus Strom durch die Pull-Ups zu schicken, wenn man die Ports vor dem Sleep-Modus entsprechend umschaltet. Man kann auch z.B. einen 5k PullUp nehmen und zum Stromsparen nur 10µs pro Sekunde zum Auswerten des Schalters bestromen, dann ist der effektive Wert des Widerstands 500 Megaohm! Das scheint mir schlauer zu sein, als eine Schaltung zu haben, die bei ein wenig Feuchtigkeit aussteigt, aber die Batterie trotzdem ständig mit mehreren µA leersaugt.
:
Bearbeitet durch User
Hallo, wäre nicht ein PORTB - change on interrupt (IOC) eine sehr stromsparende Möglichkeit? gruss Jochen-Paul
picfan schrieb: > wäre nicht ein PORTB - change on interrupt (IOC) eine sehr stromsparende > Möglichkeit? Für was? Es geht doch in erster Linie um DIP-Switches. IOC erkennt Änderungen des Input-Levels, kann aber das Grundproblem, daß man Strom über einen Pullup-Widerstand durch den ggf. geschlossenen Schalter schicken muss, um seine Schalterstellung zu erkennen, nicht lösen!
mit einem Umschalter d.h. von Z.b. +5v zu GND pro PIN sollte das ohne nennenswerten Strom und ohne Pullups funktionieren. Gruss Jochen-Paul
picfan schrieb: > mit einem Umschalter d.h. von Z.b. +5v zu GND pro PIN sollte das > ohne > nennenswerten Strom und ohne Pullups funktionieren. > Gruss Jochen-Paul Gibt es denn DIP-Switches mit Umschalter?
Dominik schrieb: > Gibt es denn DIP-Switches mit Umschalter? Ich habe jedenfalls welche, allerdings weiss ich nicht mehr woher(wahrscheinlich aus China, ebay). Gruss Picfan
Zum Beispiel: https://www.ebay.ch/itm/40PCS-3-Pin-SS12D00G3-2-Position-SPDT-1P2T-PCB-Panel-Mini-Vertical-Slide-Switch/163181068681?hash=item25fe598189:g:d6UAAOSwKApa8Cn- Gruss Picfan
Das verstehst Du unter DIP-Switch? Üblicherweise meint man mit DIP-Switches sog. "Mäuseklaviere", wie die hier: https://www.ebay.de/itm/DIP-Schalter-Kodierschalter-Switch-2-4-6-8-10-und-12-fach-polig-Codier-Mini/271245120238?hash=item3f277812ee:m:mylU4G0B17BZMzY_QgqATkg Die sind als Umschalter äußerst unüblich...
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.