Forum: Mikrocontroller und Digitale Elektronik Input Capture maximale Frequenz


von Rico (Gast)


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

von Johannes M. (johnny-m)


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

von Falk B. (falk)


Lesenswert?

@ Rico (Gast)

>Dazu die Frage: Kann der Input Capture eine höhere Freuquenz haben als
>der Prozessortakt ist?

Nein. Minimale Pulsebreite 2 CPU-Takte.
Workaround. Externes Toggle-FlipFlop, z.B. 74HC74.

MFG
Falk

von Rico (Gast)


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?

von Johannes M. (johnny-m)


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.

von 6637 (Gast)


Lesenswert?

Was spricht gegen einen externen Teiler ? zB einen 8Bit Teiler, der 
Div256 macht. Dann ist man wieder im Bereich. Moeglicherweise.

von Jojo S. (Gast)


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.

von Rico (Gast)


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)

von Rico (Gast)


Lesenswert?

Ach und die Frage hat ja Johannes schon beantwortet, Danke!!!

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.