encoder

Fanda hudaklan na volny.cz
Pondělí Květen 15 19:54:07 CEST 2017


Tak jsem to zkusil upravit na:

void TIM1_BRK_UP_TRG_COM_IRQHandler(void)
{
  ITOC_TIM->SR = (uint16_t)~TIM_FLAG_Update;
  pokus2 = ITOC_TIM->SR;
    pokus1++;
}

a je to stejné. Ještě mne zaráží to, že se nastavují příznaky CC4IF a 
CC3IF
i když nejsou povolené. Pokus2 se po vymazani UIF vypisuje s hodnotou 
0x0018.
HUDA



------ Původní zpráva ------
Od: "Jan Waclawek" <konfera na efton.sk>
Komu: "HW-news" <hw-list na list.hw.cz>
Odesláno: 15.5.2017 19:01:53
Předmět: Re: encoder

>Aha, a este jedna vec, nepouzivajte RMW na nulovanie flagov v TIM_SR, 
>ale
>priamy zapis, t.j.
>
>ITOC_TIM->SR = (uint16_t)~(pokus2);
>
>
>Pozrite do RM - tie bity su typu rc_w0 a to nie je nahoda. Kym 
>pouzivate
>len jeden flag, je to sumafuk; ale ked ich budete pouzivat viac, tak 
>takto
>si mozete nechtiac vynulovat taky, ktory hardware prave nastavil a
>software ho este neprecital.
>
>wek
>
>
>
>----- Original Message ---------------
>>>jen přeru±ení proběhne vµdycky několikrát
>>
>>   ITOC_TIM->SR &= (uint16_t)~(pokus2);
>>
>>dajte na zaciatok ISR.
>>
>>Dovodom je oneskorenie signalu z timera do NVIC.
>>
>>wek
>
>_______________________________________________
>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