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?
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)
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.