cancel
Showing results for 
Search instead for 
Did you mean: 

stm32h7 adc trigger on hrtim

Zain
Associate III

I am triggering adc every 100us in dma and getting data in adc callback. I am triggering adc with hrtim compare 3.

 

//hrtim cmp3 event call back

{

//reset a pin.

}

 

//adc conversion call back

{

//set a pin

}

 

for some reason the reset pin is working every cycle but set pin skips its cycle.
It means adc call back not working every cycle?
What can cause this kind of behavior?

1 ACCEPTED SOLUTION

Accepted Solutions
Zain
Associate III

I was using adc dma fifo, i was playing around and forgot to turn it off and that was causing the issue.

View solution in original post

5 REPLIES 5
SofLit
ST Employee

Hello,

To me, it could be either the NVIC priority Level or the timing 100us which is very relatively high to let ADC interrupt handler to be executed.

  1. Test 1: Decrease the timing and test.
  2. Test 2: Modify the priorities to let ADC having a priority > HRTIM NVIC prio.
To give better visibility on the answered topics, please click on "Accept as Solution" on the reply which solved your issue or answered your question.
Zain
Associate III

Should i priorities adc interrupt as high?

This just for test to understand the behavior.

But you need to do one test (1 or 2) at a time.

To give better visibility on the answered topics, please click on "Accept as Solution" on the reply which solved your issue or answered your question.
Zain
Associate III

1. I set the sub priority of adc interrupt from 0->1->2 but issue was still there.
2. I decreased the trigger time to 200us, and the issue still existed.

It is missing every 3rd call back. Now call back is when the conversion is completed, what if the conversion never started? Could we look in to this?

adc_hrtim_interrupt.jpeg

 

As it is stated above, reset states hrtim callback that triggers adc and set indicates the adc call back function.
It is missing every third call back.

Zain
Associate III

I was using adc dma fifo, i was playing around and forgot to turn it off and that was causing the issue.