Forum: Mikrocontroller und Digitale Elektronik Frage zur Performance der Timer


von hiho (Gast)


Lesenswert?

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

von (prx) A. K. (prx)


Lesenswert?

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.

: Bearbeitet durch User
von Thomas E. (thomase)


Lesenswert?

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.

von (prx) A. K. (prx)


Lesenswert?

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.

von Arno (Gast)


Lesenswert?

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

von Thomas E. (thomase)


Lesenswert?

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.

von (prx) A. K. (prx)


Lesenswert?

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.

von (prx) A. K. (prx)


Lesenswert?

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.

: Bearbeitet durch User
von Thomas E. (thomase)


Lesenswert?

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.

von (prx) A. K. (prx)


Lesenswert?

Thomas Eckmann schrieb:
> Nun beruhige dich mal wieder, sonst verfällst du gleich in
> Schnappatmung.

Keine Sorge. Aus entsprechenden Forschungen ergibt sich regelmässig, 
dass "tit for tat" eine der erfolgreichsten Strategien im theoretischen 
Miteinander ist.

von Ist der Thomas keck mann! (Gast)


Lesenswert?

Thomas Eckmann schrieb:
> Nun beruhige dich mal wieder

Sagt der Richtige. Selbst nicht lesen können, aber gleich mit 
Beleidigungen starten:

Thomas Eckmann schrieb:
> Was ist denn das für ein Unsinn.
> Wenn du dein Hirn mal einschaltest,

von Thomas E. (thomase)


Lesenswert?

Ist der Thomas keck mann! schrieb:
> Thomas Eckmann schrieb:
>> Nun beruhige dich mal wieder
>
> Sagt der Richtige. Selbst nicht lesen können, aber gleich mit
> Beleidigungen starten:
>
> Thomas Eckmann schrieb:
>> Was ist denn das für ein Unsinn.
>> Wenn du dein Hirn mal einschaltest,

Na, du bist ja ein ganz witziger.

mfg.

von hiho (Gast)


Lesenswert?

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

von (prx) A. K. (prx)


Lesenswert?

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.

: Bearbeitet durch User
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
Noch kein Account? Hier anmelden.