www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Timer-Problem. Zwei Timer kaskadieren?


Autor: CyberHorst (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

gibt es Mikrocontroller mit kaskadierbaren synchronen Timern?

Ich müsste möglichst genau immer wieder 2^n+n Schritte Wartezeit 
erzeugen
und stehe vor dem Problem, dass sich einzelne Timer bei meinem µC immer
nur mit Zweier-Potenzen laden lassen und ich mit zwei verschiedenen per
Interrupt 'synchronisierten' Timern wohl doch ein gewisses Delay 
erzeuge,
welches ich umständlich kompensieren müsste.

Alternativ täte es auch ein Timer, der sich mit "krummen" Werten laden
lässt und diesen Wert eigenständig beim nächsten Durchlauf wieder 
verwendet.

CyberHorst

Autor: unsichtbarer WM-Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie soll das Ergebnis aussehen?
Deine "Frage" finde ich etwas wirr...

>und stehe vor dem Problem, dass sich einzelne Timer bei meinem µC immer
>nur mit Zweier-Potenzen laden lassen

Komischer µC...

Autor: AVRFan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>gibt es Mikrocontroller mit kaskadierbaren synchronen Timern?

Gegenfrage: Was soll das sein und wozu willst Du es brauchen?

>Ich müsste möglichst genau immer wieder 2^n+n Schritte Wartezeit
>erzeugen

Dann tu das doch.  Richte einen Timer ein, der ununterbrochen im Takt 
eines Schritts tickt, und zähl im Timerinterrupt mit einer 
Zählvariablen 2^n + n dieser Schritte ab.

>und stehe vor dem Problem, dass sich einzelne Timer bei meinem µC immer
>nur mit Zweier-Potenzen laden lassen

???

>und ich mit zwei verschiedenen per Interrupt 'synchronisierten' Timern
>wohl doch ein gewisses Delay erzeuge, welches ich umständlich kompensieren
>müsste.

nixversteh

>Alternativ täte es auch ein Timer, der sich mit "krummen" Werten laden
>lässt und diesen Wert eigenständig beim nächsten Durchlauf wieder
>verwendet.

Du kannst einen Timer auch mit dem Wert 25837 laden, wenn Du das willst. 
Der Timer muss nur genügend Bits haben, damit die Zahl "reinpasst, also 
für 25837 mindestens 16 Bit.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
CyberHorst wrote:

> gibt es Mikrocontroller mit kaskadierbaren synchronen Timern?


Ich glaube nicht, denn das ist sinnfrei.

Reicht der Zählumfang nicht aus, zählt man einfach im Überlaufinterrupt 
ne Variable weiter. Die Genauigkeit wird dadurch nicht beeinflußt.



Peter

Autor: CyberHorst (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ein Beispiel:

40-Mhz-Quarzoszillator auf einem PIC (also Takt/4)

Timer0 soll bis 4096 zählen und danach soll Timer1 bis 64 zählen,
danach soll ein Interrupt mit meinem Code ausgelöst werden. Also
insgesamt 4160 Schritte, aber die möglichst exakt, so dass ich
meinen Interrupt immer wieder exakt nach 4160 Timer-Schritten
starten kann und ich mir um die Summe der geringen Abweichungen
auch bei vielen Durchläufen keine Gedanken machen muss, sondern
nur die Abweichung des Quarzoszillators existiert.

@Peter: Diese Variante kannte ich noch nicht, muss mich da mal
schlau lesen. Aber wenn die Genauigkeit nicht beeinflusst wird,
scheint das ja die Lösung für mein Problem zu sein =) Vielen Dank.

CyberHorst


Autor: CyberHorst (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, war ein schlechtes Beispiel...da könnte ich auch den Timer auf
64 laden und dann 65 mal abzählen...aber ich denke damit wird deutlich,
was ich meine...wenn ich Werte zwischen 32 und 64 zählen möchte, z.B.
45, dann kömme ich irgendwann in einen Bereich, in dem der µC fast nur
noch mit Zählen beschäftigt ist, weil ich den Timer immer kleiner
mache und immer häufiger im Interrupt die Durchläufe zähle. Aber dann
müsste man vermutlich einen schnelleren Quarzoszillator nehmen, damit
man die gewünschte Genauigkeit wieder erreichen kann.

CyberHorst

Autor: AVRFan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
:so dass ich meinen Interrupt immer wieder exakt nach 4160 
Timer-Schritten
:starten kann

Hmmm... bist Du sicher, dass Du verstanden hast, wie Interrupts 
funktionieren?  Vielleicht solltest Du einfach mal erzählen, was genau 
Du da machen willst.  So wird das glaub ich nicht viel.

Autor: unsichtbarer WM-Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Verstehe ich es richtig, dass du immer eine konstante aber doch 
veränderliche Periodendauer haben willst?
Beim AVR gibt es die OnCompare-Einheit (CTC-Mode), die immer zur 
gleichen Zeit ein Interrupt erzeugt.
Dabei wird ein Timer gestartet und bei Erreichen eines Vergleichswertes 
zurückgesetzt.
Durch Verändern des Vergleichswertes kann man die Periodendauer 
variieren.
Ob der PIC sowas auch unterstützt, kann ich nicht sagen, weil ich die 
Controller meide.

Autor: CyberHorst (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

genau so ist es. Ich benötige ein flexibles und präzises Timing im
einstelligen Mikrosekundenbereich, wobei ich mich nicht mit Tricks
um die Einhaltung der Genauigkeit kümmern möchte, das sollte der µC
leisten.

Die Funktion "Clear Timer on Compare Match" scheint genau dieses
Problem zu lösen! Bei frei wählbarer Überlaufgrenze sollte sich so
fast jedes erdenklich Timing sehr genau erreichen lassen.

Vielen Dank,

CyberHorst.

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.