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