-
-
Erfahrener Benutzer
Fleißiges Mitglied
Hallo Teslanikola,
stimmt, beachte aber bitte, das die Anzahl der Timer1 Interrupts dabei 128 mal höher ist als bei Prescale=1024. Das kann irgendwann Probleme mit der Rechenleistung geben.
Zudem gilt: die 1s Messzeit ist erreicht wenn der 39. Interrupt ausgelöst wird. Zu dem Zeitpunkt stoppt der Timer aber noch nicht. Der µC führt erst noch einige Operationen aus, die allesamt Zeit brauchen.
- Die Register werden auf dem Stack gespeichet
- es wird in die Interrupt Routine gesprungen
- der Zähler wird erhöht
- die IF-Abfrage wird abgearbeitet
- der PinD.5 wird getoggelt (warum überhaupt)
Erst dann wird Timer1 ausgelesen!
Während der Zeit die für die Zwischenschritte benötigt werden misst Timer1 noch munter weiter.
Eh Du also anfängst den Messzeit-Timer zu optimieren, solltest Du Dir ein paar Gedanken machen was in welcher Reihenfolge abgearbeitet werden könnte.
Was spricht z.B. dagegen unmittelbar nach der Abfrage ob es der 39. Interrupt ist als aller erstes den Timer1 zu stoppen, damit der nichtmehr weiter misst?
Im übrigen:
Wie kommst Du auf 3906/4882 Interrupts? Ich komme auf andere Zahlen. (Zwar nicht deutlich andere aber wenn ich mit dem Holzhammer hinter Dir stehen würde, so würde ich Dir doch mit Genuß einen überbraten. :teufel: )
10E6/8/256 = 4882,8125. Was passiert zwischen 0,8125 und 1? Ein Interrupt! Die Anzahl der Interrupts lautet daher...!?
Ciao,
Werner
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen