Forum: Mikrocontroller und Digitale Elektronik STM32 Input Capture, verpasste flanken


von bastelfritze (Gast)


Lesenswert?

Hallo,

Ich habe mir in diesem thread
Beitrag "STM32 Input Capture an PC9"

Den ersten beispielcode von Uwe.B genommen und für meinen zweck 
modifiziert, d.h. kompatibel zur st-lib vom F100 gemacht, und für PB5 
TIM3_CH2 und FallingEdge ausgelegt, sowie pin auf internal pullup, da 
"andere seite" nen open collector ausgang, der über 15cm flachband 
verbunden ist, hat. Den prescaler hab eich von 83 im beispiel auf 12 
gestellt (24/168 * 83 ~ 12)

Die MCU läuft auf 24 MHz. Das einzige, was sonst noch "los ist", ist, 
dass in der main loop geguckt wird ob im buffer für USART1 etwas ist 
(terminal debug text Rx/Tx. Sehr kurze, manuell in hterm eingegebene 
kommandos werden empfangen & verarbeitet).
Und dann ist da noch der SysTick mit 1 kHz, der nur eine LED blinken 
lässt.

Das capturing hat höhere interrupt priorität als der USART.

Das capturing schien an sich erstmal zu funktionieren.
Ich habe die anzahl der gemessenen zeiten dann mal mitgezählt, und es 
werden bis zu 50% der flanken verpasst (das signal ist aber recht 
sauber).
Ich versuche für ein rechteck signal, das von 1kHz bis 10kHz gehen kann, 
die periodendauer zu messen. Ich starte manuell einen burst von ca. 500 
flanken, die in den pin gehen, d.h. ich kann danach gut den zählwert 
angucken.

Was könnte ich falsch machen?

von bastelfritze (Gast)


Lesenswert?

Hah,
ich hatte zum einen die hin-und-her logik aus dem beispiel ISR vor dem 
schmeißen der messungen in meinen FIFI nicht rausgenommen, was die 50% 
marke erklärt ;-)
Für das etwas unstetige verhalten - siehe stm32f100 reference manual, 
section 12.3.6  Input capture mode, punkt 2:
"Program the input filter duration you need with respect to the signal 
you connect to the
timer (when the input is one of the TIx (ICxF bits in the TIMx_CCMRx 
register). Let’s
imagine that, when toggling, the input signal is not stable during at 
must 5 internal clock
cycles. We must program a filter duration longer than these 5 clock 
cycles"

Meine flanken waren nicht steil genug dafür dass ich gar keinen filter 
an hatte (wert 0)

von bastelfritze (Gast)


Lesenswert?

äh, fiFO. Nen hund habe ich nicht gefüttert ;)

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.