Moin!
Was das Einlesen angeht : sowas wie 'keine Verbindung' ist zu vermeiden, da der Pin dann einen undefinierten Zustand hat. Dafür hat man in den AVR's die schönen Pullup-Widerstände, die den Pin auf High-Pegel ziehen, wenn nichts dran ist. Also entweder die Abfrage umkehren, also den internen Pullup aktivieren .... oh, ich seh grad, du machst das ja, dann mußt du natürlich deinen Eingabepin nach GND schalten, sonst ist der ja entweder mit Vcc verbunden -> high, oder über den internen Pullup mit Vcc verbunden, auch High..... außerdem könnte man statt der zwei if-Abfragen eine if-else Konstruktion benutzen.
Und außerdem Code Tags :
Code:
// Test
#include <avr/io.h>
int main (void)
{
DDRB &= ~( 1 << PB0 ); //PB0 Eingang
PORTB |= ( 1 << PB0 ); //Pull up an
DDRC |= ( 1 << PC0 ); //PC0 Ausgang
while(1)
{
if (PINB & (1 << PB0)) //wenn PB0 High ist...
{
PORTC |= (1 << PC0); //PC0 High
}
else //ansonsten....
{
PORTC &= ~(1 << PC0); //PC0 Low
}
}
return 0;
}
und, wie gesagt, den Eingang gegen GND schalten
Lesezeichen