Loading...
 
Skip to main content

System Workbench for STM32


false condition if statement getting executed inside ISR

India

I'm sorry Bernard, My bad.
You were right 😊
I added a counter to watch how many time the ISR was executed. I noticed that code was interrupted anywhere from 15 to 100 times every time the signal switched. What caused me to believe it wasn't a bouncing issue was that the exact same code ran perfectly well on my STM32F411 but behaved funny on the F303 Motor Control Board (Obviously because of the speed of operation). I do have debouncing hardware and my scope however doesn't show any noise at a fair scale. I believe I can't do much to the hardware.
Is there a way I can control the Interrupt Handler ?
I would like prevent interruption for 1µs after a trigger detection.

France

The simplest way to go, as you measure time between the last interrupt, is to just ignore any interrupt occuring less than x µs after a previous interrupt. Thus the first switch will be taken into account, then all bounce IRQs will be ignored waiting for at least x µs without any interrupt.

If you have ONLY one GPIO generating interrupts on the port where you connect the EXTI interrupt, then you may disable this IRQ in the NVIC, arm a timer for x µs, then re-enable teh EXIT interrupt in the NVIC when the timer expires; that is a bit more complex, but will cost less CPU cycles...

Bernard (Ac6)