Forum: Mikrocontroller und Digitale Elektronik Auslesen eines Pins - was ist falsch?


von IronMaiden (Gast)


Lesenswert?

Hallo zusammen,

um das Auslesen eines Pins zu testen, habe ich folgenden C-Code für 
einen atmega8 geschrieben:
1
#include <avr/io.h>
2
3
int main(){
4
  
5
  DDRD = 0xff; //DDRD outputs
6
  DDRB = 0x00; //DDRB inputs
7
  PORTD = 0x08; //PORTD = 0b00001000 => D3 HIGH
8
  PORTB = 0x00;
9
  
10
  while(1){
11
  
12
    if((PORTB & 0x80) == 0x80){ //if B7 HIGH, then D3 LOW
13
      PORTD &= ~(1<<3);
14
    }
15
    if((PORTB & 0x80) == 0x00){ //if B7 LOW, then D3 HIGH
16
      PORTD |= (1<<3);
17
    }
18
  }
19
  
20
  return 0;
21
  
22
}

Die LED, die ich an D3 angeschlossen habe, leuchtet, auch wenn ich B7 an 
+5V lege. Habe ich einen Fehler im Code gemacht?


Sorry für die triviale Frage, habe heute erst mit der AVR-Programmierung 
angefangen und hadere noch etwas mit dem Syntax.

Würde mich sehr Freuen, wenn mir jemand weiterhelfen könnte.

Gruß

von Hmm (Gast)


Lesenswert?

Code sieht OK aus.

von chris (Gast)


Lesenswert?

Pins werden nicht über das PORT Register sondern über das PIN Register 
abgefragt.
Außerdem ist es besser lesbar, wenn du nicht mit hex-Zahlen 
rumhantierst.

Also machs lieber so:

if (PINB & (1<<PB7) )
{
    mach_was();
}
else
{
    was_anderes();
}


lg
Chris

von Hmm (Gast)


Lesenswert?

Oh. Sorry. PIN statt PORT. Habe ich glatt übersehen.

von IronMaiden (Gast)


Lesenswert?

Super, danke!

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

Steht so aber auch im heiligen Grahl Namens Datenblatt.

von ??? (Gast)


Lesenswert?

Ist das "Datenblatt" ein Werk dieses Meisters?
http://de.wikipedia.org/wiki/August_Grahl
Oder meinst du vielleicht folgendes?
https://de.wikipedia.org/wiki/Heiliger_Gral

(Spaß muß sein)
...nix für ungut, schönen Sonntag!

von Reinhard Kern (Gast)


Lesenswert?

Martin Wende schrieb:
> Steht so aber auch im heiligen Grahl Namens Datenblatt.

Ein wenig hinkt der Vergleich schon - den Heiligen Gral haben viele 
gesucht, aber keiner gefunden, ganz so schlimm ist es mit den 
Datenblättern nicht. Auch wenn man das beim Lesen hier im Forum manchmal 
meinen könnte.

Gruss Reinhard

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.