在主CPU中访问受EALLOW保护的寄存器,是通过EALLOW,EDIS指令进行的,两条指令也有具体的宏定义:
那么在CLA访问这些寄存器应该怎样操作呢?看《TMS320F28004x Piccolo Microcontrollers Technical Reference Manual_RevC》说需要使用MEALLOW
,MEDIS 指令,但是没找到这两条指令的定义。请问这两两天指令应该怎样定义呢?
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.
在主CPU中访问受EALLOW保护的寄存器,是通过EALLOW,EDIS指令进行的,两条指令也有具体的宏定义:
那么在CLA访问这些寄存器应该怎样操作呢?看《TMS320F28004x Piccolo Microcontrollers Technical Reference Manual_RevC》说需要使用MEALLOW
,MEDIS 指令,但是没找到这两条指令的定义。请问这两两天指令应该怎样定义呢?
可以试一下:
#define MEALLOW __asm(" MEALLOW") #define MEDIS __asm(" MEDIS")
谢谢你的回复。
我的测试结果:
CAL的测试代码:
#pragma FUNC_ALWAYS_INLINE(LLC_PUMP_PWM)
inline void LLC_PUMP_PWM(void)
{
LLC_DRIVE_ENB();
// Pri HB drive
MEALLOW;
EPwm4Regs.TZCTL.bit.TZA = TZ_FORCE_LO; // Force EPWMxA to a low state
EPwm4Regs.TZCTL.bit.TZB = TZ_NO_CHANGE; // Do nothing, no action is taken on EPWMxB
EPwm5Regs.TZCTL.bit.TZA = TZ_FORCE_LO; // Force EPWMxA to a low state
EPwm5Regs.TZCTL.bit.TZB = TZ_NO_CHANGE; // Do nothing, no action is taken on EPWMxB
MEDIS;
}
证明
#define MEALLOW __asm(" MEALLOW")
#define MEDIS __asm(" MEDIS")
是可以的。
另外MEALLOW定义会与“f28004x_cla.h”文件中的 结构体定义中的成员“Uint16 MEALLOW:1; // 11 MEALLOW Status”冲突,编译会报错,
我是把结构体里的MEALLOW命名修改了后进行测试。
不知道TI标准的做法是怎样的,没要找到在CLA操作EALLOW保护寄存器的例程。