单片机/MCU论坛
直播中

张勇

7年用户 1426经验值
私信 关注

启用ADC(外部或 CSA)信道中断后,TLE9869 LIN和其他任务将被阻止是怎么回事?

我们正在通过 LIN 控制直流电动机。 我们使用 " BDRV_EMO_DC_LIN_EXAMPLE_TLE986X 软件包作为基础"。
我们还在测量通过CSA的电流。 SOC 由 timer3 OF 中断触发。
此外,我们需要使用一些 ADC 通道来读取一些外部传感器信号。
尽管当我们启用 ADC 通道的中断时,其他 CPU 任务(如 LIN)会受到影响。 LIN 完全停止了。
看来 CPU 总是陷入 ADC 中断状态。 我们尝试更改ADC时钟和采样时间,但没有成功。





回帖(1)

陈博

2024-1-24 15:55:18
根据您的描述,当您启用ADC信道中断后,TLE9869 LIN任务和其他任务会被阻止。这可能是因为ADC中断在优先级上高于其他任务。在处理器上,中断具有不同的优先级,当一个中断正在处理时,更高优先级的中断会阻断低优先级的中断。因此,当ADC中断被触发时,它可能会优先处理,从而阻断其他任务的执行。

解决这个问题的一种方法是调整中断优先级。您可以尝试将ADC中断的优先级设置为较低的优先级,以确保它不会阻断其他任务的执行。这可以通过配置中断控制器或外设来完成。具体的步骤可能会因为您所使用的开发环境和硬件而有所不同,您可以参考相关文档或手册来了解如何设置中断优先级。

另一个可能的原因是,ADC中断需要较长的处理时间,从而导致其他任务被阻塞。在处理ADC中断时,确保尽可能快地完成处理,并尽量避免在中断服务程序中执行复杂的操作。如果处理时间过长,可以考虑使用DMA(直接内存访问)来减少CPU的负载,从而提高系统的响应性能。

同时,您还提到尝试更改ADC时钟和采样时间,但没有成功。在调整这些参数时,确保它们在合理的范围内,并满足所需的系统性能要求。如果不确定如何正确配置这些参数,可以参考相关的文档或咨询芯片厂商的技术支持。

总之,要解决TLE9869 LIN和其他任务被阻止的问题,您可以尝试调整ADC中断的优先级,优化ADC中断的处理时间,并确保正确配置ADC的时钟和采样时间。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分