Auslesen eines Pins - was ist falsch?

Gast #3284454
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
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
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

Eine eigene Frage? Dieser Thread ist über 13 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.