Hallo zusammen!
Ich habe folgendes Problem: Das folgende Beispiel-Programme für einen
mega64 lässt sich fehlerfrei kompilieren, aber nach dem die letzte Zeile
der Funktion "funktion()" ausgeführt wurde, bleibt das Programm stehen.
1 | #include <avr/io.h>
|
2 |
|
3 | void funktion(void)
|
4 | {
|
5 | PORTC=0x05;
|
6 | // Programm bleibt hier stehen!!!
|
7 | }
|
8 |
|
9 | int main(void) {
|
10 | DDRC=0xFF;
|
11 | PORTC=0x00;
|
12 |
|
13 | funktion();
|
14 | // Was nun folgt, wird nicht mehr ausgeführt
|
15 | while(1){
|
16 | PORTC=0xff;
|
17 | }
|
18 | return 0;
|
19 | }
|
Interessant ist auch, dass wenn ein Parameter an die Funktion übergeben
wird, die Funktion noch nichtmals ausgeführt wird.
1 | #include <avr/io.h>
|
2 |
|
3 | void funktion(int x)
|
4 | {
|
5 | PORTC=x;
|
6 | }
|
7 |
|
8 | int main(void) {
|
9 | DDRC=0xFF;
|
10 | PORTC=0x00;
|
11 | // Programm bleibt hier stehen
|
12 | funktion(0x05);
|
13 |
|
14 | while(1){
|
15 | PORTC=0xff;
|
16 | }
|
17 | return 0;
|
18 | }
|
Am PORT C sind LEDs angeschloßen, ich würde also erwarten, dass sobald
die Endlosschleife erreicht ist, alle LEDs leuchten. Das Programm bleibt
aber an den o.g. Stellen stehen.
Ich habe schon verschiedene Optimierungslevel probiert, verschiedene
Versionen vom AVR-Studio und die zwei aktuell verfügbaren Versionen von
WinAVR. Auch zwei verschiedene Rechner.
Immer das gleiche Problem!
Hat jemand ein heißen Tip? :)