Ich verwende einen ATTINY13 für eine Spielzeuganwendung. Es blinkt einfach LEDs in bestimmten Mustern. Ich beschloss, eine "Geschwindigkeitsregelung" mit einem Potentiometer hinzuzufügen, aber der einzige Pin, den ich übrig hatte, ist der Reset-Pin.
Ich habe einen Spannungsteiler erstellt und mit 330-Ohm-Widerständen aufgefüllt, und auf einem Steckbrett scheinen die Dinge einwandfrei zu funktionieren.
Nachdem Sie sich ein wenig über die Verwendung des Reset-Pins für ADC informiert haben, scheinen einige Leute darauf hinzuweisen, dass Sie den AVR nicht erneut programmieren können. Ich hatte dieses Problem nicht, aber ich mache auch keine In-System-Programmierung.
Der Code, den ich verwende, um ADC0 auf Pin 1 (PB5) zu aktivieren, lautet wie folgt:
DDRB = 0b00001000;
ADCSRA = 0b11100111;
ADMUX = 0b00100000;
Meine Frage ist: Warum funktioniert das? Ich würde gerne ein bisschen mehr wissen, bevor ich mit der Leiterplattenherstellung fortfahre. Bisher nur Pech gehabt?
Ich nehme an, weil das Zurücksetzen niemals Masse "sieht", das Mikro im Stromkreis niemals spontan zurückgesetzt wird, aber ich bin mir nicht sicher, wie ich es geschafft habe, den Reset-Pin für ADC zu verwenden, ohne die Flash-Neuprogrammierung zu deaktivieren.
Hinweis: Ich verwende derzeit eine DIP-8-Version des Chips in einem Sockel, den ich zu einem Programmierer verschiebe, um Parameter zu ändern. Für die Produktion werde ich auf eine SOIC-Version umsteigen.
Sonstiges: Der 6-polige Header verbindet sich mit einigen Charlieplexed-LEDs
Die Reset-Sperrsicherung tut genau das - deaktiviert die Reset-Funktion des zugehörigen Pins. Wenn Sie diese Sicherung setzen, gibt es keine Möglichkeit, das Gerät zurückzusetzen, außer:
Die serielle In-Circuit-Programmierung (auch bekannt als ICSP) beruht meines Erachtens auf dem Zurücksetzen des Geräts über den Reset-Pin, sodass Sie das Gerät nicht mehr neu programmieren können, sobald diese Sicherung mit ICSP eingestellt ist. Es gibt jedoch mehr als eine Möglichkeit, einen AVR neu zu programmieren. Wenn das Gerät serielle oder parallele Hochspannungsprogrammierung (HVSP oder HVPP) unterstützt, ist dies immer eine Option. Oder wenn Sie einen Bootloader auf dem Chip einbauen können (was zum Beispiel mit einem ATtiny85 möglich ist, nicht sicher über den ATtiny13), kann das auch funktionieren.
Davon abgesehen enthält der Datenblattabschnitt 24.3.3 die folgenden Auszüge:
Spezielle Kombinationen von Sicherungsbits sperren das Gerät für die weitere Programmierung und verwandeln es effektiv in ein OTP-Gerät. Die folgenden Kombinationen von Einstellungen/Sicherungsbits verursachen diesen Effekt:
- 128 kHz interner Oszillator (CKSEL[1..0] = 11), kürzeste Hochlaufzeit (SUT[1..0] = 00), Debugwire aktiviert (DWEN = 0) oder Reset deaktiviert RSTDISBL = 0.
- 9,6 MHz interner Oszillator (CKSEL[1..0] = 10), kürzeste Hochlaufzeit (SUT[1..0] = 00), Debugwire aktiviert (DWEN = 0) oder Reset deaktiviert RSTDISBL = 0.
- 4,8 MHz interner Oszillator (CKSEL[1..0] = 01), kürzeste Hochlaufzeit (SUT[1..0] = 00), Debugwire aktiviert (DWEN = 0) oder Reset deaktiviert RSTDISBL = 0.
Wenn Sie nicht beabsichtigen, die Schaltungsprogrammierung zu unterstützen, können Sie sicher einmal programmieren, dann die Reset-Deaktivierungssicherung setzen und die alternative Funktion des Pins verwenden. Sie möchten die Reset-Funktion nicht in der Produktion aktiviert lassen, es sei denn, Sie möchten Ihr Gerät nicht auf willkürliche Weise zurücksetzen. Wenn der Pin für einen bestimmten Zeitraum "low" ist, wird er im Grunde zurückgesetzt, Ende der Geschichte. Laut Datenblatt Tabelle 18-4 beträgt der Bereich möglicher Schwellenwerte für die externe Rücksetzung auf Auslösung 0,2 * Vcc bis 0,9 * Vcc ... Sie haben vielleicht nur Glück mit Geräten, die näher an 0,2 * Vcc liegen.
Vicatcu
JYelton