Timer1ms bei TI Sitara

OP Persönliche Seite #5598350
Lesenswert?
• ▲
▼
Hallo zusammen, ich versuche den 1ms-Timer vom TI Sitara AM335x zu 
verstehen. Dieser kann den Eingangstakt durch fraktionale Prescaler 
teilen, um (ganzzahlige) Frequenzen zu erzeugen, welche keine Teiler des 
Eingangstakts sind. So kann u.a. aus dem 32768Hz-Signal der RTC ein 
1000Hz-Takt erzeugt werden, d.h. praktisch eine Division durch 32,768. 
Das wird erreicht, indem der Zähler abwechselnd zwischen 32 und 33 
umgeschaltet wird, d.h. die Periode des Ausgangstakts so variiert wird, 
dass in Summe 1kHz rauskommt.
Leider wird mir aus dem Datenblatt¹ nicht klar, wie das genau 
funktioniert und wie man das berechnet. Über TLDR gibt man den 
"Basis"-Prescaler an: Der Timer zählt von TLDR bis 2^32, und startet 
wieder bei TLDR. Der Presaler ist also 2^32-TLDR.
Man kann über 2 Parameter TPIR und TNIR angeben, wann der Zähler bei 
TLDR startet ("Kurzer" Takt, z.B. 32 Eingangs-Zyklen) und wann bei 
TLDR-1 ("langer" Takt, z.B. 33 Eingangs-Zyklen). Es sind Formeln 
angegeben, wie man da dran kommt, aber wie begründen die sich? Die 
Parameter sind signed, können negativ werden.

Das Blockschaltbild verstehe ich so: Es gibt einen zusätzlichen Zähler 
TCVR, welcher bei 0 startet. Auf diesen wird vor dem Overflow des 
eigentlichen Timers TPIR oder TNIR addiert. Wenn
ist, wird TPIR aufaddiert, sonst TNIR. Im ersten Fall folgt ein langer 
Takt (Prescaler 33), sonst ein kurzer (Prescaler 32). Bloß warum 
ausgerechnet dieser Grenzwert? Das "Or"-Gatter ist m.E. wirkungslos, da 
es nur greift wenn TNIR > TPIR, was die Formeln ausschließen sollten. 
TCVR scheint so eine Art Fehler-Akkumuluator zu sein, der in der Nähe 
von 0 gehalten wird. Der Grenzwert scheint sicherzustellen, dass der 
regelmäßig (mind 1x pro Sekunde) auf 0 landet.

Bei 32768Hz Eingang und 1000Hz Ausgang braucht man 232 kurze Takte und 
768 lange Takte, dann ergeben sich genau 1000 Takte pro Sekunde, denn:
und
Das passt verdächtig gut zu den angegebenen Beispiel-Zahlen für 1ms. Wie 
die genau zustande kommen ist mir aber nicht klar, und wieso ist da ein 
Faktor von 1000 drauf? Die Formeln haben auch noch einen Faktor von 1e6, 
aber warum? m.E. kann man die TPIR/TNIR-Faktoren kürzen, d.h. 29/-96 
statt 232000/-768000... Aber das scheint nicht zu klappen, der Takt 
weicht ab.

Weiß jemand wie das funktioniert oder wie so eine Schaltung heißt, 
sodass ich da Literatur zu finden kann? Danke!

1: http://www.ti.com/lit/pdf/spruh73, S. 4471
Angehängte Dateien:

Antwort schreiben

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.

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.