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.

关于TI28235的PWM中断触发问题



问题背景:利用CAN BOOTLOADER对TI28235的程序进行在线升级后,发现如果不重新上下电,就无法进入PWM中断。查找原因后,发现是PWM初始化里面没有清除对应PWM中断的ETFLG标志。

疑问(1):既然ETFLG标志一直都在,为何无法进入PWM中断程序?

疑问(2):是不是因为PWM向CPU的中断请求是一个脉冲信号?在TI技术文档中是这么描述的:If interrupts are enabled ,ETSEL[INTEN]=1 and the interrupt flag is clear,ETFLG[INT]=0, then an interrupt pulse is generated and the interrupt flag is set, ETFLG[INT]=1.     那么这个脉冲信号持续时间是多长呢?

  • 问题背景:利用CAN BOOTLOADER对TI28235的程序进行在线升级后,发现如果不重新上下电,就无法进入PWM中断。查找原因后,发现是PWM初始化里面没有清除对应PWM中断的ETFLG标志。

    疑问(1):既然ETFLG标志一直都在,为何无法进入PWM中断程序?

    疑问(2):是不是因为PWM向CPU的中断请求是一个脉冲信号?在TI技术文档中是这么描述的:If interrupts are enabled ,ETSEL[INTEN]=1 and the interrupt flag is clear,ETFLG[INT]=0, then an interrupt pulse is generated and the interrupt flag is set, ETFLG[INT]=1.     那么这个脉冲信号持续时间是多长呢?

  • 确实需要在另一个ISR生成之前清除ETFLG.INT。 该文档还说明了另一个ISR可能正在等待,并且一旦INT标志被清除就会通过。
  • 非常感谢你的回复,但是我还是没有理解。
    首先,我的ISR中断程序里面有对ETFLG.INT进行清除的操作。在正常情况下,我的ISR中断程序是可以按照PWM中断周期运行的。
    其次,我的PWM初始化程序没有对ETFLG.INT进行清除的操作。这样的话,在CAN BOOTLOADER进行升级后,无法进入中断程序。
    我不明白这个现象的原因。既然ETFLG.INT一直为1,为何不能进入ISR中断,然后在ISR中断里面就可以清除ETFLG.INT。
  • 根据上面的bit描述,仅仅因为bit是'1'不会生成ISR。 (1)当bit为“0”并且发生新的ISR触发或(2)bit已经设置 - >发生新的ISR触发 - >新的ISR设置为挂起时  -  >bit被清除 - >允许挂起的ISR 传送,才会生成ISR

    在任何一种情况下,在触发额外的ISR之前,总是需要清除flag 。 请确保关闭ePWM并在branching to updated firmware 之前清除所有挂起的ISR。或者确保在ePWM重新初始化期间清除任何挂起的INT flags 。