Hi, bei dir fehlt die Endlosschleife. Dein Programm wird quasi nur einmal ausgeführt und danach nicht mehr.
So dürfte es funktionieren:
Allerdings wird dieser Code wohl auch nur so halb funktionieren, für eine richtige Funktion des Tasters musst du diesen noch Entprellen. Wie das funktioniert wird in verschiedenen Tutorials beschrieben. Viele Grüße CsTCode:/* LED Test für Pollin Board */ #include <avr/io.h> #include <stdint.h> #ifndef F_CPU #define F_CPU 8000000 #endif int main (void) { //************ LED ********************************************** /*DDRD = 0xff; /* Alle Pins des Portes werden zu Ausgängen */ DDRD |= (1<<PD6) | (1<<PD5); /* Pin D6 und D5 als Ausgang */ //************ Taster ******************************************* DDRD &= ~ (1<<PD2); /* Pin D2 als Eingang */ // PORTD |= (1<<PD2); /* Pull Up von PIN D2 aktivieren */ PORTD |= (1<<PD6); /* LED PD6 zum testen */ while(1) { if ( PIND & ( 1<<PIND2 ) ); /* mache was wenn PinD2 High ist */ { PORTD |= (1<<PD5); /* Setzt Pin D5 auf High */ //_delay_ms(20); } PORTD &= ~ (1<<PD5); /* Setzt Pin D5 wieder auf low */ } return 0; }
PS: Wenn das Programm so nicht funktioniert, dann kommentiere die Zeile mit dem _delay_ms aus
Lesezeichen