Hey alle zusammen,
ich habe da ein "Problem", und zwar habe ich folgenden Code:
1 | #include <avr/io.h>
|
2 |
|
3 | int main(void)
|
4 | {
|
5 | do
|
6 | {
|
7 | PORTA = 255;
|
8 | asm("nop");
|
9 | PORTA = 0;
|
10 | asm("nop");
|
11 | }while(1);
|
12 | }
|
Eigentlich nichts wildes also, wenn ich das ganze aber Schritt für
Schritt simuliere, überspringt der kleine gelbe PC-Pfeil nach dem
letzten asm("nop"); den Befel PORTA = 255; und landet direkt beim 1.
asm("nop");.
(Ausgeführt wird PORTA=255; allerdings im Simulator, das sieht man im
IO-Fenster.) Gibt es da eine Möglichkeit dass wirklich jeder Schritt
angezeigt wird?
Bei dem oberen Beispiel ist das alles nicht so schlimm, bei einem
anderen Code habe ich aber das Problem dass der PC direkt in eine
If-Schleife springt, obwohl er da eigentlich nie landen darf. Der Code
lautet wie folgt:
1 | #include <avr/io.h>
|
2 | #include <util/delay.h>
|
3 |
|
4 | bool statement = false;
|
5 | int main(void)
|
6 | {
|
7 | DDRA = 255;
|
8 | do
|
9 | {
|
10 | if (statement)
|
11 | {
|
12 | PORTA = 255;
|
13 | _delay_ms(1000);
|
14 | }
|
15 | else
|
16 | {
|
17 | PORTA = 0;
|
18 | }
|
19 |
|
20 | }while(1);
|
21 | }
|
Hier springt der Code beim ersten Durchlauf der do-Schleife zu PORTA =
255;. (Ausgeführt wird er allerdings nicht, im IO bleibt PORTA bei 0)
Dies geschieht aber nur im Simulator, wenn ich diesen Code auf den
ATmega324PA schreibe, bekommt der PORTA keine Spannung.
Ist etwas nervig so zu programmieren, wenn die Simulation fehlerhaft
läuft :D
Danke schonmal für alle Tipps und Hinweise,
Max