Hallo,
beim Debuggen eines C-Programms im AVRStudio bleibt der
Einzelschrittmodus bei _delay_ms() Aufrufen hängen. In anderen Beiträgen
hier im Forum habe ich bereits über die Grenzen des Debuggens im
Zusammenhang mit der delay Funktion gelesen. Mir ist aber nicht klar, ob
ich in diesem Zusammenhang nicht doch noch einen individuellen Fehler
begehe.
Als Beispiel genügt ein einfaches Blinkprogramm (compiliert ohne
Optimierung):
1 | #include <avr/io.h>
|
2 | #define F_CPU 1000000UL // 1 MHz
|
3 | #include <util/delay.h>
|
4 |
|
5 | int main(void)
|
6 | {
|
7 | DDRD = 0xff; // PORTD ist Ausgang
|
8 | DDRA = 0xff; // PORTA ist Ausgang
|
9 | PORTD = 0xff; // PORTD alle LEDs an
|
10 |
|
11 | while (1) // Hauptprogrammschleife
|
12 | {
|
13 | PORTA ^= 0xff; // umschalten PORTA
|
14 | _delay_ms(100); // 100ms warten
|
15 | PORTD ^= 0xff; // umschalten PORTD
|
16 | }
|
17 | }
|
Beim Debuggen im Einzelschrittmodus (Step over) läuft der gelbe Pfeil
problemlos bis "PORTA ^= 0xff;". Beim Klicken auf den nächsten Step
verschwindet der gelbe Pfeil und es bleibt der Curser auf der Code Zeile
PORTA ^= 0xff; stehen. Dieser Zustand ändert sich nicht bei fünf
weiteren Steps! Beim siebten Klick erscheint der gelbe Pfeil wieder und
zwar in der Zeile nach dem delay.
Die Frage nochmals, ist das beschriebene Verhalten des Simulators
"normal", oder begehe ich beim Bedienen bzw. Einstellen des Debuggers
einen Fehler.
danke vorab
Reiner