Forum: Compiler & IDEs Zeitmessung


von Benjamin (Gast)


Lesenswert?

Hallo Zusammen,

ich weiß ich stelle immer sau dumme Fragen, aber ich denke es kann auch
nur dumme Antworten geben ;o)

Also ich weiß nicht, wenn ich hier immer die Threads lese, dann lese
ich auch ab und zu von der Zeitmessung, wie lange Befehle benötigen
oder eine Datenübertragung... mmmmhhhh... Da stehe ich immer auf dem
Schlauch!! Ich habe schon das ganze AVRstudio abgesucht und nichts
gefunden. Ich weiß bei Keil im Compiler gab es immer so eine Funktion,
mit der die Ausführungszeit gescannt werden konnte, aber hier habe ich
das noch nicht gefunden!!

Kann mir jemand helfen?

Gruß
Benjamin

von Karl heinz B. (kbucheg)


Lesenswert?

Programm im Simulator laufen lassen, d.h. den Debugger starten.
Jetzt schaust du mal links in der I/O View unter 'Processor'
nach. Da gibt es einen Eintrag: 'Stop Watch'. Mit der eingestellten
Frequenz, rechnet dir AVR Studio aus, wieviel Zeit seit Programm-
Start vergangen ist. In eine ähnliche Kategorie fällt der Eintrag
'Cycle Counter'.

von Benjamin (Gast)


Lesenswert?

Ahhhhhh..... sehr gut!!

Danke!!

Gruß
Benjamin

von Benjamin (Gast)


Lesenswert?

Ok, das habe ich ja verstanden, aber wenn ich mein Programm simuliere
und ich unter Einstellungen die Quarzfrequenz auf 8MHz eingestellt
habe, dann wird im Debugmodus unter Prozessor 4MHz angezeigt.
Merkwürdig ist auch das dann _delay_ms(200); mit nur 66,23ms ausgeführt
wird!!

Mache ich was falsch??? :o(

Gruß
Benjamin

von Karl heinz B. (kbucheg)


Lesenswert?

Ja, das ist eine Falle.

Wenn der Debugger an ist (und nur dann), gibt es im
Debug Menü einen Menüpunkt mehr: 'AVR Simulator Options'.
(gaanz unten im Menü)

von Karl heinz B. (kbucheg)


Lesenswert?

> _delay_ms(200);

Schau mal in die delay.h rein.
Bei deinen Frequenzen kann ein delay ganz einfach keine
200 ms verzögern. Da gibt es Maximalwerte, die im delay.h
beschrieben sind.

von Benjamin (Gast)


Lesenswert?

ja ich habe schon geguckt!!

die delay- zeit als max. wert ist bei 262.14ms, also sollte das
überhaupt keine probleme machen!! oder???

Gruß

von Karl heinz B. (kbucheg)


Lesenswert?

Dann hast du nicht vollständig gelesen.

Die maximale Zeit ist

    262 / F_CPU in Mhz

bei 4 Mhz hast du also   262 / 4 -> ~65 ms
bei 8 Mhz entsprechend   262 / 8 -> ~32 ms

von Karl heinz B. (kbucheg)


Lesenswert?

...
Im übrigen stimmen die delay Zeiten nur dann, wenn du den
Compiler optimieren lässt. Bei einem Debug-Build stimmen die
Zeiten sowieso nicht.

von Benjamin (Gast)


Lesenswert?

Stimmt... habe ich nicht richtig gelesen!!

mmmmhhhh... misst!! dann muss ich noch nen bißchen optimieren!!

Danke!!!

von Benjamin (Gast)


Lesenswert?

Ähhhhmmmm... kann ich dann auch nur

....
_delay_ms(32);
....

schreiben???

Gruß

von Dirk (Gast)


Lesenswert?

Hi,

laengere Wartezeiten macht du dann in einer forschleife.

1
for(i=0;i<1000;i++){   // wartet ca. 1Sek
2
_delay_ms(1);
3
}
Gruß,
Dirk

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

> laengere Wartezeiten macht du dann in einer forschleife.

Besser noch mit einem Timer.  Dafür sind'se da.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.