Hi Leute,
ich habe gerade damit begonnen mit einem ATmega8 meine ersten
Erfahrungen in µC-Programmierung zu sammeln. Bisher bin ich ganz froh
darüber eine LED zum Blinken gebracht zu haben, möchte jetzt aber dass
sie nur blinkt wenn ein Input-Pin HIGH ist. Dafür habe ich eine
if-Anweisung eingebaut, aber die wird einfach mal gepflegt ignoriert.
Die LED blinkt unabhängig davon was am Pin anliegt, obwohl es in der
Simulation funktioniert hat.
Ich habe das Test-Programm so simpel wie irgend möglich gehalten, hier
mal der Code:
1 | #define F_CPU 1000000
|
2 |
|
3 | #include <avr/io.h>
|
4 | #include <util/delay.h>
|
5 |
|
6 | int main(void)
|
7 | {
|
8 | DDRB = 0x02;
|
9 | DDRD = 0x00;
|
10 |
|
11 | while(1)
|
12 | {
|
13 | if(PD2)
|
14 | {
|
15 | _delay_ms(1000);
|
16 | PORTB = 0x02;
|
17 | _delay_ms(618);
|
18 | PORTB = 0x00;
|
19 | }
|
20 | }
|
21 | }
|
Also:
- Pin B1 wird auf Output gesetzt um die LED ansteuern zu können
- in der while-Schleife beginnt sofort die Abfrage, da das ständig
gemacht werden soll
Wäre bitte jemand so nett mir zu helfen? Ich blick da nicht ganz durch.
Danke