Genaue Zeiten berechnen

Gast #34322
Lesenswert?
• ▲
▼
Hallo,

kann mir jemand einen Link oder App Notes empfehlen, wo die genaue 
Berechnung des Timers (Timer/Compare) bei verschiedenen Taktfrequenzen 
finde?

z.B. wie ich den Timer dimensionieren muss, um bei 8 MHz einen 1Hz Takt 
zu erzeugen, oder bei 10 MHz einen 3 Hz Takt.



Danke

Gruß
Bastian
Gast #34326
Lesenswert?
• ▲
▼
Ich hab noch eine Frage:


Wennn der Zähler mit dem Compare Register übereinstimmt und der 
Interrupt ausgelöst wird,

setzt man dann in der Interrupt Routine im allgemeinen den Zähler zurück 
oder lässt man ihn weiterlaufen (bis er überläuft und von vorn 
anfängt)??

Welche Variante ist sinnvoller um genauere Takte zu erhalten??


Gruß

Bastian
Gast #34327
Lesenswert?
• ▲
▼
>setzt man dann in der Interrupt Routine im allgemeinen den Zähler zurück oder 
lässt man ihn weiterlaufen (bis er überläuft und von vorn anfängt)??

jenachdem was du machst

>Welche Variante ist sinnvoller um genauere Takte zu erhalten??

test it

das sind zu allgemeine fragen, die du nach eigenem gut dünken selbst 
beantworten kannst. probiers doch einfach aus wie's läuft
Gast #34329
Lesenswert?
• ▲
▼
Da muss ich mir erstmal überlegen, wie ich das am besten messen kann.
Mit einer Stopuhr messen, wie genau z.B. mein 1 Hz takt zählt?
Da könnte eine Messung länger dauern, um genaue Werte zu erhalten.

Ich hab gehofft, jemand könnte aus Erfahrung ein paar Tips geben..
Gast #34331
Lesenswert?
• ▲
▼
Hi,

besser als das was peter dannegger in seinem link beschrieben hat, gehts 
nicht! nu müsste doch eigentlich alles klar sein... oder!? interne timer 
in embeddet systems sind eben keine präzisionsuhren. was spricht gegen 
eine externe rtc?

taktmessung machtse am besten mit nem scope!!!???

stefan
Gast #34332
Lesenswert?
• ▲
▼
>Mit einer Stopuhr messen, wie genau z.B. mein 1 Hz takt zählt?

zyklen zaehlen, taktfrequenz vom quarz lesen und die befehlsliste 
anschauen wegen anzahl der zyklen pro befehl, dann lässt sich alles sehr 
genau berechnen (zählen)
#34333
Lesenswert?
• ▲
▼
@Stefan,

"interne timer in embeddet systems sind eben keine präzisionsuhren. was 
spricht gegen eine externe rtc?"


Ganz im Gegenteil !
Sie sind wie jeder digitale Teiler hochgenau.

Die Rechnung mit gebrochenen Zahlen sollte nur verdeutlichen, daß 
niemand merken kann, ob da ein paar Takte an einer Sekunde fehlen.
Deshalb reicht es für RTC-Anwendungen völlig aus, wenn man in 1/60 
(Minutenkorrektur), 1/3600 (Stundenkorrektur) oder 1/86400 
(Tageskorrektur) Schritten hochgenau korrigiert.


Zu den RTC ist zu sagen, daß Quarze mit hoher Frequenz stabiler und 
weniger temperaturabhängig sind. D.h. eine Uhr mit 11MHz ist immer 
genauer als eine mit 38kHz.


Deshalb hat eine externe RTC ausschließlich dann eine Berechtigung, wenn 
die Zeit bei Netzausfall über eine Batterie oder einen Elko 
weitergezählt werden soll, da typischer Weise ein MC mehr Strom benötigt 
als eine externe RTC (z.B. DS1338 = 400nA).


Ich bevorzuge meistens einen freilaufenden Timer (Interrupts alle 256, 
8192 oder 65536 Zyklen), da ich dann nicht mehr die Rechenzeit für das 
Software-Reload berücksichtigen muß.
Ich kann also in C programmieren ohne dann im erzeugten Assemblerkode 
die benötigten Befehlszyklen addieren und abziehen zu müssen.


Peter

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