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
in c oder asm? in asm einfach die taktzyklen zusammenzählen ;) aber den drann, die takte für vergleiche und sprünge mitzurechnen
Ich wollte das in asm machen. Einfach zusammenzählen? Hast du evtl. einen Quelltext zur Ansicht?
die zeit zusammenzählen, die du pro zählimpuls hast plus die zeiten für spünge und befehle in der zählroutine
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
>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
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
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..
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.
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
>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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.