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.

[参考译文] CCS/LAUNCHXL-F28069M:在 Motorware 中设置低优先级中断服务例程时出现问题-使用 lab11d 作为基础

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/569930/ccs-launchxl-f28069m-problems-with-setting-up-low-priority-interrupts-service-routines-in-motorware---using-lab11d-as-a-base

器件型号:LAUNCHXL-F28069M
主题中讨论的其他器件:MOTORWARE

工具/软件:Code Composer Studio

您好!

我已经广泛阅读过这些论坛以及有关中断的用户指南(sprugl8c.pdf)、但无法找到在 Lab11d 中触发稳定周期性 ISR 的解决方案。 控制套件有很多信息、但除了下面 提到的 timer.c 之外、MOTORWARE 没有具体示例。  

我要尝试的是在大约10毫秒的时间内触发一个较低优先级的 ISR、这不会干扰  实验11d 的 motor1_ISR 和 motor2_ISR 的执行。 我尝试使用包含 的 timer0ISR 来完成此操作、但这5ms 周期似乎会导致其他2个 ISR 的时序问题-我认为这是因为它链接到 TINT0中断、该中断的优先级高于使用的 ADC1和 ADC2中断   默认情况下触发 motor1_ISR 和 motor2_ISR。  

我想知道的是-您能告诉我是否以及如何将 TINT0的优先级更改为低于 ADC1和 ADC2 -或者用 ADC3替代 Tinto (我尝试过此操作、但无法通过修改 hal_2mtr.c 成功触发 ADC3中断)我知道、默认情况下、该中断的优先级应低于 ADC1和 ADC2。 我认为这可以解决时序问题是正确的吗? 您能否给我举一个具体例子、说明在汽车设备中执行此操作?

提前感谢!

Steven

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

    Steven、


    如果您查看 PIE 表、您将看到可以将 ADCINT1和 ADCINT2中断映射到比 TINT0更高的优先级(1.1和1.2与1.7)。 在 Motorware 中完成此操作的方法是更改 HAL_enableAdcInts()中的某些代码行

    • 在 proj_lab11d.c 中,找到 HAL_enableAdcInts()
    • 控制单击此函数以跟随它进行实例化-它应位于 hal_2mTOR.c 中
    • 在 HAL_enableAdcInts 函数中,将 PIE_enableAdcInt()的参数从 ADC_IntNumber_1更改为 ADC_IntNumber_1HP
    • 此外,将 PIE_enableAdcInt()的参数从 ADC_IntNumber_2更改为 ADC_IntNumber_2HP
    • 如果尚未启用 CPU、则为 CPU_IntNumber_1启用 CPU 中断(如果 CPU 为 TINT0启用了 INT1.7、则应该已经在代码中的某个位置执行此操作)
    • 在 proj_lab11d.c 中,找到 HAL_initIntVectorTable()并单击 control,在 hal_2motors.h 中打开它的实例化
    • 将 PIE 指针从 ADCINT1更改为 ADCINT1_HP;对 ADCINT2更改为 ADCINT2_HP

    这应该是将 motor1_ISR 和 motor2_ISR 映射到饼图可能的最高优先级的步骤

    肖恩