Forum: Compiler & IDEs Anfänger STK500 - Taster abfragen


von Oliver N. (batman)


Lesenswert?

Guten Abend, auch ich bin nun stolzer Besitzer eines STK500 ;) Ich 
studiere im 2.Sem. Elektrotechnik und auch dort programmieren wir 
Mikrocontroller.

Daher habe ich mir zum üben und basteln das Entwicklungsboard von Atmel 
gekauft. Heute habe ich das Board zum ersten Mal in Betrieb genommen und 
meine ersten Programmier-Versuche hinter mir.

Ich habe bereits einen Timer parametriert,ISR programmiert und alle LEDs 
mit einem bestimmten Takt blinken lassen.

Jetzt wollte ich gerne den Status der Taser abfragen und dann die 
entsprechende LED ansteuern.

Habe mich auch schon mal etwas hier im Forum umgeschaut und bin auch auf 
ähnliche Probleme gestoßen!

Habe jetzt diesen funktionierenden Code:
1
#include <avr/io.h> 
2
#include <avr/interrupt.h>
3
4
void main(void)
5
{
6
  PORTB= 0xFF;
7
  DDRB = 0xFF;
8
  DDRD = 0x00;  
9
  
10
  while (1)
11
    {
12
        PORTB= 0xFF;
13
  
14
  if(PIND==0xFE)
15
  PORTB=~0x01;
16
  }
17
18
  
19
}


Jetzt habe ich aber nochmal eine Frage:

Mit dieser Anweisung if(PIND==0xFE) klappt es, doch damit 
if(PIND==~0x01) nicht!?

Warum?

mfg

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Die rechte Seite des Vergleichs ist eine Zahlkonstante. In diesem Fall 
ohne zusätzliche Kennzeichnung der Zahlkonstante ist es ein Integer 
(int). Die beiden Integers 0xFE (genauer: 0x00FE) und ~0x01 (genauer: 
~0x0001) sind nicht gleich.

von Brun .. (brun)


Lesenswert?

Hallo,

hab auch ein STK500. Da sind die Taster per Hardware auf Activ-Low.
Also gedrückt=0 und nicht gedrückt=1.

Das selbe gilt auch für die LEDs.
Steht auch in der Hilfe vom WinAVR.

Gruß Brun

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.