我在操作cla时,遇到这样的问题:
我用300K的PWM在ZRO点触发cla,如果cla中的代码执行时间大于1/300K,那么会出现cla的中断溢出,当溢出事件发生后,这个cla任务完成后,下一个cla任务会紧跟着执行,那么这会导致触发点的偏移,这个是我不希望得到的结果,那么我想在cla中操作cla的寄存器去不触发或者丢失紧跟着的这个cla任务,保证下一个周期是在zro点触发,但是从实验看,在cla任务中操作很多保护寄存器都无法产生效果?是不是这些寄存器只能在CPU中使用?寄存器如下:
//__meallow();
//Cla1Regs.MICLR.bit.INT1 =1;
//Cla1Regs.MICLROVF.bit.INT1 =1;
//Cla1Regs.MCTL.bit.SOFTRESET =1;
//ClaRegs.MIER.bit.INT =0;
//__medis();
Seven Han:
请参考文档:http://www.ti.com/lit/ug/spruge6b/spruge6b.pdf
我在操作cla时,遇到这样的问题:
我用300K的PWM在ZRO点触发cla,如果cla中的代码执行时间大于1/300K,那么会出现cla的中断溢出,当溢出事件发生后,这个cla任务完成后,下一个cla任务会紧跟着执行,那么这会导致触发点的偏移,这个是我不希望得到的结果,那么我想在cla中操作cla的寄存器去不触发或者丢失紧跟着的这个cla任务,保证下一个周期是在zro点触发,但是从实验看,在cla任务中操作很多保护寄存器都无法产生效果?是不是这些寄存器只能在CPU中使用?寄存器如下:
//__meallow();
//Cla1Regs.MICLR.bit.INT1 =1;
//Cla1Regs.MICLROVF.bit.INT1 =1;
//Cla1Regs.MCTL.bit.SOFTRESET =1;
//ClaRegs.MIER.bit.INT =0;
//__medis();
HEHE:
回复 Seven Han:
文档中没有说明操作权限。
但是实际我在cla中操作相关寄存器并没有对CLA的其他寄存器产生影响,反而在cla当前任务跑完后产生的PIE中断中去操作,会对cla产生影响,但是实际效果并不是我想要的?
是否只有这几个寄存器地址是cpu域cla共享的寻址的?而cla寄存器只能由cpu去访问?
请帮忙查下资料看看:如果遇到当前任务的溢出,怎么能清除下一个任务,保证cla触发时间是在固定事件上。
我在操作cla时,遇到这样的问题:
我用300K的PWM在ZRO点触发cla,如果cla中的代码执行时间大于1/300K,那么会出现cla的中断溢出,当溢出事件发生后,这个cla任务完成后,下一个cla任务会紧跟着执行,那么这会导致触发点的偏移,这个是我不希望得到的结果,那么我想在cla中操作cla的寄存器去不触发或者丢失紧跟着的这个cla任务,保证下一个周期是在zro点触发,但是从实验看,在cla任务中操作很多保护寄存器都无法产生效果?是不是这些寄存器只能在CPU中使用?寄存器如下:
//__meallow();
//Cla1Regs.MICLR.bit.INT1 =1;
//Cla1Regs.MICLROVF.bit.INT1 =1;
//Cla1Regs.MCTL.bit.SOFTRESET =1;
//ClaRegs.MIER.bit.INT =0;
//__medis();
Eric Ma:
回复 HEHE:
参考我前一封回复。
ERIC