Abfrage Eingänge in C

Gast #2544467
Lesenswert?

Hallo
Habe ein Atmega 32 und möchte ein Eingang am PortA Pin 2 abfragen.
An PortA Pin0 ist eine Led angeschlossen.
Beim tasten des Taster soll die Led leuchten. Wäre erfreut über ein 
Lösungsvorschlag
Hier mein Programm


int main(void)
{

DDRA = 0x01 << PA0;  //PortA Pin 0 wird als Ausgang gesetzt
DDRA &= ~(1 << DDA2);  //PortA Pin 2 wird als Einagng gesetzt
PORTA |= (1<<PA2) ;

    while(1)
    {
  ;

  if (PA2 == 1)
  {
PORTA |= 1<<PA0;
  }

  else
  {
PORTA &= ~(1<<PA0);
  }
#2544507
Lesenswert?

werner1 schrieb:
>   if (PA2 == 1)

"PA2" ist nur eine vordefinierte Konstante und enthält den Wert 2. Der 
Vergleich ist also immer false. Was Du erreichen willst, bekommst Du z. 
B. so:
1
if (!(PINA&(1<<PA2)))

Dabei bin ich davon ausgegangen, dass der erwähnte Taster beim Betätigen 
den Eingang gegen GND zieht, also dass am Portpin beim Betätigen "0" 
gelesen wird, und dass die LED ebenfalls zwischen Portpin und GND liegt 
(und hoffentlich mit einem passenden Vorwiderstand).

Übrigens fehlen noch zwei schließende geschweifte Klammern am Ende.

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