PIN Eingang Problem (Anfänger)

Gast #212922
Lesenswert?

Habe am PORTA meines µC einen Schalter. Wenn dieser jetzt betätigt wurde
liegen 5V an PINA.4 an. Sobald 5V anliegen soll er in eine IF-Abfrage
springen.  Das macht er auch

If (PINA.4)
{
  //mach etwas
}

Wenn ich jetzt wieder an diese Stelle komme springt er immer wieder in
die IF-Abfrage ohne dass die 5V anliegen.
Wie kann ich das verhindern. Er soll nur in die IF-Abfrage springen,
wenn auch wirklich die 5V anliegen
Gast #212932
Lesenswert?

Zur genaueren Erläuterung:

High-Pegel sind die 5V, Low-Pegel sind 0V, was nicht etwa heißt, daß
der Pin offen hängen bleiben darf. 0V heißt nach Masse gezogen. Wenn
ohne Taster der Pin offen hängt, gibt es keinen definierten Pegel.

Die genannten Lösungen:

Der interne pull-up-Widerstand, den man per Software aktivieren kann,
zieht den Pin auf 5V hoch, wenn nichts am Eingang hängt. Wenn du den
Taster nun nach Masse schalten lässt und diesen pull-up-Widerstand
einschaltest, ist das Signal zwar umgekehrt (low = gedrückt, high =
nicht gedrückt), aber du hast ohne weiteren Bauteileaufwand sowohl bei
gedrücktem als auch bei nicht gedrücktem Taster einen definierten Pegel
am Pin hängen.

Die andere Variante (Widerstand nach Masse) macht das Umgekehrte
(pull-down). Der Pin wird über den Widerstand runtergezogen, falls der
Taster nicht gedrückt wird. Du brauchst aber halt den zusätzlichen
Widerstand, da es intern nur pull-up und kein pull-down gibt.

Und das nächste Problem, auf das du bald stoßen wirst, das Prellen,
wird dir hoffentlich ein Anderer erklären.
Gast #212933
Lesenswert?

Habe es jetzt so. Wenn der Taster gedrückt ist liegen 5V am Pin an,
ansonsten liegen 0V an.

PORTA=0x00;
DDRA=0x00;

Meine Abfrage lautet immern noch:
If (PINA.4)
{
  //mach etwas
}

Es funktioniert aber immer noch nicht.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren