Forum: Mikrocontroller und Digitale Elektronik Unterschied zwischen "Asynchronous Timer" und "Timer Counter"


von Martin B. (martinburka)


Lesenswert?

Hallo,

Kann mir jemand den Unterschied zwischen einem "Asynchronous Timer" und 
einem "Timer Counter" erklären?
Habe online leider nichts finden können.
Mich Interessiert der generelle Unterschied.
(Im Speziellen nutze ich einen SAM4L von Atmel)

von Axel S. (a-za-z0-9)


Lesenswert?

Martin Burka schrieb:
> Kann mir jemand den Unterschied zwischen einem "Asynchronous Timer" und
> einem "Timer Counter" erklären?

Die Frage ist sinnlos. Ungefähr so wie "Was ist der Unterschied zwischen 
einem Auto und einem Direkteinspritzer?" oder "Was ist der Unterschied 
zwischen Fastfood und einer Pizza Margharita?"

> Mich Interessiert der generelle Unterschied.
> (Im Speziellen nutze ich einen SAM4L von Atmel)

Die Funktionsgruppe, die im allgemeinen als "Timer/Counter" bezeichnet 
wird, kann eigentlich immer wahlweise als Timer oder als Counter 
betrieben werden. Und fast immer auch asynchron (zum CPU-Takt).

von Dieter F. (Gast)


Lesenswert?

Axel Schwenke schrieb:
> Die Funktionsgruppe, die im allgemeinen als "Timer/Counter" bezeichnet
> wird, kann eigentlich immer wahlweise als Timer oder als Counter
> betrieben werden. Und fast immer auch asynchron (zum CPU-Takt)

Ich bin jetzt nicht der Ober-Profi - aber meiner Kenntnis nach läuft 
(z.B. auf ATMega...) eigentlich nur die RTC (Real-Time-Clock) asynchron 
(unabhängig vom CPU-Takt) - oder sehe ich das falsch?

von Karl H. (kbuchegg)


Lesenswert?

Dieter Frohnapfel schrieb:

> Ich bin jetzt nicht der Ober-Profi - aber meiner Kenntnis nach läuft
> (z.B. auf ATMega...) eigentlich nur die RTC (Real-Time-Clock) asynchron
> (unabhängig vom CPU-Takt) - oder sehe ich das falsch?

Bei den meisten (allen?) Megas kann man den Timer auch von extern takten 
lassen.
-> Prescaler Einstellungen

: Bearbeitet durch User
von Axel S. (a-za-z0-9)


Lesenswert?

Dieter Frohnapfel schrieb:
> Axel Schwenke schrieb:
>> Die Funktionsgruppe, die im allgemeinen als "Timer/Counter" bezeichnet
>> wird, kann eigentlich immer wahlweise als Timer oder als Counter
>> betrieben werden. Und fast immer auch asynchron (zum CPU-Takt)
>
> Ich bin jetzt nicht der Ober-Profi - aber meiner Kenntnis nach läuft
> (z.B. auf ATMega...) eigentlich nur die RTC (Real-Time-Clock) asynchron
> (unabhängig vom CPU-Takt) - oder sehe ich das falsch?

Sobald man einen Timer so konfigurieren kann, daß er einen externen Takt 
verwendet, ist er asynchron.

Und weil bestimmt gleich ein Schlaumeier mit diesem Einwand kommt: nein, 
die Existenz der Synchronisierungs-Flipflops am Takt- bzw. Zähleingang 
ist kein Widerspruch. Für den µC vergeht die Zeit in jedem Fall in 
kleinen Sprüngen, bestimmt durch seine Taktfrequenz. Auch wenn ein 
Timer/Counter "echt" asynchron zählen würde - der µC kann ihn so oder so 
nur synchron zum CPU-Takt auslesen. Es ist am Ende also vollkommen egal, 
ob die Synchronisierung erst beim Auslesen des Timerwertes passiert oder 
schon vorher bei der Abtastung des externen Signals. Die einzige 
ernsthafte Konsequenz dieser Abtastung besteht darin, daß sie die 
maximale externe Frequenz auf die Hälfte der Taktfrequenz beschränkt.

von Dieter F. (Gast)


Lesenswert?

Karl Heinz schrieb:
> -> Prescaler Einstellungen

Ja, nie genutzt - wieder was gelernt (und besser still gewesen ...)

von uwe (Gast)


Lesenswert?

> Auch wenn ein Timer/Counter "echt" asynchron zählen würde - der µC kann
> ihn so oder so nur synchron zum CPU-Takt auslesen.
Aber die PWM einheit könnte trotzdem Asynchron zu CPu takt laufen und 
eventuell auch mit Höherer frequenz als die CPU.
Man kann dann z.B. die CPU mit 1MHz laufen lassen und die PWM mit 64MHz.

von klar (Gast)


Lesenswert?

uwe schrieb:
> Man kann dann z.B. die CPU mit 1MHz laufen lassen und die PWM mit 64MHz.

Das wird aber nur funktionieren, wenn der µC eine PLL hat, und auch dann 
läuft der PLL-Takt synchron zum CPU-Takt.

von Simpel (Gast)


Lesenswert?

@Axel

Da ich es bislang noch nicht gebraucht habe:

Wie ist das, wenn der höhere PLL-Peripherie-Takt zusammen mit der 
PWM-Hardware genutzt wird? Gehe ich recht in der Annahme, dass dabei die 
Compare-Match-Ausgänge direkt hardwaremässig angesteuert werden, ohne 
auf den Systakt synchronisiert zu werden? Ansonsten wäre der höhere 
PLL-Takt bei PWM sinnlos...

von uwe (Gast)


Lesenswert?

> Das wird aber nur funktionieren, wenn der µC eine PLL hat, und auch dann
> läuft der PLL-Takt synchron zum CPU-Takt.
Und wenn die PLL extern getaktet wird?!
Es muß nur beim Beschreiben der Register durch die CPU einsynchronisiert 
werde mit nen paar FlipFlops.

von klar (Gast)


Lesenswert?

uwe schrieb:
> Und wenn die PLL extern getaktet wird?!

Dann ist es das gleiche, als wenn ein Timer extern getaktet wird. Dann 
ist es logischerweise asynchron. Das hat dann nur nichts mit der 
angesprochenen höheren Frequenz zu tun.

von uwe (Gast)


Lesenswert?

>Dann ist es das gleiche, als wenn ein Timer extern getaktet wird. Dann
>ist es logischerweise asynchron. Das hat dann nur nichts mit der
>angesprochenen höheren Frequenz zu tun.
Ich weiß, aber

>  Das wird aber nur funktionieren, wenn der µC eine PLL hat, und auch dann
> läuft der PLL-Takt synchron zum CPU-Takt.
Nö es muß nur zwischen den Taktdomänen einsynchronisiert werden mit ein 
paar FlipFlops.

von Thomas E. (thomase)


Lesenswert?

klar schrieb:
> Das wird aber nur funktionieren, wenn der µC eine PLL hat, und auch dann
> läuft der PLL-Takt synchron zum CPU-Takt.

Nein, die CPU des Attiny25 kann mit dem PLL-Takt/4 laufen, muss es aber 
nicht.

Simpel schrieb:
> Gehe ich recht in der Annahme, dass dabei die
> Compare-Match-Ausgänge direkt hardwaremässig angesteuert werden, ohne
> auf den Systakt synchronisiert zu werden? Ansonsten wäre der höhere
> PLL-Takt bei PWM sinnlos...

Der Asynchron-Takt, nicht der Systemtakt, synchronisiert die 
Timer-Register. Allerdings müssen hierbei während der High-Phase des 
Systemtaktes zwei Flanken des asynchronen Taktes auftreten. Deswegen 
muss der Systemtakt kleiner als ein Drittel des Asynchrontaktes sein.

Siehe auch Datenblatt Attiny25/45/85

mfg.

von c-hater (Gast)


Lesenswert?

Karl Heinz schrieb:

>> Ich bin jetzt nicht der Ober-Profi - aber meiner Kenntnis nach läuft
>> (z.B. auf ATMega...) eigentlich nur die RTC (Real-Time-Clock) asynchron
>> (unabhängig vom CPU-Takt) - oder sehe ich das falsch?
>
> Bei den meisten (allen?) Megas kann man den Timer auch von extern takten
> lassen.

Ja, sie laufen aber trotzdem synchron zum Kern, weil bereits an den 
Takteingängen Tn mit dem IO-Takt synchronisiert wird. In den 
Prinzipschaltplanen der einschlägigen Datenblätter ist die 
entsprechenden Baugruppe als "edge detector" bezeichnet.

Das hat erstens zur Folge, daß die eigentlichen Timer halt doch synchron 
zur MCU laufen.
Zweitens hat es aber noch die (oft viel schlimmere) Konsequenz, dass man 
extern nur einen einen deutlich geringeren Takt anlegen kann, als intern 
möglich wäre, jedenfalls wenn man an reprodzierbaren Zählergebnissen 
interessiert ist. Da schlägt dann mal wieder das Abtast-Theorem in 
seiner vollen Härte gnadenlos zu.
Und drittens sind diese Timer natürlich auch mit externem Takt nicht in 
der Lage, die MCU aus dem Tiefschlaf zu holen, denn sie laufen im 
Tiefschlaf trotz externem Takt einfach nicht weiter, weil der "edge 
detector" ohne IO-Takt keine Flanken des externen Taktes detektieren 
kann, im Kern handelt es sich dabei nämlich um ein doofes, vom IO-Takt 
getriebenes D-Flipflop. Ohne IO-Takt gibt's weder Flip noch Flop.

Dieter Frohnapfel hat also vollkommen Recht mit seiner Anmerkung.

Nur der "RTC-Zähler" (also i.d.R. Timer2) ist tatsächlich in der Lage, 
komplett asynchron zum MCU-Takt zu laufen. Man erkennt das spielend 
leicht am erhöhten Ansteuerungsaufwand in Gestalt einiger netter 
zusätzlicher Bits im Control- und Statusregister. Denn hier muß die 
Synchronisation (zumindest im asynchronen Betrieb) sozusagen "hinter" 
dem Timer passieren, weil der dann eben außerhalb der mit dem Systemtakt 
synchronen IO-Taktdomäne läuft.

von Axel S. (a-za-z0-9)


Lesenswert?

uwe schrieb:
>> Auch wenn ein Timer/Counter "echt" asynchron zählen würde - der µC kann
>> ihn so oder so nur synchron zum CPU-Takt auslesen.
> Aber die PWM einheit könnte trotzdem Asynchron zu CPu takt laufen und
> eventuell auch mit Höherer frequenz als die CPU.
> Man kann dann z.B. die CPU mit 1MHz laufen lassen und die PWM mit 64MHz.

Dazu braucht man aber nicht das Feature eines asynchronen Timer-Taktes. 
Viel eher verwendet man eine PLL um den Systemtakt für den Timer 
hochzusetzen (kann z.B. der ATtinyX61). Oder man teilt die CPU-Frequenz 
per Clock-Divider runter während der Timer mit dem ungeteilten 
Systemtakt läuft. Oder beides.

Simpel schrieb:
> Wie ist das, wenn der höhere PLL-Peripherie-Takt zusammen mit der
> PWM-Hardware genutzt wird? Gehe ich recht in der Annahme, dass dabei die
> Compare-Match-Ausgänge direkt hardwaremässig angesteuert werden, ohne
> auf den Systakt synchronisiert zu werden?

Alle Waveform-Generation Aktionen laufen synchron zum Timer-Takt ab. Der 
kann durchaus auch schneller sein als der CPU-Takt. Ein echt asynchroner 
PWM-Takt ergibt aber in den wenigsten Fällen einen Sinn.

Zumindest bei den AVRs ist man in diesem Falle auch ernsthaft behindert. 
Nicht nur daß der externe Takt in der Frequenz eingeschränkt ist, die 
zwangsweise Synchronisierung mit dem Systemtakt erzeugt auch Jitter auf 
den PWM-Flanken.

Stell dir dafür einfach vor, der externe Takt wäre 4MHz und der 
Systemtakt 10MHz. Dann sind die Taktperioden des synchronisierten Taktes 
immer im Wechsel 20ns und 30ns lang statt den originalen 25ns. 
Entsprechend wackeln dann auch die Umschaltpunkte der PWM um 5ns, 
abhängig von der Phasenlage der Takte. Bei 4.000000 MHz und 10.000001 
MHz sogar periodisch.

c-hater schrieb:
> Karl Heinz schrieb:
>>
>> Bei den meisten (allen?) Megas kann man den Timer auch von extern takten
>> lassen.
>
> Ja, sie laufen aber trotzdem synchron zum Kern, weil bereits an den
> Takteingängen Tn mit dem IO-Takt synchronisiert wird.

Na bitte. Da ist er ja schon, der vorhergesagte Schlaumeier.

von Simpel (Gast)


Lesenswert?

@Thomas Eckmann

Ok, klar soweit, was das Register-Timing anbelangt, thx...
Ich war nur unsicher, weil normalerweise die Out-Ports mit dem 
CPU-Systakt gelatcht werden.
Kann man also generell sagen: in der alternativen Funktion als 
PWM-Ausgang werden die zugeordneten Ausgangs-Pins direkt vom CpM-FF 
angesteuert und dieses wird vom Timertakt geclockt ?

von W.S. (Gast)


Lesenswert?

c-hater schrieb:
> Ja, sie laufen aber trotzdem synchron zum Kern

Eben.
Genau das!

Du bist aber gerade dabei, dir die geballte Abneigung all der Leute 
zuzuziehen, die mit ihrem ATmega und dessen Counter/Timer Baugruppe 
einen Frequenzzähler basteln wollen - und dabei felsenfest behaupten, 
die Torzeit (aka "Bewertungszeitspanne") sei ein exaktes Vielfaches der 
Eingangs-Periodenlänge.

W.S.

von Thomas E. (thomase)


Lesenswert?

Simpel schrieb:
> Kann man also generell sagen: in der alternativen Funktion als
> PWM-Ausgang werden die zugeordneten Ausgangs-Pins direkt vom CpM-FF
> angesteuert und dieses wird vom Timertakt geclockt ?

Ja, die Timer/Counter Control Logic wird von CK oder PCK mit der oben 
genannten Einschränkung getaktet. Und diese schaltet die 
Port-Ausgänge(OC1x).

mfg.

von Thomas E. (thomase)


Lesenswert?

Axel Schwenke schrieb:
> Na bitte. Da ist er ja schon, der vorhergesagte Schlaumeier.

Ja aber so langsam isolierst du dich.

Denn an der Synchronisation und dem Flankendetektor führt für den 
externen Takt kein Weg vorbei.

Siehe Datenblatt Attiny25, Figure 11-2, T0 Pin Sampling

mfg.

von c-hater (Gast)


Lesenswert?

Axel Schwenke schrieb:

> Na bitte. Da ist er ja schon, der vorhergesagte Schlaumeier.

Du hast nichtmal die Hälfte der Probleme benannt, erfrechst dich aber, 
dich zum "Schlaumeier-Terminator" zu erheben.

Wo ist denn in deinem Posting z.B. die Erwähnung der Unfähigkeit, das 
System aus dem Tiefschlaf zu wecken, die eben daraus resultiert, dass es 
sich nicht um asynchrone Timer handelt?

Nada.

Oder den Unterschied zu dem wirklich asynchron laufenden Timer bezüglich 
der nötigen Klimmzüge zu seiner Ansteuerung.

Nada.

Mal ganz davon abgesehen, hast du ganz offensichtlich das Prinzip der 
Synchronizität grundsätzlich nicht kapiert, sonst würdest du dich nicht 
dazu versteigen, ganz offensichtlich synchrone Timer als asynchrone 
verkaufen zu wollen.

Was soll das? Das weißt du doch besser. Oder wirklich nicht?

Dann bist du nur ein Schaumschläger!

von Dieter F. (Gast)


Lesenswert?

Habe noch ein wenig herumgeschaut und bin bei AVR130 fündig geworden 
(beschrieben am Beispiel des AT90S8535):

"In contrast to the two other timers which do not support this option, 
Timer2 of the AT90S8535 can be clocked by an asynchronous external 
clock. For this purpose a crystal or a ceramic resonator can be 
connected to the on board oscillator via the pins TOSC1 and TOSC2.
The oscillator is optimized for a watch crystal of 32.768 kHz. This 
requency is well suited for the implementation of Real Time Clocks 
(RTC)(1). There the main advantage of a separate clock is shown – it is 
independent of the system clock."

und

"External clocking is supported by Timer0 and Timer1 only. This mode 
allows the use of a wide range of external signals as timer clock 
signals. This is synchronous clocking, which means that the CPU 
detects the status of the pin and clocks the timer synchronously to the 
system clock if an external clock signal was detected."

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.