mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Genaue Zeiten berechnen


Autor: Bastian (Gast)
Datum:

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

Autor: Jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
in c oder asm?
in asm einfach die taktzyklen zusammenzählen ;) aber den drann, die 
takte für vergleiche und sprünge mitzurechnen

Autor: Bastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich wollte das in asm machen.

Einfach zusammenzählen? Hast du evtl. einen Quelltext zur Ansicht?

Autor: jimmibee (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
die zeit zusammenzählen, die du pro zählimpuls hast plus die zeiten für 
spünge und befehle in der zählroutine

Autor: Bastian (Gast)
Datum:

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

Autor: jimmibee (Gast)
Datum:

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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich reite warscheinlich schon tote Pferde, aber hier habe ich mal die 
Grundlagen beschrieben:

http://www.specs.de/users/danni/appl/soft/clock/index.htm


Trotzdem versuchen hier immer wieder Leute ganz verzweifelt unbedingt 
genau ganzzahlige Quarze und Teilerfaktoren rauszukriegen.

Warscheinlich wird heutzutage die Bruchrechnung nicht mehr gelehrt.


Peter

Autor: Bastian (Gast)
Datum:

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

Autor: Jupp (Gast)
Datum:

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

Autor: Stefan (Gast)
Datum:

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

Autor: jimmibee (Gast)
Datum:

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

Autor: Peter Dannegger (peda)
Datum:

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

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.