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.

[参考译文] TMS320F28069:带有 PIEIER1和 PIEIER10的 ADC 中断

Guru**** 2578945 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/898703/tms320f28069-adc-interrupt-with-pieier1-and-pieier10

器件型号:TMS320F28069

大家好、

我的测试目的是 CLA 任务1和 ADC_ISR 可由 ADCINT1同时触发。 然后 CLA 任务1完成将触发 CLA_ISR。

我对 PieCtrlRegs 中的 PIEIER1和 PIEIRE10感到困惑。

在 PIE 中断矢量表中、我发现 ADCINT1可以分配到下图中的 INT1.1或 INT10.1:

使用 INT1.1可以实现我的目标、但将替换为 INT10.1将转到 ISR_ILLEGCE

如下所示的使用代码 :

工作条件:

EALLOW;

PieVectTable.ADCINT1 =&ADC_ISR;

PieVectTable.CLA1_INT1 =&Cla1_isr1;

PieCtrlRegs.PIEIER1.bit.INTx1 = 1;   //ADCINT1

PieCtrlRegs.PIEIER11.bit.INTx1 = 1;  //CLA1_INT1

EDIS;

IER |= M_INT1;

IER |= M_INT11;

EINT;

ERTM;

不可行的条件:

请按以下方式替换代码

PieCtrlRegs.PIEIER1.bit.INTx1 = 1; => PieCtrlRegs.PIEIER10.bit.INTx1 = 1;

IER |= M_INT1; => IER |= M_INT10;

(在0x0001至0x0200的中断替换中的 PieCtrlRegs.PIEACK)

其他条件相同。

那么、什么可能会导致 ISR_ILLEAGE。 有没有我没有注意到的东西吗?

谢谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我认为您尚未将 ISR 映射到 PIE 矢量表中。  您有:

    PieVectTable.ADCINT1 =&ADC_ISR;

    这会将 ISR "ADC_ISR"映射到 PIE1.1。  如果您打开文件"F2806x_PieVect.h"、则向下滚动到组1中的第一个矢量名称、您应该会看到 ADCINT1。  如果您继续向下滚动到组10中的第一个矢量名称、您将看到其他内容、可能是"rsvd10_1 "。  您不会将任何内容映射到该矢量。 尝试:

    PieVectTable.rsvd10_1 =&ADC_ISR;

    此致、

    Richard

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Richard、

    我对此的理解 是错误的。 非常感谢。