Moin moin,
ich häng da schonwieder an einem Problem...
Ich habe eine Ampelschaltung, die LED´s möchte ich mit Hilfe von
_delay_ms() abwechselnd schalten.
Mein Problem ist, dass es mir nicht möglich ist, die Blinkabstände zu
regulieren.
Ich habe
auf 100000 erhöht, aber trotzdem sind die Blinkabstände gleich
geblieben.
Auch die Einstellung
kann ich beliebig verändern ohne dass sich was am Blinkzyklus ändert.
Das einzige was einen Erfolg hat ist, wenn ich die Fuses von
"Int. RC Osc. 8 MHz; Start-up time: 6 CK + 0 ms"
auf
"Int. RC Osc. 1 MHz; Start-up time: 6 CK + 0 ms" setze.
Dann blinkt es etwas langsamer.
Ich brauche aber für ein weiteres Projekt, was später auch auf die
Platine soll die 8MHz.
Wie bekomme ich es hin, dass ich durch verändern von
die Blinkgeschwindigkeit verändern kann?
Mein Code sieht wie folgt aus:
1 | #define F_CPU 1000000
|
2 |
|
3 | #include <avr/io.h>
|
4 | #include <util/delay.h>
|
5 |
|
6 |
|
7 | void Initialisieren()
|
8 | {
|
9 | DDRC = 0xff;
|
10 | PORTC = 0xff;
|
11 |
|
12 | }
|
13 |
|
14 | void Status (unsigned char state)
|
15 | {
|
16 |
|
17 | switch (state)
|
18 | {
|
19 | case 1:
|
20 | PORTC = 0xff;
|
21 | PORTC = ~(1<<PC3);
|
22 | break;
|
23 | case 2:
|
24 | PORTC &= ~(1<<PC2);
|
25 | break;
|
26 | case 3:
|
27 | PORTC = ~(1<<PC1);
|
28 | break;
|
29 | case 4:
|
30 | PORTC = ~(1<<PC2);
|
31 | break;
|
32 | }
|
33 | }
|
34 |
|
35 |
|
36 | int main()
|
37 | {
|
38 | Initialisieren();
|
39 |
|
40 |
|
41 | while(1)
|
42 | {
|
43 | Status(1);
|
44 | _delay_ms(10000);
|
45 | Status(2);
|
46 | _delay_ms(10000);
|
47 | Status(3);
|
48 | _delay_ms(10000);
|
49 | Status(4);
|
50 | _delay_ms(10000);
|
51 | }
|
52 | }
|