Auslesen eines Pins - was ist falsch?

Gast #3284454
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ß
Gast #3284462
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
Gast #3284742
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

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.