|Subject:||Re: [Paparazzi-devel] Libopencm3 - STM32-F1 change interrupt priority|
|Date:||Wed, 21 Aug 2013 10:34:57 +0200|
RegardsWhat do you think of that? Did you have similar issues with the timing?The possible solution seems to be to set explicitly isr priority on each peripheral (maybe an issue for github?).if all the configurable interrupts have the same (highest) priority, then there is no way to move the more important interrupts (e.g. UART with lots of data coming through) any higher.According to Cortex M3 programming manual, "If software does not configure any priorities, then all exceptions with a configurable priority have a priority of 0."Seems to be caused by interrupt priorities (e.g. excessive traffic on one of the UARTS can delay the main loop etc). The function nvic_set_priority() which mentioned Esden is used (master) only on a few peripherals (i2c, spi, adc, ppm), most often setting the priority to 0.I am using PERIODIC_FREQUENCY=512Hz, and the frequency moves around 30%, and occasionally bounces down to ~300Hz. If necessary, I can post video from the scope if needed.I made a simple module with a periodic function which toggles an LED, ran it at PERIODIC_FREQUENCY and then plugged in a scope to see if the LED switching has a constant frequency.Hi all,I have a question about timing on Lia 1.1 (stm32f1). I recently noticed that the timing on the MCU is not solid.
MOn Mon, Apr 22, 2013 at 10:14 AM, Michal Podhradsky <address@hidden> wrote:
MHi Esden,thanks for clarification!
On Fri, Apr 19, 2013 at 4:01 PM, Piotr Esden-Tempski <address@hidden> wrote:
I think you are mistaking the vector table slot numbers there for priorities. These are the positions of the function pointers inside the vector table. If you change those numbers then things will obviously explode.
(just for reference, here the defines get their weak functions assigned: sw/ext/libopencm3/lib/stm32/f1/vector_nvic.c, and here the vector is being put together: sw/ext/libopencm3/lib/cm3/vector.c)
IRQ priorities are set using the NVIC_IPR register, or using nvic_set_priority function.
I hope this helps.
P.S. both files nvic.h and vector_nvic.c are generated using the sw/ext/libopencm3/scripts/irq2nvic_h from sw/ext/libopencm3/include/libopencm3/stm32/f1/irq.yaml so you should not edit those files by hand.
On Apr 19, 2013, at 2:12 PM, Michal Podhradsky <address@hidden> wrote:
> Hi folks,
> I have a question about interrupt priorities for STM32F1 chip (Lia 1.1/Lisa_M 2.0).
> In sw/ext/libopencm3/include/libopencm3/stm32/f1/nvic.h are defined priorities for user interrupts. However, if I try to change the priority for example for NVIC_USART2_IRQ (let's say make it higher priority than NVIC_USART1_IRQ), the code compiles, but then the program hangs up instantly in usart_isr interrupt routine (debugged with JTAG).
> Can the priorities be set somewhere else or is it a feature to have "hardcoded" priorities?
> Paparazzi-devel mailing list
Paparazzi-devel mailing list
Paparazzi-devel mailing list
|[Prev in Thread]||Current Thread||[Next in Thread]|