Gelegentlich ich habe mit einem Attiny13, 25, 45 und 85 in einem Projekt und hatte gerade das eine kurze Pin. Diese Chips sollen 6 i/o-Pins haben aber pin Nummer eins (PB5/ADC0) dient gleichzeitig als RESET-Pin und um ihn als einen I/O Pin verwenden, muss man die richtigen Sicherungen im Chip gesetzt. Das ist nicht so schwierig, aber das Problem ist, dass sobald die Sicherung festgelegt ist, der Chip kann nicht durch SPI umprogrammiert werden, sondern braucht eine hohe Spannung-Programmierer, der muss zuerst die Sicherung Bit wieder zurückgesetzt.
Sicher könnte upgrade zu einem Attiny2313, aber oft, die heißt, du musst einen neuen Kern, oder macht ein neues Programmierens-Board installieren, aber das ist auch ein Schmerz.
Also, habe ich mich gefragt, wenn das Zurücksetzen Pin als eine I/O Pin ohne Unordnung mit die Fuse Bits verwendet werden könnte, denn immerhin gibt es noch einiges an Spannung, mit zu spielen, bevor Sie die Reset-Stufe erreicht
Obwohl es mir ein bisschen unklar war, was die erforderlichen Low Voltage ist, dass der Reset-Pin für einen Reset, scheint es, dass es niedriger als was in der Regel als "LOW" interpretiert wird.
Das öffnet möglicherweise Möglichkeiten dazwischen nutzen + Vcc und Vreset für Eingabe-Analog als auch Digital - ohne dass den Chip zurückgesetzt
Zuerst getestet habe ich die analoge Eingabefunktion, wie eine größere Reichweite als die digitale Eingabe Funcion hat (wie ich erwartet, dass den Unterschied zwischen Ebbe und RESET sehr klein sein). Ich habe einen Attiny13, bis eine LED und Widerstand an PB0 angeschlossen und den mittleren Kontakt der ein 25 k Variablen Widerstand an Pin 1 und die äußeren Kontakte zu Vcc und 0V bzw. angeschlossen.
Dann lud ich den Attiny13 mit dem folgenden Programm:
// Using the Reset pin as ADC0 const int Led = 0; int x=0; void setup() { pinMode(Led, OUTPUT); } void loop() { digitalWrite(Led,HIGH); x=analogRead(0); delay(x); digitalWrite(Led,LOW); delay(x); }
Wenn die Variablen Widerstand gedreht wird, bis hin bis zu den + Vcc Schiene, blinkt die LED in einem gleichmäßigen Rhythmus. Wenn ich die Variable Widerstand abgelehnt hat, die Blinkfrequenz ging auf, d. h. eine schnellere blinkende LED... wie erwartet. Das ging bis die LED blinkt (als die Resetfunktion gekickt) plötzlich gestoppt. ERGO, gibt es eine Reihe, welche Pin 1 für Eingabe, unter Beibehaltung der RESET-Funktion verwendet werden kann.
Es stellt sich heraus, dass der Reset bei 9 K Ohm (von 25) war. Dies entspricht 5 *(9/25) = 45/25=9/5=2.2 Volt.
Das ist in der Regel nicht viel anders aus, was einen niedrigen gilt und es ist etwas höher als das was ich verstanden habe Vreset sein.
Als natürlich können Sie eine Schaltung, die immer am Rande des zurücksetzen, wir müssen in irgendeiner Form des Schutzes zu bauen haben: etwas, das die Spannung am Pin 1 von knallharten 2,2 Volt oder weniger hält.
Betrachten wir die zweite Schaltung. Nehmen wir an, dass wir den niedrigsten Widerstand des LDR wir unter die Lichtverhältnisse messen es verwenden, 1 k. Dann wissen wir, dass der Strom durch, dass 1 k 2.2 minimal sein muss mA über die Reset-Spannung bleiben. Folglich der Gesamtwiderstand der LDR + Widerstand muss 5/2.2=2.27k sein, damit des Widerstands muss minimal 1.27 k. Die nächste E12-Werte sind 1,2 k und 1.5 k und 1,2 k zu schützen, sollten wir wählen. (1.2 k-2,27 v /1.5 > k -> 2-Volt)
Natürlich eine können die Schaltung mit dem Widerstand und LDR vertauscht, aber dann ist es viel schwieriger zu berechnen, dass ein sicherer Widerstand wie in Dunkelheit den Wert der LDR gehen kann bis zu mehreren Mega Ohm, ein Widerstand, der in dieser Größenordnung ist gefordert.
Sollten Sie einen Trimmer auf PB5 verwenden, dann Sie einseitig mit Vcc, Variable Pin Tp PB5 und die andere Seite zu Boden über einen Widerstand verbinden müssen, so dass der mittlere Kontakt 2,2 Volt nie getroffen wird.
Sie können den Wert dieses Widerstands aus der Wert der Variablen Widerstand mit der Formel berechnen.
R = 0,58 P
In welche r ist der Wert des Widerstandes und P den Wert des Potentiometers. Sie müssen also mit einem 10 k-Potentiometer einen 5,8 k Widerstand verwenden. Das schränkt den Lesebereich auf den analogen Eingang, aber zumindest können Sie es als einen analogen Eingang.
Nur ein Wort "Achtung" die Widerstände, die ich gefunden mit einem anständigen Multimeter, aber es gemessen wurden ist nicht erstklassig. In "Ihrem" Fall benötigen Sie einen Widerstand, der hat einen etwas anderen Wert und natürlich hängt es auch auf den Variablen Widerstand oder andere Eingangsquelle, die Sie verwenden.
Angesichts die Tatsache, dass die Reset-Ebene auf 2,2 Volt, habe ich keine Lust, zu versuchen, ob es, mit DigitalRead funktionieren würde