TI中文支持网
TI专业的中文技术问题搜集分享网站

TMS320F28004x的中断问题

我正在使用TMS320F280045的芯片,其中有1个ADCA1(INT1.1)中断,发现有时会被TIMER2(INT14)打断。根据手册,ADCA1的优先级为5, 而TIMER2的优先级为18,为什么高优先级中断会被低优先级中断打断呢?这个是芯片本身的问题还是应用的问题呢?

Thanks

Teasir Chen

mangui zhang:相关帖子请参考
e2echina.ti.com/…/119601

我正在使用TMS320F280045的芯片,其中有1个ADCA1(INT1.1)中断,发现有时会被TIMER2(INT14)打断。根据手册,ADCA1的优先级为5, 而TIMER2的优先级为18,为什么高优先级中断会被低优先级中断打断呢?这个是芯片本身的问题还是应用的问题呢?

Thanks

Teasir Chen

Teasir Chen:

回复 mangui zhang:

谢谢你的答复!但是我的问题跟他们的还不一样,我的是高优先级的ADCA1中断,被低优先级的TIMER2 打断了。ADCA1中断进入后,代码还没执行完毕,TIMER2的时间到了,结果被它打断了。根据手册,ADCA1的优先级为5, 而TIMER2的优先级为18,现在的情况刚好反了,这是什么原因呢?

我正在使用TMS320F280045的芯片,其中有1个ADCA1(INT1.1)中断,发现有时会被TIMER2(INT14)打断。根据手册,ADCA1的优先级为5, 而TIMER2的优先级为18,为什么高优先级中断会被低优先级中断打断呢?这个是芯片本身的问题还是应用的问题呢?

Thanks

Teasir Chen

Susan Yang:

回复 Teasir Chen:

您现在是否使用了TI-RTOS?

您可以看一下 www.ti.com.cn/…/sprui33b.pdf 的 Table 3-4. CPU Interrupt Vectors

CPU TIMER2 Interrupt (for TI/RTOS use)

另外能否分享一下您的ISR代码?您使用了中断嵌套?

E2E上有一个类似的帖子,您也可以先看一下

e2e.ti.com/…/502545

我正在使用TMS320F280045的芯片,其中有1个ADCA1(INT1.1)中断,发现有时会被TIMER2(INT14)打断。根据手册,ADCA1的优先级为5, 而TIMER2的优先级为18,为什么高优先级中断会被低优先级中断打断呢?这个是芯片本身的问题还是应用的问题呢?

Thanks

Teasir Chen

Teasir Chen:

回复 Susan Yang:

Susan, 您好!

我没有用TI-RTOS,用的是uc OS/II,其中Timer 2用来当OS的timer ticket – 1ms时钟,ADCA1用来做ADC采样和控制算法 – 40KHz频率。因为ADCA1中跑的是实时性控制代码,不能被延时或被其它中断打断。但是希望ADCA1能打断其它的中断,包括Timer 2。下面分别是ADCA1和Timer 2的部分代码:

1. ADCA1中断代码

#pragma CODE_SECTION(adc_ISR, ".TI.ramfunc");interrupt void adc_ISR(void){    DINT;    if(!OSRunning)    {      AdcaRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;      PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;      return;    }        // 用户代码,这里没粘出来    // ……        PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;    asm(" NOP");    EINT;}

 

2. Timer 2中断代码

.page.text  .global _OSTickISR_OSTickISR:  .ref _OSTimeTick  .ref _OSIntEnter  .ref _OSIntExit  .ref _OSTCBCur  .ref _PieCtrlRegs  .ref _OSIntNesting  .ref _OSTestIOHigh  .ref _OSTestIOLow  PUSH    RPC  PUSH    AR1H:AR0H  PUSH    XAR2  PUSH    XAR3  PUSH    XAR4  PUSH    XAR5  PUSH    XAR6  PUSH    XAR7  PUSH    XT  ASP  PUSH    DP:ST1  CLRC    PAGE0,OVM  CLRC    AMODE;  MOVW      DP,#_OSIntNesting;  INC       @_OSIntNesting      LCR    _OSIntEnter  LCR    _OSTimeTick  LCR    _OSIntExit  POP     DP:ST1  NASP  POP     XT  POP     XAR7  POP     XAR6  POP     XAR5  POP     XAR4  POP     XAR3  POP     XAR2  POP     AR1H:AR0H  POP     RPC  IRET.end

我看了一下你给的这个帖子 e2e.ti.com/…/502545,觉得问题跟我的有点类似。如果ADCA1中不想被其它中断打断,用 IER &= xxx 屏蔽其它中断就可以了,对吗?

还有中断在运行的时候,高优先级的也可能会被低优先级的打断,只是同时有2个或多个中断在等待的时候,才会排优先级,我的理解对吗?

 

Thanks

Teasir Chen

赞(0)
未经允许不得转载:TI中文支持网 » TMS320F28004x的中断问题
分享到: 更多 (0)