exile
26.11.2004, 00:53
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.
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!
#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! :-k :-k :-k
Uebrigens ist das Basic Programm auf XP uebersetzt worden (Bascom), wobei ich C unter Linux benutze (avr-gcc, avrdude).
Danke im Voraus.
mfg
martin
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.
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!
#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! :-k :-k :-k
Uebrigens ist das Basic Programm auf XP uebersetzt worden (Bascom), wobei ich C unter Linux benutze (avr-gcc, avrdude).
Danke im Voraus.
mfg
martin