AVR GCC - Zustand eines Pins in Variable schreiben

Gast #2471693
Lesenswert?

Hallo alle µC-Bastler,

ich stehe gerade vor einem kleinen Problem.
Ich habe immer zum Taster abfragen if (bit_is_clear(var, bit)) {} else 
{}. genutzt.

Doch nun will ich den Zustand eines Portpins auslesen und dann in eine 
Variable schreiben.
In Bascom geht dies ja einfach mit var = PinA.2.
Doch wie geht dies in C? Gibts da auch eine Funktion oder kann man sich 
da was selber basteln?

Wäre nett, wenn mir jemand helfen kann.
Gast #2471739
Lesenswert?

Das geht so:

1. Möglichkeit
x = PORTA & (1 << BITDASGETESTETWERDENSOLL)

Setzt in x (1 << BITDASGETESTETWERDENSOLL) oder 0 - je nachdem ob das 
bit in PORTA an war oder nicht. Das reicht für if abfragen, da die nur 
auf 0 oder ungleich 0 testen.


2. Möglichkeit:
x = (PORTA & (1 << BIT)) == (1 << BIT)
liefert 1 wenn das bit gesetzt ist oder 0 wenn nicht.
Das ist aber eigentlich genau das selbe wir bei Deinem alten Code.

Wenn Du Taster abfragst, denke daran, daß diese prellen.
Dazu gibt es hier im Forum viel Beispielcode wie man das unterdrückt,
ist nicht so einfach wie man zunächst denkt.

Frohes Schaffen und ein gesegnetes Weihnachtsfest.

Hans
Gast #2471746
Lesenswert?

Danke. Möchte jedoch keine Taster abfragen, sondern beschäftige mich 
gerade mit dem DS18S20. Jedoch funktioniert bei mir der Reset nicht ganz 
und schätze, dass das an meiner Pin abfrage scheitert.

Ich bekomme bei meinem Code immer "kein Device vorhanden" per RS232.
Liegt mein Fehler im Code? Code ist angehängt.
Angehängte Dateien:

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