Verhalten unkonfigurierter GPIO-Pins
Hallo zusammen,
was genau passiert mit noch nicht per Software als Ein- oder Ausgang konfigurierten Pins? Nehmen wir an, dass ich einen beliebigen GPIO "ignoriere" und ihn weder als In- oder Output festlege, welchen Zustand nimmt er dann an? Ist er hochohmig? Ist er über einen Widerstand (Pull-Up oder Pull-Down) mit der Spannungsversorgung verbunden oder geht er direkt gegen Plus/Minus?
Manchen mag die Frage doof erscheinen, aber ich frage deshalb nach, weil ich vorhin meinen Arduino abgeschossen und den Pi dazu gebracht habe, sich allmählich in die Tischplatte zu brennen bzw. selbst einzuschmelzen, als ich die beiden über einen Pegelwandler (5V zu 3,3V; bidirektional) an SDA und SCL verbunden habe. Nun suche ich nach der Ursache. Außerdem war der 3v3-Pin des Arduino mit einem GPIO am Pi verbunden. Hab alles angeschlossen, dann einen Testsketch auf den Arduino hochgeladen, bis der irgendwann offline war. Wollte als nächstes die Software auf den Pi laden und ausprobieren, doch der war zu dem Zeitpunkt schon längst dahin.. Alle GPIOs waren auf einmal HIGH und die CPU defekt (Kurzschlussstrom am Spannungsregler - ca. 6 Ampere, mehr lässt das Ding nicht durch). Alle Spannungen haben gepasst, am Pegelwandler und am Micro-USB des Pis. Daran kann es also nicht gelegen haben, weshalb ich schwer die GPIOs im Verdacht habe. Der Arduino jedenfalls war ab dem Reset nach dem Upload hinüber, der Pi köchelte da schon lange.
Im Prinzip möchte ich gerne wissen, was passiert wenn ich 3,3V auf einen GPIO schalte, der noch nicht per Software als Eingang festgelegt wurde. Außerdem wüsste ich gerne, ob ich einen Vorwiderstand am GPIO verwenden muss (in Reihe geschaltet, nicht gegen Plus oder Minus, Google führt einen nämlich nur zu Pull-Ups /-Downs). Bei einem konfigurierten Pin hatte es bisher auch ohne funktioniert, damals über einen Optokoppler mit 3,3V. Mich würde auch wundern wenn ein Kurzschluss entstünde weil der Controller gerade an einem Pin lauscht.
Für eine kurze Auskunft wäre ich euch super dankbar :) Solche Details finde ich nämlich nicht im Internet. Vielleicht benutze ich auch nur die falschen Schlagwörter.
Liebe Grüße,
Don
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
danke für eure Antworten! :)
Ich habe von damals als ich im Handbuch für den Pi gelesen habe noch 16mA Maximalstrom pro GPIO und 50mA für alle GPIOs im Kopf. Ich hätte ja noch eingesehen, wenn die beim Einschalten des Arduino überschritten worden wären, weil ich dem Transistor für den Arduino keinen MOSFET-Treiber oder Vorwiderstand vorgeschaltet habe. Wenn aber alle GPIOs beim Start als Eingang festgelegt werden, hätte der gar nicht aktiviert gewesen sein können. Der ursprüngliche Plan war nämlich, dass der Pi den Arduino später zuschaltet, wenn er bereit ist und dann prüft, ob der Arduino online ist. Da war mir die einfachste Möglichkeit, den Arduino-3v3-Pin zu nehmen. Ob das diesen "Latch-Up" ausgelöst hat? Eine Alternative wüsste ich zu der Methode jedenfalls nicht. Optokoppler möchte ich nicht nehmen wegen des Stromverbrauchs, mir fällt dann nur noch ein kleiner Transistor ein. Der Kleinste den ich zumindest bei Reichelt finden konnte ist der 2N7000, doch selbst der schafft noch mehr Leistung (200mA wenn ich die richtige Zahl noch im Kopf habe) als der Arduino.
Das mit den Serienwiderständen werde ich jedenfalls beherzigen, kann nicht alle paar Wochen alles abschießen das irgendwie mit angeschlossen ist, da ginge der ganze Spaß verloren ... Gibt es dafür einen Widerstandswert, der zu empfehlen ist? Oder geht man vom Höchsten aus das möglich ist, damit am Ende gerade noch so viel Spannung übrig bleibt, dass ein logisches HIGH sicher erkannt wird (z.B. 1,0V anstelle 3,3V am GPIO-Eingang, der Rest fällt am Widerstand ab)? Dann würde ich mich nochmal durch die Datenblätter graben, wäre ja ein verlässlicher Ansatz. Allein das von der CPU des Arduino ist über 300 Seiten lang ^^
Den Schaltplan hänge ich mal wie gewünscht hier an, hab nochmal alle relevanten Bauteile zusammengeschnippelt und alles rausgekürzt, das momentan noch ein Entwurf und nicht verbaut ist. Gestern Nacht fehlte mir dafür doch noch die Zeit am Ende ... Weil es recht chaotisch ist, kurz erklärt: Ein Schalter aktiviert einen MOSFET. Dieser schenkt dem Pi seine Masse, aber auch den Spannungsreglern (5V und 3,3V). Am GPIO4 des Pis hängt ein weiterer MOSFET, der den Arduino aktivieren soll. Kein Vorwiderstand zur Zeit, aber ein Pull-Down von 1MOhm gegen Masse. Ist besagter Transistor aktiv, bekommt auch der Arduino seinen Minuspol und startet (+13,8V direkt vom Akku bzw. Netzteil). GPIO3 geht über den Pegelwandler an SCL und GPIO2 an SDA. GPIO14 ist mit dem 3,3V-Pin des Arduino verbunden.
Aber bitte nicht erschrecken - viele Schaltzeichen sind nicht normgerecht, sondern Marke Eigenbau (z.B. für den Pegelwandler und die Transistoren).
Anhang 32422
Wenn hier kein kapitaler Fehler vorliegt, möchte ich wenigstens nicht ausschließen, dass der GPIO-Controller von früheren Feldversuchen und andauerndem Rumprobieren einen Knacks weg hatte und diese Vorschädigung eine Kettenreaktion ausgelöst mit besagtem Latch-Up als Endergebnis, als vom Arduino 3,3V angelegt wurden..
Grüße,
Don
_________
Edit: Ich weiß nicht, wieso das Bild auf einmal so klein ist... sollte eigentlich doppelt so groß sein und nicht nur 800px