Verwenden Sie den RESET PIN auf Attiny85 als Eingang mit Spannungsteiler

Spannungsteiler & Pull-up mit analogRead

Der Attiny hat 6 Pins, die Sie als E / A verwenden können.

Während 5 von ihnen wirklich einfach zu verwenden sind, setzt der Pin 1, der Reset-PIN, offensichtlich den Mikrocontroller zurück, wenn die Spannung niedriger als etwa 2,5 V ist.

Durch die Neuprogrammierung der Sicherungen, um den Reset-Pin als E / A-Pin zu verwenden, kann ich den Arduino ISP-Programmierer nicht mehr verwenden.

Die einzige Möglichkeit, es als Eingang zu verwenden, ohne den MC zurückzusetzen, besteht darin, über 3 V zu bleiben und analogRead zu verwenden?

Nachdem ich das endlich hinbekommen habe, habe ich ein wenig mit meinem Multimeter herumgespielt (nur Messwerkzeug vorhanden) und mit Widerständen experimentiert.

schematisch

Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan

The powersupply(battery) outputs around 5.11v.

not pressed i get 5.11v on the "reset pin".
pressed i get 3.41v on the "reset pin".

not pressed the resistace is 39K Ω.
pressed the resistace is 19K Ω.

Da ich die Sicherungen nicht neu programmieren oder den Attiny85 verbrennen möchte, lautet meine Frage:

Kann ich die Attiny mit dieser Schaltung irgendwie beschädigen analogRead();?

Die Messwerte wären etwa 680, wenn sie gedrückt werden, oder 1000, wenn sie nicht gedrückt werden.

Sollte ich andere Widerstände verwenden, um weniger Strom zu verbrauchen / kontinuierlich zu viel Strom zu senden? ... wenn das geht...

Irgendwelche anderen Vorschläge?


Anmerkungen.:

Geben Sie hier die Bildbeschreibung ein

Ich verwende Pins 2(PB3),3(PB4),5(PB0),6(PB1)als PWM-Kanäle (mit npn-Transistoren); Rot, Grün, Blau, Weiß.

Benutzter Stift 7(PB2)als Knopf. Aber ich brauche auch ein Potentiometer ...

SO:

Pin 7(PB2)wird Potentiometer (analogRead).

und ich hoffe

Pin 1(PB5)wird zu einer Schaltfläche mit analogRead oder was auch immer.

BEARBEITEN

Diese Seite erklärt mehr über das Problem, obwohl ich eine einfache Schaltfläche benötige.

http://www.technoblogy.com/show?LSE

BEARBEITEN

Ich habe die Schaltung oben nicht getestet. Ich frage Sie, ob es funktionieren könnte, wenn etwas nicht stimmt. Ich habe Angst, den Stift zu beschädigen.

Alles was ich weiß ist das:

  1. Es wird mit niedriger Spannung unter Verwendung des normalen Potentiometer-Setups oder des normalen Tasten-Setups zurückgesetzt
  2. Wenn ich die Sicherungen setze, kann ich den Chip nicht neu programmieren

  3. pin1 = pb5 = adc0 = analogread (A0) = Arduino pin5 = RESET

Es tut mir leid, aber ich verstehe nicht ganz, was das Problem ist. Sobald Reset als I/O-Pin eingestellt ist, kann die MCU nicht mehr zurückgesetzt werden. Sie können weniger als 2,5 V dafür bereitstellen.
Sobald das Zurücksetzen als I/O-Pin eingestellt ist, können Sie es nicht neu programmieren, da das Zurücksetzen mit ISP erforderlich ist
Ja. Du willst es also umprogrammieren?
Vielleicht? wenn keine weitere komplexe Schaltung erforderlich ist.
Sie müssten eine HVSP-Schaltung (High Voltage Serial Programming) erstellen: instructables.com/id/AVR-Attiny-fusebit-doctor-HVSP Es ist nicht wirklich so kompliziert.
Ich denke, es ist ein wenig zu komplex für mich, atm ... übrigens habe ich nicht alle diese Teile. Ich hoffe also, dass ich diesen seriellen Hochspannungsprogrammierer umgehen kann. ISP mit Arduino ist wirklich schnell, da ich bereits eine Schaltung / Abschirmung für ein Arduino gemacht habe.
Stimmt etwas mit der obigen Tastenschaltung nicht?
Sie können den Reset-Pin wie einen anderen I/O-Pin behandeln. Das heißt, Sie würden das interne Pull-up aktivieren und es mit einer Taste an der Seite verbinden. Und verbinden Sie die andere Seite des Knopfes mit Masse.
Nein, nichts ist falsch, aber zum Lesen, wann eine Taste ein/aus ist, ist es etwas ungewöhnlich. Versuchen Sie es oben.
Ja, ich weiß, dass es einfacher wäre ... Ich habe im Moment nur keinen Hochspannungsprogrammierer. Ich kenne den Drachen oder den Stk5000 ... oder Ihre Schaltung. Ich möchte einige dieser elektronischen Tricks lernen ... mit Spannung und Strom spielen. Dies ist etwas, das ich selbst gefunden habe, als ich es mit einem Multimeter getestet habe. Ich habe nur Angst, dass ich etwas verbrenne ... da ich nicht alle elektronischen Berechnungen kenne
Sagte, dass ich hoffe, dass Sie mir mehr über meine Schaltung erzählen können. wenn es funktioniert ... wenn nicht, oder wenn es funktioniert, aber zu viel verbraucht ... oder vielleicht verstehen, ob es irgendwie einem der anderen nahegelegenen Schaltungsteile schadet und warum
"etwas ungewöhnlich" bitte erklären.
Dies ist tatsächlich eine sehr interessante Idee - den Pin als analogen Eingang in einem eingeschränkten Bereich zu verwenden, ohne seine Reset-Funktionalität zu deaktivieren! Angenommen, es funktioniert überhaupt für Sie, wäre das zu berücksichtigende Experiment, den Stromverbrauch des Chips sorgfältig zu messen, wenn Sie die Eingangsspannung ändern (eine Aufgabe, die nicht trivial ist, da Sie ein Amperemeter mit niedriger Lastspannung benötigen). ). Was Sie suchen würden, ist der übermäßige Verbrauch, der in einigen Totem-Pole-Topologien mit einem unbestimmten Logikpegeleingang auftreten kann.
Wenn Sie die Eingangsspannung über den gewünschten Bereich senken können, ohne den Stromversorgungsstrom zu erhöhen, kann dies vielleicht darauf hindeuten, dass die Idee praktikabel ist. Wenn Sie die Spannung natürlich bis zu dem Punkt senken, an dem Sie einen Reset auslösen, wird der Strom wahrscheinlich drastisch abfallen, was nicht die Daten sind, die Sie erfassen möchten.
Ich benutze @bigjosh circuit schon seit einiger Zeit und es funktioniert perfekt. Also habe ich noch einen Pin auf der Attiny. Ich benutze es für ein 4-Kanal-PWM, 1 Knopf 1 Topf.
Die Verwendung eines Pots anstelle des Knopfes ist auch möglich, die Auflösung wäre jedoch niedriger als 500 auf einem Arduino. Das müssen Sie nur beim ersten Mal messen.
Sie können Spannung ohne Pin ablesen! Siehe Beispiel hier: arduino.stackexchange.com/questions/48739/…

Antworten (1)

Ja, Sie können den Analog-Digital-Wandler an Pin 1 verwenden, auch wenn der externe Reset an diesem Pin noch aktiviert ist, solange die Spannung an diesem Pin nicht unter die Reset-Schwelle fällt.

Hier ist eine einfachere Version Ihrer Schaltung, die zuverlässig funktioniert ...

schematisch

Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan

...

Wenn die Taste SW1 gedrückt wird, bilden die Widerstände R2 und R1 einen Spannungsteiler, der etwa 4,54 Volt an Pin RST anlegt.

Hier ist ein Arduino-Testprogramm, das die integrierte LED zum Leuchten bringt, wenn die Taste gedrückt wird ...

int led = 1;    // Onboard led on trinket

setup() {
    pinMode( led, OUTPUT );
}

loop() {
    if (analogRead(0)) > 900 ) {   // reset pin is near Vcc
        digitalWrite( led , 0 );   // turn led off
    } else {                       // reset pin is less than 900/1024 * 5 vcc
        digitalWrite( led , 1 );   // turn led on
    }
}

Anmerkungen:

Ein Trinket ist im Grunde nur ein ATTINY85 mit einem USB-Anschluss und einem vorinstallierten Bootloader, sodass es einfach ist, Code mit der Arduino IDE hineinzulesen. Alles, was hier über das Trinket gesagt wurde, gilt für einen nackten ATTINY85 und umgekehrt.

Das Datenblatt für den ATTINY85 gibt die Mindestspannung am Reset-Pin an, die als "1" als 0,9 Volt * (V IH2 ) interpretiert wird, was 4,5 Volt entspricht . Da der Ausgang des Spannungsteilers von ~ 4,54 Volt höher ist, sollte er als "1" angesehen und der Chip nicht zurückgesetzt werden.

Geben Sie hier die Bildbeschreibung ein

Am Reset-Pin ist ein Pullup von 30k-60k eingebaut, sodass wir im Prinzip nur einen 30k-Ohm-R2 verwenden könnten und R1 nicht benötigen, aber ich habe festgestellt, dass Sie durch Schaltgeräusche nur mit dem internen Pullup falsche Resets erhalten können .

Ich habe 10k- und 1k-Ohm-Widerstände ausgewählt, weil sie üblich sind und genügend Strom liefern, zuverlässig funktionieren, aber nur etwa 2 mA verschwenden , wenn der Knopf gedrückt wird. Es wird sehr wenig Strom verbraucht, wenn die Taste nicht gedrückt wird.

Ich habe 1000 als Schwellenwert für den analogRead gewählt, weil er auf beiden Seiten viel Spielraum für Ungenauigkeiten in den Werten der beiden Widerstände bietet. Wenn die Taste nicht gedrückt wird, sollte der Reset-Pin sehr nahe an Vcc liegen und daher sollte analogRead() sehr nahe an 1023 liegen. Wenn die Taste gedrückt wird, wird die Spannung beim Zurücksetzen von R2 nach unten gezogen, aber wie viel niedriger, hängt davon ab auf den genauen Werten von R1 und R2 (der tatsächliche Wert der Widerstände kann aufgrund der Toleranz stark von ihrem Marktwert abweichen ) und dem internen Pull-up, daher habe ich einen höheren Wert als nur den Mittelpunkt ausgewählt.

Ich wusste, dass es einen einfacheren Weg gibt! .... danke für deine präzise Antwort ... ich habe es getestet und es funktioniert perfekt! Übrigens verwende ich 10k Widerstände ....
Ist dies besser als die Verwendung einer 3v3-Zenerdiode anstelle von R2? Mit dem 1k-Widerstand gibt es den Reset-Pin 3V von meinem Voltmeter.
@ThatAintWorking Ich denke, ein Zener würde gut funktionieren, ist aber übertrieben. Solange der RESET-Pin über 0,9 Volt liegt, wird der Chip nicht zurückgesetzt und solange Sie den Spannungsabfall (was auch immer es ist) am analogen Eingang sehen können, ist alles in Ordnung.
Bist du dir da wirklich sicher? Was ich gerade gelesen habe ist das v ICH H 2 ist 0,9 * VCC Volt nicht 0,9 Volt
@Unknown123 Du hast vollkommen Recht! Danke für die Verbesserung. Ich habe den Wert von R2 und einige Berechnungen aktualisiert, um dies widerzuspiegeln. Danke noch einmal!
Es ist fast drei Jahre her, ich bin traurig über das Originalposter, übrigens, Ihr Code ist immer noch 900 und nicht 1000, haben Sie eine Idee, wie man mit Potentio arbeiten kann, indem man sehr kleinen Headroom verwendet?