Forum: Mikrocontroller und Digitale Elektronik AVR GCC - Zustand eines Pins in Variable schreiben


von Input (Gast)


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.

von Shortie (Gast)


Lesenswert?


von hans (Gast)


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

von Input (Gast)


Angehängte Dateien:

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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.