TIMER0_COMP_vect - Laufzeit Kontrolle

Gast #2725426
Hallo,
ich hab (höchst wahrscheinlich) eine sehr dämliche Verständnisfrage.

- ATmegaXX
- JTAG
- AVR Studio

Angenommen ich habe eine ISR(TIMER0_COMP_vect) eingerichtet die alle 
10ms aufgerufen wird. Um nun zu kontrollieren wie lange die Abarbeitung 
der Routine braucht könnte ich doch einfach einen Haltepunkt am Ende der 
Routine setzten und mir dann den Wert TCNT0 anschauen? oder nicht? 
Natürlich mit der Unsicherheit, dass Timer0 nicht mehrmals durchgelaufen 
ist.

danke
hal
#2725445
hal schrieb:

> Angenommen ich habe eine ISR(TIMER0_COMP_vect) eingerichtet die alle
> 10ms aufgerufen wird. Um nun zu kontrollieren wie lange die Abarbeitung
> der Routine braucht könnte ich doch einfach einen Haltepunkt am Ende der
> Routine setzten und mir dann den Wert TCNT0 anschauen?

Könntest du.
Je nach eingestelltem Vorteiler ist der Wert, den du kriegst so 
nichtssagend wie gar keine Messung.

Du könntest auch im Simulator auf den Anfang der ISR einen Breakpoint 
setzen, den im Simualtor angezeigten Zyklencounter ablesen (bzw. gleich 
darunter die aktuelle Simulationszeit), am Ende der ISR nachmal dasselbe 
und mit der Differenz die Zeit ablesen (ich glaub der SImulator hat 
sogar eine simulierte Stoppuhr für diesen Zweck, dann braucht man nicht 
rechnen).

Du könntest auch am Anfang der ISR einen Pin toggeln und am Ende wieder 
und dann mit dem Oszi die Pulsdauer ausmessen. Das hat den Vorteil, dass 
du tatsächlich die reale Zeit misst, so wie sie tatsächlich auftritt und 
du von nichts anderem, wie zb korrekt eingestellten Clock-Fuses, 
abhängig bist. Das was du misst, ist auch der tatsächliche 
Zeitverbrauch.
Gast #2726372
Mit dem Simulator funktioniert ja leider nicht die _delay..-Funktionen. 
Da ich im Projekt eine LCD-Display verwende und die Timingfunktionen 
über _delay gesteuert werden geht das leider nicht. Klar könnte ich die 
ISR Routine isolieren und testen, aber ich suche einen Weg ohne dies zu 
tun.

Pin toggeln ist klar, aber für was ist denn dann mein JTAG-Debugger gut? 
OK, Haltepunkte, Registerwerte usw. auslesen, in Ordnung.

Gibt es denn wirklich keinen Weg die Taktzyklen über den JTAG-Debugger 
zu bekommen, evtl. auch indirekt?
#2726459
hal schrieb:
> Wenn ich das Programm mit dem Simulator starte tut sich ab _delay_xx
> einfach nix mehr. Das Programm bleibt einfach stehen.

Es bleibt nicht stehen. Es dauert nur seine Zeit, bis der Simulator die 
paar Tausend Schleifendurchgänge gemacht hat.
Am besten ist es (wenn du den _delay nicht stillegen willst, weil du 
Zeit im Simulator messen musst), wenn du dir nach dem _delay einen 
Breakpoint setzt und dann den Simulator mittels F5 laufen lässt. Aber 
erwarte dir keine Wunder. Im Millisekundenbereich dauert das schon seine 
Zeit.
Gast #2726493
Ja so geht's ... mit dem Wissen, dass die _delay_xx mit dem Simulator 
extrem länger dauert. Ich hab am Anfang zwei Wartezeiten mit 3 Sekunden 
für die Versionsanzeige auf dem LCD-Display.

Allerdings wäre es toll wenn es auch in 'echt' mit dem JTAG-Debugger 
gehen würde!? ;-)

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.