Hi
nach tagelangem rumprobieren muss ich jetzt leider doch hier posten weil
ich meinen fehler einfach nicht finde. hab mir auch schon zig mal das
tutorial dazu durchgelesen. es geht um eigentlich ne banalität. ich
möchte nen taster einlesen. taster gedrückt LED leuchtet taster nicht
gedrückt LED aus.
benutze einen atmega32 dafür und folgenden code.
1 | #include <io.h>
|
2 | #include <iom32.h>
|
3 |
|
4 | int main(void)
|
5 | {
|
6 |
|
7 | DDRD = 0xff;
|
8 | DDRD &= ~( 1 << DDD4); //PORT4 als Eingang
|
9 |
|
10 |
|
11 | while(1) {
|
12 |
|
13 |
|
14 | if ( PIND & (1<<PIND4) )
|
15 | {
|
16 | PORTD |= ( 1 << PD6 );
|
17 | }
|
18 |
|
19 |
|
20 |
|
21 | if ( !(PIND & (1<<PIND4)) )
|
22 | {
|
23 | PORTD &= ~( 1 << PD6);
|
24 | }
|
25 | }
|
26 | }
|
So leuchtet die LED einfach nur. Egal ob ich was drücke oder nicht.
Wenn ich allerdings "DDRD &= ~( 1 << DDD4);" weg lasse. Funktioniert das
ganze einwandfrei... Jetzt bin ich ehrlich gesagt verwirrt. Wie kann
etwas eingelesen werden, obwohl ich den PORT gar nicht als Eingang
geschaltet hab. Im Angang der Aufbau btw