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