Forum: Mikrocontroller und Digitale Elektronik Input Capture


von Dirk (Gast)


Lesenswert?

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

von crazy horse (Gast)


Lesenswert?

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.

von Dirk (Gast)


Lesenswert?

Hi,

ich danke Dir Crazy Horse. Jetzt sollte es eigentlich kein grosses
Problem mehr sein.


mfg

Dirk

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.