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 :
und, wie gesagt, den Eingang gegen GND schaltenCode:// 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; }







Zitieren

Lesezeichen