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
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...
@ 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
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?
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.
Was spricht gegen einen externen Teiler ? zB einen 8Bit Teiler, der Div256 macht. Dann ist man wieder im Bereich. Moeglicherweise.
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.
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)
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.