Moin zusammen,
ich stehe gerade auf dem Schlauch bezüglich einer einfachen Pin-Abfrage
an einem ATMege644P.
Zum Aufbau: An PD6 und PD7 sind jeweils eine LED angeschlossen. Diese
leuchten, wenn der Pin low ist. PD6 blinkt um ein Lebenszeichen zu
signalisieren.
PD7 soll leuchten, wenn der als Eingang deklarierte PC0 auf low geht.
Andernfall soll die LED ausgehen.
Leider ist dies nicht der Fall, netweder ist die LED aus oder bleibt an,
je nachdem welchen Codeteil ich auskommentiere. Vermutlich sehe ich den
Wald vor lauter Bäumen nicht:
1 | #define F_CPU 8e6
|
2 |
|
3 | #include <avr/io.h>
|
4 | #include <util/delay.h>
|
5 |
|
6 |
|
7 | int main(void)
|
8 | {
|
9 | DDRC &= ~(1<<DDC0); //PC0 als Eingang
|
10 | DDRD |= (1<<DDD6) | (1<<DDD7); // PD6 und PD7 als Ausgang
|
11 |
|
12 | PORTC |= (1<<PC0); //Setzen des Pull-Ups für PC0
|
13 | PORTD &= ~ (1<<PD7); //Einschlten der LED an PD7
|
14 | _delay_ms(500);
|
15 |
|
16 | /* Replace with your application code */
|
17 | while (1)
|
18 | {
|
19 |
|
20 | PORTD ^= (1<<PD6); //Toggel Augang PD6
|
21 |
|
22 | if (!(PORTC & (PINC0))) //Pinabfrage PC0 = 0
|
23 | {
|
24 | PORTD &= ~(1<<PD7); //LED einschalten
|
25 | }
|
26 | if (PORTC & (PINC0)) //Pinabfrage PC0 = 1
|
27 | {
|
28 | PORTD |= (1<<PD7); //LED ausschalten
|
29 | }
|
30 |
|
31 | _delay_ms(250);
|
32 | }
|
33 | }
|
Viele Grüße