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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.