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
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.
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.
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.
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
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.
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.
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.
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.
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.
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,
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
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.