Hallo! Ich habe ein einfaches Programm geschrieben (mit Hilfe der debounce Funktion die in den Tutorials beschrieben wird), um ein paar LEDs nach einem bestimmten Muster zum leuchten zu bringen. Spaßeshalber habe ich versucht dieses mit vier verschiedenen Tastern auszulösen, was soweit auch funktioniert. ABER, nach ein paar Aufrufen (Drücken der Taster) passiert nichts mehr. Erst nach einer Weile (ca. 30sec) reagiert der Controller wieder auf die Tasten. Kann mir das eventuell jemand erklären bzw was ich im Code falsch gemacht habe? Danke! Code (im Anhang ist die led_defines.h):
1 | #define F_CPU 1000000
|
2 | #include <avr/io.h> |
3 | #include <util/delay.h> |
4 | #include "led_defines.h" |
5 | |
6 | int main() { |
7 | |
8 | int a; |
9 | int b; |
10 | int delay=150; |
11 | |
12 | |
13 | DDRC |= (1 << PC5) | (1 << PC4) | (1 << PC3) | (1 << PC2) | (1 << PC1); |
14 | DDRB |= (1 << PB2) | (1 << PB6) | (1 << PB1); |
15 | |
16 | while (1) { |
17 | |
18 | |
19 | if (Taster4 | Taster2 | Taster3 | Taster1) { |
20 | for (a=1, b=8; a<=4; a++, b--) { |
21 | |
22 | _delay_ms(delay); |
23 | light(a); |
24 | light(b); |
25 | }
|
26 | |
27 | for (a=1, b=8; a<=4; a++, b--) { |
28 | |
29 | _delay_ms(delay); |
30 | nolight(a); |
31 | nolight(b); |
32 | }
|
33 | |
34 | }
|
35 | }
|
36 | }
|