Forum: Mikrocontroller und Digitale Elektronik Kürzeste Periode mit Timer warten?


von Gerald Gruber (Gast)


Lesenswert?

Hi!

Ich hätte mal eine allgemeine Frage zu Timer:
Was ist die kürzeste Zeit, die ich mit zb. im CTC warten kann?
Ist das 1/Takt (z.B. ATMega16 16 MHz -> 63 ns?)
Was ist wenn ich noch eine kürzer Periode warten müsste, hilft da nur
noch einen schnelleren Controller zu kaufen ??

mfg ,Gerald

von Jörg Wunsch (Gast)


Lesenswert?

(Vorsicht: CTC im Z80-Jargon ist was anderes als CTC im AVR-Jargon.
Beim Z80 hieß das `counter-timer circuit', beim AVR ist es `clear
timer on compare match'. ;-)

Theoretisch ist es wohl in der Tat eine Taktperiode, aber wirklich nur
sehr theoretisch: Du brauchst ja deutlich mehr als einen Takt, um
den Timer zu aktivieren, und auch im polled mode für das Auslesen
brauchst Du mehrere Takte pro Schleifendurchlauf.

Kleine Verzögerung macht man daher generell als `spin loop': der
Prozessor zählt in einer Schleife ein Register herunter, bis es 0 ist.
Beim AVR kann man solche Schleifen mit 3 Takten pro Durchlauf bei
maximal 255 Durchläufen oder 4 Takten bei maximal 65535 Durchläufen
realisieren.  Allerdings kommt noch die Setup-Zeit hinzu, um das
Zählregister auf den gewünschten Wert voreinzustellen.

Die kürzestmögliche Verzögerung wäre ein NOP; der benötigt genau einen
Prozessortakt.

Es liegt in der Natur des getakteten Verhaltens eines Prozessors, daß
man keine kürzeren Verzögerungen als die eines Taktes realisieren
kann.

Vielleicht stellst Du die Frage ja lieber vom Kopf auf die Füße und
beschreibst, was Du denn eigentlich vorhast?

Was hat das eigentlich mit dem GCC zu tun?  Das wäre eher ein Kandidat
fürs allgemeine Forum.

von Azrael (Gast)


Lesenswert?

Also wenn du eine PWM erzeugen wills dann ist 63ns der kürzeste
takt(eventuell auch 2*63, kommt drauf an wie schnell der timer
reagiert, dürfte aber im datenblatt stehen)

schneller geht natürlich nicht(wie soll das gehen?)

Eine möglichkeit währe den timer2 mit einem externen oszillator zu
versorgen, den dürftest du dann glaub ich auch schneller machen, bin
mir aber nicht sicher.

Und sonst kannst du immer noch einen CPLD nehmen und mit einem
oszillator einen schnelleren takt erzeugen, ist halt mehr aufwand

mfg Azrael

von Gerald Gruber (Gast)


Lesenswert?

Hi!

Danke für die schnellen Antworten!!

Eigentlich war das wirklich nur eine allgemeine Frage... wollte als nix
Genaues damit machen.

mfg,Gerald

PS: Entschuldigung fürs falsche Forum, werde das nächste mal genauer
schaun...

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.