Input Capture maximale Frequenz

Gast #788108
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
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
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
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
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
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

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.