Input Capture

Gast #64822
Hi,

ich bin gerade dabei ein Signal zu Capturen. Dieses Signal ist
insgesamt maximal 130 ms lang. Dieses Signal ist so aufgebaut das zum
Start eine Highflanke von 9 ms kommt und dann eine Lowflanke von 4,5 ms
kommt. Danach folgen noch ca 64 Bit mit jeweils 1120µs.

Ich habe den Timer Capture Int. genutzt. In dieser ISR Routine wollte
ich gerne das ICES1 Flag (im TCCR1B Register) toggeln um von High auf
Low Flanke zu triggern. Leider habe ich genau da eine Denkblockade wie
ich dieses Bit toggeln kann mit so wenig Befehlen wie moeglich.
Desweiteren habe ich ein kleines Problem mit den 9 ms. Mein ICR1 (Input
Capture Register) zaehlt ja maximal bis 65355. Wie sollte ich ein
Ueberlauf verhindern?


Ich hoffe mir kann da jemand ein bischen unter die Arme greifen.
Ich benutze ein Mega8 mit 8 Mhz und programmiere alles mit ASM.


Mfg

Dirk
Gast
toggeln:
in r16, TCCR1b
ldi r17, 0b01000000
eor r16,r17
out TCCR1B, r16

Überlauf: entweder Vorteiler erhöhen (max. Zeit wird entsprechend dem
Vorteiler vervielfacht, Auflösung sinkt entsprechend) oder den Timer
per Software erweitern, in der T1_OV-Routine ein Register erhöhen, so
wird aus dem 16bit-Zähler ein 24bit-Zähler. Der Inhalt dieses Registers
wird natürlich bei einem ICP nicht automatisch irgendwo abgespeichert,
dass muss die Software in der ICP-Routine tun. Muss man bei der
Programmierung sehr aufpassen, ICP-Int könnte gerade in dem Augenblick
kommen, an dem der Zähler überläuft, im ICP steht also 0x0000, aber das
Softwareregister ist noch nicht incrementiert -> Messwert ist komplett
falsch.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 22 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.