Frage zur Performance der Timer

Gast #3348542
Hallo,

ich möchte gerne am Beispiel des Atmega328p wissen wie es sich mit dem 
16bit Timer verhält. Dieser hat hat z.b. 3 Register TCCR1A / B & C die 
man als Timer definieren kann.

1. Frage: Laufen diese Timer unabhängig voneinander?
2. Frage: mal angenommen ich wollte tatsächlich 3 Timer für mein 
Programm. Was wäre denn performancetechnisch gesehen sinnvoller? 
Tatsächlich alle 3 Hardwaretimer laufen lassen oder lieber einen Timer 
laufen lassen der 3 Variablen hochzählen lässt? Diese könnte man dann je 
nachdem welche Taktung man im Programm braucht unabhängig voneinander 
abfragen und nutzen.


Danke schonmal für alle Antwortenden!

Gruß
hiho
#3348554
Wenn es sich um Zeiten im Programm handelt und es nicht grad zeitlich 
sehr eng zugeht, dann deklariert man einen Timer zum Systemtimer, der 
beispielsweise mit festen 1KHz taktet. Daraus leitet man dann diverse 
Aktionen ab.

Programm-Wartezeiten im 1-2stelligen Mikrosekundenbereich kann man oft 
sinnvoller mit programmierten Delays realisieren, als mit Timern.

Die Timer 1, 2 und 3 sind voneinander unabhängig. Die von dir erwähnten 
Steuerregister A/B/C des gleichen Timers 1 freilich sind es allerdings 
nicht.
#3348559
hiho schrieb:
> Hallo,
>
> ich möchte gerne am Beispiel des Atmega328p wissen wie es sich mit dem
> 16bit Timer verhält. Dieser hat hat z.b. 3 Register TCCR1A / B & C die
> man als Timer definieren kann.
Nein. Mit diesen 3 Registern wird der eine 16-Bit-Timer initialisiert. 
Dazu hat der 328er noch 2 8-Bit-Timer.

> 1. Frage: Laufen diese Timer unabhängig voneinander?
Erübrigt sich.

> 2. Frage: mal angenommen ich wollte tatsächlich 3 Timer für mein
> Programm. Was wäre denn performancetechnisch gesehen sinnvoller?
> Tatsächlich alle 3 Hardwaretimer laufen lassen oder lieber einen Timer
> laufen lassen der 3 Variablen hochzählen lässt? Diese könnte man dann je
> nachdem welche Taktung man im Programm braucht unabhängig voneinander
> abfragen und nutzen.

Das kommt immer auf die Anwendung an. Um Leds mit verschiedenen 
Frequenzen blinken zu lassen, nimmt man einen Timer. Braucht man z.B. 
mehrere unabhängige PWM-kanäle nimmt man mehrere Timer.

mfg.
#3348563
Thomas Eckmann schrieb:
> Frequenzen blinken zu lassen, nimmt man einen Timer. Braucht man z.B.
> mehrere unabhängige PWM-kanäle nimmt man mehrere Timer.

Kommt drauf an wie unabhängig. Wenn unabhängige Frequenz, dann 
separate Timer. Wenn es nur um verschiedene Pulsbreiten bei gleicher 
Frequenz handelt, dann darf es auch der gleiche sein.
Gast #3348566
hiho schrieb:
> ich möchte gerne am Beispiel des Atmega328p wissen wie es sich mit dem
> 16bit Timer verhält. Dieser hat hat z.b. 3 Register TCCR1A / B & C die
> man als Timer definieren kann.

Nein, der 16Bit-Timer hat so viele Konfigurations-Optionen, dass er drei 
Register braucht, um vollständig konfiguriert zu werden, es ist aber 
trotzdem nur ein Timer.

MfG, Arno
#3348570
A. K. schrieb:
> Thomas Eckmann schrieb:
>> Frequenzen blinken zu lassen, nimmt man einen Timer. Braucht man z.B.
>> mehrere unabhängige PWM-kanäle nimmt man mehrere Timer.
>
> Kommt drauf an wie unabhängig. Wenn unabhängige Frequenz, dann
> separate Timer. Wenn es nur um verschiedene Pulsbreiten bei gleicher
> Frequenz handelt, dann darf es auch der gleiche sein.
Was ist denn das für ein Unsinn.
Wenn du dein Hirn mal einschaltest, wirst du selber darauf kommen, wie 
man mit nur einem Timer verschiedene Blinkfrequnzen erzeugt.

mfg.
#3348572
hiho schrieb:
> Was wäre denn performancetechnisch gesehen sinnvoller?

Diese Frage ist eigentlich erst dann sinnvoll, wenn die Performance 
davon tatsächlich tangiert wird. Was bei Timern im Millisekundenbereich 
üblicherweise nicht der Fall ist.

Wenn du allerdings auf einem AVR alle 3 Timer mit je um die 10KHz 
Interrupts erzeugen lässt, dann ist die davon hervorgerufene CPU-Last 
wesentlich höher, als wenn die 3 (einfachen) Aktionen im Interrupt nur 
eines Timers stattfinden. Denn ein Interrupt braucht (in C) schon zig 
Takte, nur weil es ihn gibt.
#3348577
Thomas Eckmann schrieb:
> Was ist denn das für ein Unsinn.
> Wenn du dein Hirn mal einschaltest, wirst du selber darauf kommen, wie
> man mit nur einem Timer verschiedene Blinkfrequnzen erzeugt.

Was ist denn das für ein Unsinn? Hättest du mal dein Hirn eingeschaltet, 
dann hättest du auch gelesen, dass ich ausdrücklich über PWM 
verschiedener Pulsbreite aber mit gleicher Grundfrequenz schrieb. Und da 
du kommst nun mit unterschiedlichen Blink-Frequenzen. Was hat das denn 
nun damit zu tun?

NB: Auch das geht u.U. mit nur einem Timer. Wenn beispielsweise der 
Timer zwei PWM-Kanäle für 2 LEDs (oder 2 Farben einer LED) erzeugt, und 
ein nebenbei aus dem gleichen Timer abgeleiteter regelmässiger Interrupt 
die Kanäle fürs Blinken aus- und einschaltet.
#3348581
A. K. schrieb:
> Thomas Eckmann schrieb:
>> Was ist denn das für ein Unsinn.
>> Wenn du dein Hirn mal einschaltest, wirst du selber darauf kommen, wie
>> man mit nur einem Timer verschiedene Blinkfrequnzen erzeugt.
>
> Was ist denn das für ein Unsinn? Hättest du mal dein Hirn eingeschaltet,
> dann hättest du auch gelesen, dass ich ausdrücklich über PWM
> verschiedener Pulsbreite aber mit gleicher Grundfrequenz schrieb. Und da
> du kommst nun mit unterschiedlichen Blink-Frequenzen. Was hat das denn
> nun damit zu tun?

Nun beruhige dich mal wieder, sonst verfällst du gleich in 
Schnappatmung.

Das mit dem Blinken habe ich dem Fragesteller geschrieben und zwar als 
Antwort auf seine 2. Frage. Deine PWM interessiert mich einen Scheiss.

mfg.
Gast #3348602
Danke Euch für die Hilfe!

Nun ist es was klarer. Wenn ich also mehr als 3 Timer haben wollte 
müsste ich entweder "umständlicher" per Software programmieren oder aber 
einen anderen Chip aussuchen.


Gruß
hiho
#3348611
Software ist nicht notwendigerweise umständlicher. Präzise Antworten 
gibts auf präzise Fragen (konkrete Aufgabe). Auf allgemeine Fragen kann 
es nur allgemeine Antworten geben, die im Einzelfall möglicherweise 
nicht sinnvoll sein können.

Antwort schreiben

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