Danke für schnellen Antworten :)
Ich hatte gleich mehrere Fehler.
Eric B. schrieb:
> Tipp: welche Werte nimmt n nacheinander an?
Ich dachte die Verzögerung wäre nach einem Durchlauf, aber sie war
mittendrin beim Wechsel zwischen den Schleifen.
Außerdem habe ich nur 6 LED's angeschlossen ^^'
Tobias schrieb:
> ...
> Nach jedem Durchlauf wird geprüft, ob das alles zutrifft, das braucht
> Zeit. Hatte damals am Anfang exakt das gleiche "Problem".
> Eine interessante Lösung bieten die Interrupts, schon mal damit
> gespielt?
> Ist wirklich einfach, man muss sich nur einmal durcharbeiten!
>
> Grüße aus Wien!
> Tobias
In diesem Fall war es wohl nicht der Fehler, aber das ist gut zu Wissen
:)
Ich arbeite gerade die Videos von Stefan Wintgen durch, Interuppts sind
tatsächlich das nächste Thema :)
https://www.youtube.com/watch?v=UpxemFUVnFI&index=5&list=PLg8rGAQEOsuh9ZCwP6aW5ycCM5PFFqoNe
Falls ihr noch weitere gute Tutorials zum Thema µC-Programmierung kennt,
würde ich mich freuen wenn ihr diese hier Posten würdet :)
Marc V. schrieb:
> Tim0 schrieb:
>> for (n=7; n>=1; n--) // Pin 7-0
>
> Und bit 0 ?
Bit 0 wird bei "Neustart" der If-Schleife wieder aufgerufen :)
Hier mein korrigierter Code
1 | #include <util/delay.h>
|
2 | #include <avr/io.h>
|
3 |
|
4 | int main(void)
|
5 | {
|
6 |
|
7 | int n, EINAUS=0;
|
8 |
|
9 | DDRB = 0xFF; // Alle Pins in PORTB als Ausgang definieren
|
10 | DDRD = 0x00; // Alle Pins in PORTD als Eingang definieren
|
11 | PORTD = 0b00001100; // PULL-UP Widerstände für PD2 und PD3 setzen
|
12 |
|
13 |
|
14 |
|
15 | while(1)
|
16 | {
|
17 |
|
18 | if (!(PIND & (1<<PD2))) // Lauflicht einschalten
|
19 | {
|
20 | EINAUS = 1;
|
21 | }
|
22 |
|
23 | if (!(PIND & (1<<PD3))) // Lauflicht ausschalten
|
24 | {
|
25 | EINAUS = 0;
|
26 | }
|
27 |
|
28 | if (EINAUS == 1)
|
29 | {
|
30 | for (n=0; n<=4; n++) // Pin 0-4 // bzw. LED 1-5
|
31 | {
|
32 | PORTB |= (1<<n); // Pin n im Port B setzen
|
33 | _delay_ms(1000); // Verzögerung von 1000ms
|
34 | PORTB &= ~(1<<n); // Pin n im Port B rücksetzen
|
35 | }
|
36 |
|
37 | for (n=5; n>=1; n--) // Pin 5-1 // bzw. LED 6-2
|
38 | {
|
39 | PORTB |= (1<<n); // Pin n im Port B setzen
|
40 | _delay_ms(1000); // Verzögerung von 1000ms
|
41 | PORTB &= ~(1<<n); // Pin n im Port B rücksetzen
|
42 | }
|
43 |
|
44 | }
|
45 | else
|
46 | {
|
47 | PORTB = 0x00; // Alle Pins im Port B auf 0 setzen
|
48 | }
|
49 | }
|
50 |
|
51 | }
|
Viele Grüße
Tim0