Input Capture maximale Frequenz

Gast #788108
Lesenswert?

Hallo zusammen,

ich möchte gern die Input Capture Funktion nutzen. Jedoch ist meine zu 
messende Frequenzhöher als der Controller Takt, da ich ihn sparsam 
betreiben möchte.
Dazu die Frage: Kann der Input Capture eine höhere Freuquenz haben als 
der Prozessortakt ist? Im Datenblatt hab ich dazu leider nichts 
gefunden.


Danke und Grüsse
Rico
#788115
Lesenswert?

Rico wrote:
> ich möchte gern die Input Capture Funktion nutzen. Jedoch ist meine zu
> messende Frequenzhöher als der Controller Takt, da ich ihn sparsam
> betreiben möchte.
> Dazu die Frage: Kann der Input Capture eine höhere Freuquenz haben als
> der Prozessortakt ist? Im Datenblatt hab ich dazu leider nichts
> gefunden.
Wie soll das gehen? Wenn der Timer langsamer läuft als das zu messende 
Signal, dann kannst Du kein Input Capture verwenden. Und der Timer kann 
nunmal im Prinzip nicht schneller laufen als der CPU-Takt...
Gast #789167
Lesenswert?

The Input Capture is updated with the counter (TCNTn) value each time an 
event occurs on the ICPn pin.
Also wenn ich das so lese, sollte das schon gehen...
Nur ich bin mir eben nicht sicher. Wenn ich z.B. bei 10000 Events einen 
Interrupt auslösen lasse, dann kann die CPU vorausgesetzt sie läuft mit 
halber Taktrate wie das zu messende Signal, auf einem anderen Timer bis 
5000 zählen.
Oder liege ich da ganz falsch?
#789173
Lesenswert?

Beschreibe bitte mal exakt, was Du eigentlich machen willst.

Die Input Capture Unit dient dazu, bei Auftreten einer Flanke am ICP-Pin 
den Inhalt vom Timer-Zählregister zu sichern, so dass man z.B. die Zeit 
zwischen zwei Flanken messen kann. Kommen die Flanken an ICP schneller 
als der Timer zählen (und v.a. das Programm das Capture-Register 
auslesen) kann, dann macht das ganze überhaupt keinen Sinn!

Ich vermute fast, Du verwechselst da was (und liegst somit tatsächlich 
ganz falsch) und möchtest eigentlich eine Compare-Einheit nutzen und 
kein Capture...

Dann kann es auch Sinn machen, den Timer mit einer höheren als der 
CPU-Frequenz takten zu wollen, was in einem gewissen Rahmen vermutlich 
sogar funktionieren könnte.

Du hast aber immer noch nicht erzählt, mit was für einem µC Du das 
machen willst (ich vermute mal, dass es sich um einen AVR handelt...)

EDIT:
Ich habe mal einen Blick ins Datenblatt eines AVR (ATMega32) geworfen 
und festgestellt, dass sich die Timer nicht höher als CPU-Takt takten 
lassen, weil der externe Takteingang auf CLK_IO synchronisiert ist... 
Genaugenommen muss der externe Timertakt kleiner als der halbe I/O-Takt 
sein.
Gast #789212
Lesenswert?

und wenn man periodische Signale mit dem ICP ausmessen will dann muß man 
ja noch regelmässig in einer ISR den kopierten Timer ICR1 auslesen, das 
dauert nochmal einige zig Takte bevor die nächste Flanke kommen darf. 
Die Dauer der ISR ist da das limitierende Element.
Gast #789320
Lesenswert?

Ahh ich hab mein Fehler bei der Beschreibung erkannt.
Ich nutze erst mal einen ATMega16.
Ich möchte gern diesen externen Takt als Taktquelle für einen Zähler 
nutzen, um nach einigen Flankenwechsel einen ISR auslösen zu lassen, 
z.B. nach 200 Takten. Dann mit einem Timer vergleichen der mit 
Systemtakt läuft. Und dazu nun die Frage noch mal:
Kann dieser externe Takt an dem Timer größer sein als der Systemtakt? 
Ich glaube so ist es richtig ausgedrückt.   ;o)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren