Forum: Mikrocontroller und Digitale Elektronik Pinstatus änderung registrieren [C]


von Jey B. (jeybee)


Lesenswert?

Moin Moin,

Ich habe eine etwas Grundlegende Frage:
Ich möchte mit einem ATmega8 über die UART-Schnittstelle die Stellung 
eines Schalters ausgeben lassen:
1
if(PIND & (1<<PD7))
2
{
3
   uart_puts("Offen");
4
}
5
else
6
{
7
   uart_puts("Geschlossen");
8
}

Leider habe ich damit dass Problem, dass der AVR nichts anderes mehr 
macht ;)
Ein Delay nach den uart_puts kommt auch nicht in Frage.

Kann ich nun nur etwas ausgebenlassen, wenn der Zustand des Schalters 
geändert wurde OHNE ein Interrupt zu verwenden?



Greez Jey

von Karl H. (kbuchegg)


Lesenswert?

Jey Bee schrieb:

> Kann ich nun nur etwas ausgebenlassen, wenn der Zustand des
> Schalters geändert wurde

Dann musst du halt festellen, ob sich der Pin verändert hat :-)
So wie man halt eine Flankenerkennung macht: jetzigen Zustand mit 
vorhergehendem vergleichen und nur bei einem Unterschied etwas machen.

1
  old = PIND & (1<<PD7);
2
3
  while( 1 ) {
4
5
    now = PIND & (1<<PD7);
6
7
    if( now != old ) {
8
      if( now ) {
9
        uart_puts("Offen");
10
      }
11
      else
12
      {
13
        uart_puts("Geschlossen");
14
      }
15
      old = now;
16
    }
17
  }

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.