Genaue Zeiten berechnen

Gast #34322
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
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
>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
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
Im Studio simulieren dürfte einfacher sein, da siehst du wieviel Zeit 
exakt zwischen verschiedenen Breakpoints vergangen ist und ob Du Deinen 
1 Hz Takt hast.
Gast
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
>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)
@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

Eine eigene Frage? Dieser Thread ist über 23 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.