STM32F051 a Input Capture

Jan Waclawek konfera na efton.sk
Pondělí Duben 22 01:01:08 CEST 2019


> První 2 pøerušení od vstupního signálu probìhnou, ale pak pøijde
> pøerušení CC1OF (opravdu skoèí do rutiny pøerušení) i když není povolené 

CC1OF je overcapture flag, t.j. je nastaveny, ked pride capture udalost (vo
Vasom pripade ktorakolvek hrana) a CC1IF je uz nastaveny - inaksie
povedane, overcapture nastane, ak nestihnete vcas vynulovat capture flag
medzi dvomi testne za sebou nasledujucimi capture udalostami.

Pokial viem, samotny CC1OF nevyvola prerusenie, preto ani k nemu neexistuje
povolovaci bit.

Budete mi oponovat, ze ste si dali breakpoint do prerusovacej rutiny a tam
ste v TIMx_SR videli nastaveny CC1OF ale nie CC1IF. Mohlo to vzniknut
nasledovnym scenarom: na CH1 prislo niekolko hran pocas vykonavania
prerusenia (napr. vstupny signal na zamyslanej hrane v skutocnosti fyzicky
zakmitava - co je jeho zdroj?). To nastavilo CC1IF aj CC1OF, ale vykona sa
riadok (data)->start = TIM2->CCR1; ktory vynuluje CC1IF (ale nie CC1OF),
pricom vsak prerusovaci signal z CC1IF zacal prechadzat synchronizacnym
mechanizmom medzi TIM/APB a NVIC a vyvola prerusenie tesne po odchode z
toho aktualneho.

> a pak TIM2 zatuhne.

Neviem, co tym myslite.

wek


PS. Podla mna je lepsie sa systematicky drzat makier z CMSIS headera, t.j.
STM32xxxx.h, nez pouzivat vselijake bastardy z CUBE a SPL (v tomto pripade
TIM_IT_CC1/TIM_IT_CC2).



Další informace o konferenci Hw-list