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)
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).
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?
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
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.
Karl Heinz schrieb: > -> Prescaler Einstellungen Ja, nie genutzt - wieder was gelernt (und besser still gewesen ...)
> 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.
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.
@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...
> 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.
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.
>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.
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.
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.
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.
@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 ?
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.
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.
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.
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!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.