Hallo,

ich bin recht neu dabei und verstehe nicht warum ich keine internen pull up Wiederstaede aktivieren kann. Ich habe 2 Programme geschieben eins in C und das andere in Basic. Meines Erachtens gleichen sie sich, aber sie tuen nicht dasselbe.

Ziel:
portb pin0 = ausgang (LED) (HIGH = AN)
portb pin1 = eingang (Schalter) (HIGH = Schalter - offen)

Mein Basic Programm funktioniert (LED flakert nicht, pull up aktiv),
alles wunderbar.

Code:
Ddrb = &B00000001
Portb = &B00000010

Do
  If Pinb.1 = 0 Then
    Portb.0 = 1
  Else
    Portb.0 = 0
  End If
Loop
End
Aber mein C Programm aktiviert sie einfach nicht!

Code:
#include <avr/io.h>
int main (void) {
  DDRB = 0x01;
  PORTB = 0x02;                           // GEHT NET =(

  while (1) {
    if ( (PINB & 0x02) == 0x00 )
       PORTB = 0x01;
    else
       PORTB = 0x00;
   }
}
Kann sich das einer erklaeren? Ich nicht!
Uebrigens ist das Basic Programm auf XP uebersetzt worden (Bascom), wobei ich C unter Linux benutze (avr-gcc, avrdude).

Danke im Voraus.

mfg
martin