STM32F051 a Input Capture
Jan Waclawek
konfera na efton.sk
Pondělí Duben 22 01:01:08 CEST 2019
> První 2 pøeruení od vstupního signálu probìhnou, ale pak pøijde
> pøeruení CC1OF (opravdu skoèí do rutiny pøeruení) 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