Arduino/Atmega328: Überprüfen Sie, ob die PIN mit GND kurzgeschlossen ist

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.

Foto eines Beispiels für einen 2-poligen Jumper

Das Schema ist also:

schematische Darstellung

und der Vorstand ist:

PCB-Layout

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

Ich habe nicht nach der spezifischen MCU gesucht. Aber wenn es einen internen Pull-up-Widerstand unterstützt und wenn Sie diesen Modus korrekt aktivieren, können Sie den Pull-up anwenden und den Pin für die Eingabe konfigurieren und den Jumper erkennen.
Wenn der Jumper installiert ist, ist der Pin LOW, nicht HIGH.
@PeterBennett ok, danke für die Korrektur. Aber zu meiner 4. Frage? Die Antwort auf die 4 Fragen ist "JA"? Danke
1) ja 2) niedrig 3) interner Pull-up genug für nicht sehr laute Umgebungen 4) für immer. Setzen Sie jedoch entkoppelnde 100-nF-Kondensatoren zwischen AVCC / VCC und gnd.
Auch gefragt unter: forum.arduino.cc/index.php?topic=504506 Wenn Sie das tun, dann seien Sie bitte rücksichtsvoll genug, um Links zu den anderen Stellen hinzuzufügen, die Sie über Kreuz gepostet haben. Dadurch vermeiden wir Zeitverschwendung durch doppelten Aufwand und helfen auch anderen, die die gleichen Fragen haben und Ihren Beitrag finden, um alle relevanten Informationen zu finden.

Antworten (1)

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:

Weitere Informationen zu "minimalen" ATmega-Schaltungen.

Vielen Dank für Ihre Antwort. Ich kenne die Notwendigkeit von Kondensatoren, übrigens. Mein Schema war einfach, den Schwerpunkt zu rendern. Danke schön.