Atmega 32A, Atmel Studio 6.2, Sprache C, Eingangspin auf Low Level abfragen

OP #4284938
Lesenswert?

Hallo,

ich habe eine Frage bezüglich einer Low-Level Abfrage an Port-A.

Programmierumgebung: Atmel Studio 6.2
CPU: Atmega: 32A
Programmiersprache: C

Ich versuche das Datenregister für PORTA auf LOW-Level folgendermaßen 
auf seinen Zustand ab zu fragen.
1
if ((PINA2 == 0) && (PA2 == 1))                        //Schalter 2
2
   {
3

4
   }

Demnach soll der Controller folgendes tun:
wenn an PINA2 Low-Level (0) anliegt, soll die Schleife aufgerufen 
werden.
Allerdings wird diese Abfrage im Debug nicht bearbeitet. bzw der Inhalt 
der Schleife wird ohne Verknüpfung abgearbeitet.

Jemand eine Idee woran das liegen kann?

LG Michael
OP #4284988
Lesenswert?

Hallo Ingo Less,

Danke dir. Dein Eintrag Funktioniert.
Bezüglich der ZWei in PORT A habe ich eine Frage.

Das ! Negiert den Ausdruck.

Die Abfrage in der Klammer bedeutet demnach:
PINA und 1<<PA2

Anders geschrieben:
PIN A --> aus iom32a.h  #define PINA    _SFR_IO8(0x19)  --> hier wird 
doch das ganze Eingangs Register eingelesen?
Mal ein Beispiel
An Port A sind bit 2 und 3 mit High Level dann ergibt sich doch:
0b00001100 dezimal 12


Und 1 << PA2 ist doch eine Bitmanipulation welche in diesem fall die 1 
zwei stellen nach links schiebt, oder?

Dann steht da doch (nicht(0b00001100 und (1 zwei nach links))
              bzw   (nicht(12         &    1 zwei nach links))

Das kann ja nicht sein. Wie ist demnach diese Abfage aufgebaut?

Danke dir!

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