In einem Projekt mit einem Atmega328, der mit 8 MHz läuft und mit 3,3 V versorgt wird, muss ich überprüfen, ob ein 2-poliger Jumper dauerhaft gesteckt ist.
Das Schema ist also:
und der Vorstand ist:
ich kann es mir nicht vorstellen...
Ist es wirklich so einfach:
1) Konfigurieren Sie die PIN als INPUT_PULLUP?
2) Überprüfen Sie, ob die PIN HIGH ist, dann ist sie verbunden und Dinge tun?
3) Benötige ich einen externen Widerstand (und welchen Wert) oder reicht der INTERNAL_PULLUP?
4) Kann ich die PIN für längere Zeit mit GND kurzgeschlossen lassen, sagen wir für 1 Jahr? Dieser ATmega wird "für immer" sein
Pseudocode, um zu verstehen:
void setup() {
pinMode(PIN_CHECK , INPUT_PULLUP);
}
void loop() {
// at first post, I did put this HIGH, but I was wrong.
// the check need to be for LOW, when connected
if ( PIN_CHECK == LOW ) {
Serial.println("The user has placed the jumper, the pin is shorted to GND!");
}
}
Danke an alle
Ist es wirklich so einfach
Fast:
Sie benötigen eine Codeänderung (wie freundlicherweise in den Kommentaren von Peter Bennett und next-hack erwähnt , während ich dies schrieb)
Atmel empfiehlt (siehe Link unten), dass Sie mindestens einen Entkopplungskondensator zwischen Vcc und Gnd und eine RC-Kombination am Reset-Pin hinzufügen, um falsche Resets zu verhindern, wenn Sie sich in elektrisch lauten Umgebungen allein auf den internen Pull-up verlassen (ein Klassiker Trigger ist in der Nähe von Relais in Betrieb). Wenn Sie sich entschieden haben, das Design so zu ändern, dass der Reset-Pin von irgendetwas Externem angesteuert wird, dann wird auch eine Diode vom Reset-Pin zu Vcc empfohlen.
1) Konfigurieren Sie die PIN als INPUT_PULLUP?
Ja, Sie können dies tun, unabhängig davon, ob Sie auch einen externen Pull-up-Widerstand hinzufügen oder nicht.
2) Überprüfen Sie, ob die PIN HIGH ist, dann ist sie verbunden und Dinge tun?
Fast. Der zu überprüfende Pin-Status ist der Pin, der bei installiertem Jumper LOW ist , daher muss Ihr Code dafür geändert werden.
3) Benötige ich einen externen Widerstand (und welchen Wert) oder reicht der INTERNAL_PULLUP?
Aus Erfahrung würde ich erwägen, einen externen Pull-up-Widerstand für den Jumper-Pin-Eingang (z. B. 10 k) hinzuzufügen, insbesondere wenn irgendetwas, das ein elektrisches Feld verursacht (z. B. Finger, in der Nähe befindliche Relais usw.), diesem nahe kommen könnte, da der interne Pull-up-Widerstand Up-Widerstände sind relativ schwach. Andere Personen mit unterschiedlichen Erfahrungen können anderer Meinung sein, dass dies erforderlich ist.
Wenn Sie diesem Eingangspin keinen externen Pullup-Widerstand hinzufügen möchten, müssen Sie seinen internen Pullup-Widerstand aktivieren.
4) Kann ich die PIN für längere Zeit mit GND kurzgeschlossen lassen, sagen wir für 1 Jahr? Dieser Atmega wird auf "für immer" sein
Ja, das ist in Ordnung. Durch den Pullup-Widerstand (ob intern oder extern) und diesen Jumper wird etwas Strom verbraucht.
Es gibt andere Techniken, die Sie verwenden könnten, um den Stromverbrauch zu reduzieren, z. B. Schlafen, dann alle 100 ms aufwachen, den Pin-Status überprüfen und dann wieder schlafen, wenn der Stromverbrauch ein Problem darstellt.
Sehen:
Atmel / Microchip Application Note AN2519 bezüglich Empfehlungen zum Zurücksetzen und Entkoppeln
Was ist der minimale Satz von Teilen für eine Schaltung mit diesem AVR-Mikrocontroller?
Weitere Informationen zu "minimalen" ATmega-Schaltungen.
jonk
Peter Bennett
sineverba
nächster Hack
per1234