Atmega8535 Ausgänge einlesen

Gast #867428
Lesenswert?
• ▲
▼
Vielen Dank für den Hinweis... ich komme aber nicht wirklich weiter 
damit...

und zwar möchte ich den Signalzustand an PD1 einlesen und über eine LED 
an PA2 ausgeben. Zudem möchte ich die Funktion intern(); ausführen, wenn 
die LED vorher nicht geleuchtet hatte. Pullup an PD1 ist aktiv.


1
if (PIND & (1<<PD1)) PORTA &= ~(1<<PA2); else { //LED aus wenn HIGH
2
if (!(PINA & (1<<PA2))) //LED-Ausgang einlesen. Wenn nicht an, dann
3
PORTA |= (1<<PA2); // LED einschalten und
4
intern(); //Funktion intern aufrufen.
5
}

Wenn ich nun PD1 auf Masse lege geht zwar die LED an - jedoch führt er 
die Funktion intern(); immer aus... auch wenn die LED bereits leuchtet.

Ich dachte dies kann man umgehen wenn man den Ausgangspin PA2 einliest. 
Wenn HIGH (=LED leuchtet) anliegen sollte wird die Funktion intern() 
nicht erneut aufgerufen...

Woran liegt das?

Viele Grüße,

Benny
#867468
Lesenswert?
• ▲
▼
Oder alternativ die öffnende Klammer anders positionieren.
1
if (PIND & (1<<PD1))
2
  PORTA &= ~(1<<PA2);           //LED aus wenn HIGH
3
else if (!(PINA & (1<<PA2))) {  //LED-Ausgang einlesen. Wenn nicht an,
4
  PORTA |= (1<<PA2);            //dann LED einschalten und
5
  intern();                     //Funktion intern aufrufen.
6
}

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