Re: STM32F051 a Input Capture

hudaklan na volny.cz hudaklan na volny.cz
Pondělí Duben 22 18:50:00 CEST 2019


Break point tam nedavam, mam tam signalizaci ledkama.
Pokud je povoleno InputCaptute 2, tak blika zelena ledka podle hran vstupniho signalu.
Modra se vubec nerozsviti. Kontrolovano osciloskopem.
Pri InpitCapture 1 zelena ledka blikne (nebo se jen rozsviti] a pak se rozsviti  modra.
Zatuhnuti myslim to, ze pak uz preruseni na TIM2 vubec nevznikne.
Blikani led je kontrolovano osciloskopem (pokd by bylo jen kratke). 
Proc ale tento problem nevznika na kanalu 2?

Na vstupy vsech ctyr kanalu  TIM2 mam privedeny signaly odpovidajici vystupu
RC prijimace (jen jsou generovany PWM kanaly z TIM3). 

HUDA

void TIM2_IRQHandler(void)
 {
  pok = TIM2->SR;
  TIM2->SR = (uint16_t)~pok;                               //! Clear TIM2 Capture interrupt flag

#ifdef TEST1
  if ((pok & TIM_IT_CC1) == TIM_IT_CC1)
#else
  if ((pok & TIM_IT_CC2) == TIM_IT_CC2)
#endif
    {
#ifdef TEST1
     STM32vldiscovery_LEDToggle(LEDGREEN);
     if ((GPIO_PORT->IDR & GPIO_PinSource5) == GPIO_PinSource5)
       (data)->start = TIM2->CCR1;
      else
       (data)->konec = TIM2->CCR1;
#else
     if ((GPIO_PORT->IDR & GPIO_PinSource1) == GPIO_PinSource1)
       (radio)->start = TIM2->CCR2;
      else
       (radio)->konec = TIM2->CCR2;
#endif
     (data)->value = (data)->konec - (data)->start);
    }
   else
    {
     STM32vldiscovery_LEDToggle(LEDBLUE);
    }

 }




______________________________________________________________
> Od: "Jan Waclawek" <konfera na efton.sk>
> Komu: "HW-news" <hw-list na list.hw.cz>
> Datum: 22.04.2019 01:02


> Předmět: Re: STM32F051 a Input Capture
>
>> 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).
>
>_______________________________________________
>HW-list mailing list  -  sponsored by www.HW.cz
>Hw-list na list.hw.cz
>http://list.hw.cz/mailman/listinfo/hw-list
>
>


Další informace o konferenci Hw-list