Guten Tag,
ich bin relativ neu was Microcontroller angeht und habe mir nach der
Anleitung auf
http://s-huehn.de/elektronik/avr-prog/avr-prog.htm
den seriellen Programmieradapter für den Atmega8 aufgebaut.
Das Testprogramm funktioniert einwandfrei, und jetzt wollte ich, bevor
ich das GCC-Tutorial durchgehe, noch einmal meine Uralt-c-Kenntnisse
auffrischen.
An PC0 und PC1 hängen 2 LEDs und die wollte ich ganz doof durch 2
while-Schleifen, in denen auf 60000 gezählt wird, abwechseln ein- und
ausschalten (Ich weiss, dass das Programm albern ist, aber es ging mir
wie gesagt erstmal nur darum, ein paar Zeilen C zu schreiben).
Wenn
innerhalb der Schleifen steht, funktioniert das auch:
1 | #include <avr/io.h>
|
2 | #include <stdint.h>
|
3 |
|
4 | int main (void) {
|
5 |
|
6 | uint64_t x=0,y=0;
|
7 | DDRC = 0xff;
|
8 |
|
9 | while(1) {
|
10 |
|
11 | x=0;
|
12 | while (x<60000) {
|
13 | x++;
|
14 | PORTC = 0x00; }
|
15 |
|
16 |
|
17 | y=0;
|
18 | while (y<60000) {
|
19 | y++;
|
20 | PORTC = 0xff; }
|
21 |
|
22 | }
|
23 | return 0;
|
}
wenn ich es jeweils danach ausführen lasse (was mir irgendwie sinnvoller
erscheint), dann nicht mehr:
1 | #include <avr/io.h>
|
2 | #include <stdint.h>
|
3 |
|
4 | int main (void) {
|
5 |
|
6 | uint64_t x=0,y=0;
|
7 | DDRC = 0xff;
|
8 |
|
9 |
|
10 | while(1) {
|
11 |
|
12 | x=0;
|
13 | while (x<60000) {
|
14 | x++;
|
15 | }
|
16 | PORTC = 0x00;
|
17 |
|
18 | y=0;
|
19 | while (y<60000) {
|
20 | y++;
|
21 | }
|
22 | PORTC = 0xff;
|
23 | }
|
24 | return 0;
|
25 | }
|
Ich komme einfach nicht dahinter, woran es liegt.
Kann mir jemand auf die Sprünge helfen?
Viele Grüße!
Marc