Debugging in AtmelStudio 6.1

Gast #3533211
Lesenswert?

Hallo,

hab mal ein Frage zum Debuggen in Atmel Studio 6.1:

habe folgenden code:
1
Funktion x1
2
Funktion y1
3

4
while(1)
5
{}
6

7
Funktion x2
8
Funktion y2

nachdem die Funktionen 1 abgearbeitet sind, will ich mindestens 3s 
warten, danach die Funktionen 2 ausführen. Ich dachte, ich mach einfach 
eine endlosschleife, warte dann die gewünschte Zeit im Debug Modus, 
drück dann auf Pause. Dann steh das Programm bei der While(1). kann ich 
dann da irgednwie drüber hüpfen, sodass danach die beiden Funktionen 2 
ausgeführt werden?

Danke, lG
Gast #3533539
Lesenswert?

Das hab ich mir auch schon gedacht... aber komischerweise kennt mein 
Compiler diese Funktion nicht. Was muss ich inkludieren?

Weiters dachte ich, dass dieses delay alles andere blockiert. Ist das 
so, oder werden Interrupts während diesen delays trotzdem ausgeführt?

Vielen Dank, lG
Gast #3533874
Lesenswert?

Weiß jemand, ob diese _delay_ms(3000) Funktion wirklich 3s lang alles 
verzögert (also auch Interrupts während diesen 3s verhindert)? Oder 
basiert dieses delay auch auf Interrupts, sodass andere Prozesse 
parallel ablaufen können?

LG
#3534115
Lesenswert?

Werner13 schrieb:
> Hmm, mich wundert es, dass keiner über diese _delay_ms() funktion
> bescheid weiß...

Mich wundert eher dass du dich nicht selber schlau machen kannst. Die 
ist in der Doku zur avr-libc beschrieben. Da steht auch, wo du die 
findest. Nämlich im delay.h Header.

Dir antwortet niemand weil niemand so richtig dein Problem 
nachvollziehne kann. Die _delay_ms Funktionen werden ständig und von 
allen benutzt.

Und natürlich macht die auch nur einen busy-loop. D.h. Interuppts gehen 
weiterhin. Wenn du das nicht willst, I-Bit abschalten.

Und ich würde an deiner Stelle nicht so viel Zeit und Energie in den 
Debugger stecken. Der verwirrt Anfänger meist mehr als er hilft.
Gast #3534127
Lesenswert?

Werner13 schrieb:
> Hmm, mich wundert es, dass keiner über diese _delay_ms() funktion
> bescheid weiß...

Sei mit nicht böse, aber aus deinem Geschreibsel wird niemand schlau. 
Selbstverständlich kennt das Studio _delay_ms(). Genauer gesagt, die 
avrlibc enthält das. Wie man das nutzt, steht in der Doku, im Tutorial, 
und noch an tausenden weiteren Orten im Netz, die google alle findet.

Vorher aber brauchst du ein C-Buch. Dringend.

Was hat eine 3 Sekunden Pause im Programmablauf mit dem Debugger und den 
AVR-Studio zu tun?  Was benutzt du überhaupt als Target? Den Simulator, 
oder echte Hardware?
Wie bekommt jemand, der solche Fragen stellt überhaupt einen Timer ans 
laufen?

Was willst du wirklich machen?

Oliver
Gast #3534135
Lesenswert?

#include <delay.h>

Die Funktion _delay_ms(3000) wird trotzdem nicht erkannt, der Compiler 
gibt eine Fehlermneldung aus:

impicite declaration of function '_delay_ms'

Auch dann, wenn ich #include "delay.h" schreibe.

Warum?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren