[elektro] STM32F446 TIMER3 interrupt

r3flow zoltan.nagy at vivor.hu
Tue Jul 31 21:03:27 CEST 2018


Régen olvastam végig az ARM.com-ot a cortex doksit de van olyan emlékem,
hogy külön felhívták a figyelmet arra hogy M3/M4 esetén ha túl gyorsan
kilép az ISR akkor duplázás történhet, mert a memória írás ami törölné
az interrupt bitet az írás cache miatt nem történik meg az ISR-ből
kilépés előtt, emiatt a CPU újrahívja az ISR-t.

http://www.keil.com/support/docs/3928.htm

Üdv,
Z.


On 2018-07-31 20:23, Bali Zoltan wrote:
> 
> Hali!
> 
> Itt a már lekopasztott kód, ami most fut is valójában.
> 
> void TIM3_IRQHandler(void)
> {
>   /* USER CODE BEGIN TIM3_IRQn 0 */
>   GPIOC->BSRR = 1<<10;
>   /* USER CODE END TIM3_IRQn 0 */
> //HAL_TIM_IRQHandler(&htim3);
>   /* USER CODE BEGIN TIM3_IRQn 1 */
>   if(TIM3->SR & TIM_SR_UIF) {
>   }
>   TIM3->SR  = TIM3->SR & ~TIM_SR_UIF;
>   GPIOC->BSRR = 1<<(10+16);
>   /* USER CODE END TIM3_IRQn 1 */
> }
> 
> F446, 48MHz, maximális optimalizálással, mindenféle prefetch
> varázslás kikapcsolva, csak UIE-vel, kétszer fut le az interrupt.
> A csatornák PWM-re vannak állítva, belső órajel, semmi különleges.
> Optimalizálás nélkül, egy interrupt van csak, mint a másik(F051)
> képen. Persze, ekkor  hosszabb ideig magas a billentett port.
> Lehet túl rövid az IT futása? Ha bent volt a végrehajtási
> saját kódom is, akkor időnként duplázott csak. Azután kezdtem
> lekopasztani, miután az a gyanúm támadt, hogy a futási idővel van
> összefüggésben. Speciel most, pont kéne, hogy minél rövidebb legyen
> az IT... Volt már olyan változat, hogy SR regiszter simán nullázva.
> 
> http://www.kepfeltoltes.eu/images/hdd1/2018/07/31/14620180731173944.png
> 
> 
> Átraktam a kódot, F051-re, ugyanazzal(remélem, mert Cube MX-el
> generáltam újra). Ez max optimalizálással sem dupláz, a fenti IT kóddal-
> 
> http://www.kepfeltoltes.eu/images/hdd1/2018/07/31/49920180731172830.png
> 
> F446-on még az IT prioritásokat vissza vettem mindet 4-re, csak a TIMER3
> van 0-án.
> 
> Errátát néztem, semmi timer, IT vonatkozás.
> 
> Ötlet? Tapasztalat?
> 
> Köszi
> 
> Üdv.  Zoli
> 
> -----------------------------------------
>          elektro[-flame|-etc]



More information about the Elektro mailing list