This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

求助:CPUTimer0中断为何被打断?

硬件调试时发现该现象,为查找问题,CPUTimer0中每256us将GPIO18取反,通过示波器测试该引脚电平,理论上应该是512us周期的方波信号。在不使用SCIB中断时,测试正常;使用SCIB中断后,测试时发现经常出现丢失脉冲的现象,如下图红色所示。

除CPUTimer0和SCIB中断外,还用到EPWM1、EPWM2、I2CA中断,但只有SCIB中断会造成该问题。

  • 你好,TIMER0的中断优先级很高,理论上如果没有使用中断嵌套的话是不可能被打断的。你这边有其他异常情况吗?会不会是信号输出的地方发生了问题,导致测试有误?
  • 你好,补充说明一下,黄色GPIO54输入脉冲,绿色GPIO49是跟随输入脉冲同步输出的波形,也是在CPUTimer0里面做的。就是用着发现有时候会漏波,才做这个实验查找问题。一开始也是怀疑是不是硬件问题,比如输入信号并未全部检测到,所以作了跟外部信号不关联,只在CPUTimer0中内部计时输出的红色方波,可以看到,绿色出现问题时,红色也一样有问题,所以我认为是CPUTimer0中断出了问题。
  • 另外,我是使用SCI模块做了485通讯,经过测试,只要不使能SCI中断,就不出现漏波的问题。CPUTImer0或其他中断都未嵌套设计。
  • 抱歉示波器的图实在没看明白,因为好像绿色红色叠加了好几个波形。
    从芯片角度判断,Timer0的中断不可能被SCI中断打断,进入中断后,芯片默认会关掉全局中断,这个时候芯片会执行完当前的中断服务函数后,退出来,然后再处理在等待的最高优先级的中断。所以如果在中断里没有打开中断嵌套的相关设置,一般都不会被打断的。
    有没有可能是SCI的执行时间太长,导致Timer0中断延迟了?因为如果SCI的中断先到来,那么timer0的中断需要等到SCI执行完之后再执行。
  • 嗯,听了你的回答后去测试了一下,断开485通讯后就算使能了SCI也不会出现问题,确实是因为SCI执行时间太长导致,谢谢。
    那张示波器的图是我们从录得视频里面截取的,这个点捕捉到了漏波现象,不过有正常状态的残影哈。
  • 客气了,很高兴能帮到你。