AVR GCC - Zustand eines Pins in Variable schreiben

Gast #2471693
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
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
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

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.