www.mikrocontroller.net

Forum: Compiler & IDEs Zeitmessung


Autor: Benjamin (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Karl heinz Buchegger (kbucheg)
Datum:

Bewertung
0 lesenswert
nicht 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'.

Autor: Benjamin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ahhhhhh..... sehr gut!!

Danke!!

Gruß
Benjamin

Autor: Benjamin (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Karl heinz Buchegger (kbucheg)
Datum:

Bewertung
0 lesenswert
nicht 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ü)

Autor: Karl heinz Buchegger (kbucheg)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Benjamin (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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ß

Autor: Karl heinz Buchegger (kbucheg)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Karl heinz Buchegger (kbucheg)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Benjamin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stimmt... habe ich nicht richtig gelesen!!

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

Danke!!!

Autor: Benjamin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ähhhhmmmm... kann ich dann auch nur

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

schreiben???

Gruß

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

laengere Wartezeiten macht du dann in einer forschleife.

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

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> laengere Wartezeiten macht du dann in einer forschleife.

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.