Wie kann verhindert werden, dass Attiny84 durch eine hochgezogene Datenleitung eingeschaltet wird?

Ich habe ein einfaches Sensorboard entwickelt, das auf dem Mikrocontroller Attiny84a basiert und über eine serielle Verbindung kommunizieren kann. Ich verwende einen Arduino-Bootloader und die SoftwareSerial-Bibliothek auf den Pins 5 (RX) und 3 (TX). Ich möchte in der Lage sein, die serielle Leitung angeschlossen zu lassen, während ich den Sensor aus- und wieder einschalte. Aber es scheint, dass der Attiny84 über die RX-Leitung der seriellen Verbindung mit Strom versorgt wird, die vom anderen Kommunikationspartner hochgezogen wird.

Es scheint, dass die RX-Leitung auf 3,4 Volt gezogen wird, wenn nichts angeschlossen ist, und ich kann 1,4 V an den Vcc- und GND-Pins des Attiny84 messen, wenn die serielle Leitung angeschlossen ist. Anscheinend reicht das zum Einschalten, da meine Debug-LED schwach zu blinken beginnt.

Gibt es eine einfache Möglichkeit, den Attiny84 ausgeschaltet zu halten, auch wenn das serielle Kabel angeschlossen ist?

Vorwiderstand auf der Datenleitung? Oder ein Lastwiderstand auf den Stromversorgungsleitungen parallel zum AVR, aber wohlgemerkt, Ihre Datenleitung wird belastet. Das liegt an den Schutzdioden auf dem Chip, das kann man nicht ändern.
Wenn du eine gute Lösung findest, würde ich mich freuen, das hat mich immer gestört und ich habe einfach damit gelebt. Grundsätzlich würde es zu dem Zeitpunkt, an dem ich alles andere auf der Platine hatte, genug Strom abziehen, dass der ATMega / Tiny unter der Rücksetzschwelle liegen würde.
Es ist eine schlechte Designpraxis, andere Chips können unter diesen Bedingungen einrasten und sich selbst zerstören (I/O-Pins einschalten, bevor die Versorgungspins mit Strom versorgt werden).
Sie sagen also, ein Vorwiderstand auf der Datenleitung ist eine schlechte Konstruktionspraxis, da der E / A-Pin immer noch hochgezogen ist? Es scheint der einfachste Ansatz zu sein und ich kann bestätigen, dass es in meinem Fall funktioniert. Aus Neugier, was für ein Chip ist das, der sich selbst zerstören könnte?
Welchen Wert hat der Pullup-Widerstand? Darf ich es wagen vorzuschlagen, dass es einfach darum geht, es zu erhöhen, damit nicht genügend Strom vorhanden ist, um die Attiny mit Strom zu versorgen?
In meinem Fall funktionierte es gut mit einem 1k-Widerstand, der den Strom auf etwa 3mA begrenzen sollte. Die Diodenlösung ist jedoch sauberer, da sie unerwünschten Strom blockiert, anstatt ihn nur zu reduzieren.

Antworten (3)

Abhängig von den verfügbaren Margen könnte dies für Sie funktionieren. Es ermöglicht dem Rx-Signal, den ATTiny Rx-Eingang auf 0,6-0,7 V herunterzuziehen, lässt jedoch keinen Strom zurück in den Prozessor fließen. Der Knoten "ATTiny VCC" wird mit dem Prozessor ein- und ausgeschaltet. Wenn dies 5 V (statt 3,3 V) ist, müssen Sie den Widerstand so dimensionieren, dass er keine Rückflussprobleme im Rx-Schaltkreis verursacht.

Wenn 0,6 V zu hoch sind, um ein gutes LOW im ATTiny auszulösen, können Sie eine Low-Drop-Diode wie Schottky oder Germanium verwenden.

schematisch

Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan

Einfach zu implementieren und funktioniert in meinem Fall wie ein Zauber. Vielen Dank.
Ich denke, dass die Diode den Stromfluss zum Eingang blockiert
Ja, dafür ist es da.

Dies geschieht, weil sich an den GPIO-Pins interne Schutzdioden befinden, sodass jede eingehende Spannung zur internen Stromschiene umgeleitet wird ...

Geben Sie hier die Bildbeschreibung ein

Obwohl es sich um kleine Dioden handelt, verbraucht dieser Chip so wenig Strom, dass es oft ausreicht, ihn zu betreiben. Dies ist die Quelle eines der 10 schwersten Fehler, die ich je schwer finden konnte!

Methode #1 - Ziehen Sie ~RESET Low

Solange die Spannung am ~RESET-Pin weniger als 0,2 * Vcc beträgt, bleibt der Chip in einem Reset-Zustand und läuft nicht.

Geben Sie hier die Bildbeschreibung ein

Sie können den ~RESET-Pin mit dem Stromversorgungspin verbinden und einen Pulldown-Widerstand verwenden, um den ~RESET-Pin unter dem Schwellenwert zu halten, wenn keine aktive Stromversorgung vorhanden ist. Beachten Sie, dass Sie den Pulldown benötigen, da es einen internen Pullup auf dem ~RESET-Pin gibt.

schematisch

Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan

Diese Methode verschwendet ein wenig Strom, hält den Chip jedoch in einem zurückgesetzten Zustand, wenn er nicht aktiv mit Strom versorgt wird.

Denken Sie daran, dass an der Diode ein Spannungsabfall auftritt.

Methode Nr. 2 - Eingangspins isolieren

schematisch

Simulieren Sie diese Schaltung

Hier verwenden wir die Stromversorgung, um den Eingangspin zu aktivieren. Wenn keine Spannung von der Stromversorgung kommt, fließt kein nennenswerter Strom in den Eingangspin.

Wollen Sie sagen, indem Sie das System im Reset-Modus halten, dass kein Strom zurückfließen kann? Ich bin mir nicht sicher, ob ich das als wahr empfunden habe.
Der Strom fließt immer noch zurück, aber der Chip läuft nicht - er befindet sich in einem RESET-Zustand.
Nein -1, aber ich glaube nicht, dass dies wirklich das Problem anspricht, das einen Chip über seine E / A mit Strom versorgt. Es maskiert nur das Symptom.
Vielen Dank für diese informative Antwort! Mir scheint jedoch auch, dass Nr. 1 das Problem nicht an der Wurzel packt und Nr. 2 etwas komplizierter erscheint als die von Will Dean und Daniel diskutierte Diodenlösung, daher werde ich zuerst ihre versuchen.

Wenn Ihre Kommunikationsgeschwindigkeit niedrig genug ist und Ihr Strombudget es zulässt, können Sie dies oft vermeiden, indem Sie einfach eine Diode zwischen dem RX-Pin und der Außenwelt hinzufügen (Anode zum RX-Pin, Kathode zur Außenwelt) und dann mit einem Pull-up-Widerstand am RX-Pin (Ihr Mikro kann dies möglicherweise intern tun).

Dann kann das Remote-Gerät den RX-Pin nur nach unten ziehen, aber der Pull-up-Widerstand zieht ihn wieder nach oben.

Sie werden wahrscheinlich eine Schottky-Diode (z. B. BAT54) verwenden wollen, und Sie müssen über die Input-Low-Pegel (Vil) nachdenken, die Sie am Mikro-Pin erhalten - überprüfen Sie, ob sie noch in Ordnung sind.

Wenn Sie dies nicht tun können, können Sie in dieser Zeile einen Puffer verwenden - indem Sie einen Puffer auswählen, der dieses Verhalten von Schutzdiode zu VCC nicht aufweist (z. B. 74LVC oder einen der anderen ähnlichen - Aufruf von Texas Instruments). diese 'Ioff'-Unterstützung - siehe dies zum Beispiel)

Äh....... Fluch?
Du kannst nicht nach 5 Minuten "jinx" sagen :-)
Es hat ein bisschen gedauert, bis ich meine Antwort geschrieben und den Schaltplan gemacht habe ... aus meiner Sicht war es gleichzeitig!
Ja, ich bin viel zu faul, um die Schaltpläne zu machen.