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

tms470芯片HET模块中断问题

用HCG生成的代码,配置如下图所示

我DEBUG时,PIN3的PWM波形正常,

但在void hetLowLevelInterrupt(void)以及void hetHighLevelInterrupt(void)函数中均设置断点时,结果断点均没有触发。

同样的情况发生在设置Edge及Cap时,均无法进入HET高低中断。。。我设置的时钟中断均能正常进入。

请问还需设置哪里才能正常的进入HET的中断?

forever one:

另我也在初始化后调用了     pwmEnableNotification(pwm0, pwmEND_OF_PERIOD);

还是不能进入中断,请帮忙看看,谢谢!

Renton:

回复 forever one:

Hi Forever,

    有没有打开CPU的全局中断呢?

    如果使用的是CCS的话,直接调用编译器的内嵌函数_enable_interrupts();就可以了。

forever one:

回复 Renton:

RTI中断能正常进入,分别设置了RTI的compare0,1,2三个中断,我用的是CCS4.1.3,找不到_enable_interrupts();

开始时已执行了void nestEnable(void) { vimREG->NESTCTL = 0x0AU;}函数,

且vimREG->REQMASKSET0也配置正常,就是无法进入HET的中断,还请支招,谢谢!

forever one:

回复 Renton:

确实如你所描述的,我将HETRAM调整后就可以中断了。

另还想请教一个问题,如第一张图所示我产生的PWM波形周期是1000us,但实际产生的波形周期却是4倍4000us。

用RTI模块时,时钟定时是准确的,就是HET的时钟不准,不知为何。这个是HET的配置图,帮忙分析下吧,谢谢了!

Renton:

回复 forever one:

Hi Forever,

    这个可能是晶振的设置不对造成的吧。

    在Oscillator选项卡里面,默认是16MHz的晶振,是不是你的板子上使用了4MHz振荡器?

forever one:

回复 Renton:

我使用的是16M的晶振,RTI的时钟是准的

Renton:

回复 forever one:

Hi Forever,

    抱歉刚没注意你的描述。

    这样的话,可能要仔细看一下设置了。

    如果能够确认其他HALCoGen内部的设置(clock tree, oscillator, het clock等)都没有问题的话, 我们仔细看一下HET的代码吧。

    PWM0的周期对应的更新指令是第42条指令,你可以打开het.c源文件来查看:

        const hetINSTRUCTION_t hetPROGRAM[] 这个数组的内容。

    找到第42条指令,如图:

    

    这里的Data段,319872U就相当于比较寄存器的值。

    我们需要把它右移7bit,得到真正的(周期值 – 1)。

    319872U >>7U = 2499

    周期是2499+1= 2500个LR clock.

    根据你前面的描述,你的LR Clock设置为400ns。

    即周期为1000us。

    所以,请你看一下,是不是这个数字有问题?如果不是319872U或者比较接近的值,那么说明这个值错了。

Renton:

回复 Renton:

或者,进入调试状态,在Memory窗口中观察这个指令的值,第42条指令在0xff4602a0地址上。

找到后看看Data中的值是否是0x0004E180U。

运行一段时间后再观测这里的值,看看是否被改动过。

Renton:

回复 Renton:

赞(0)
未经允许不得转载:TI中文支持网 » tms470芯片HET模块中断问题
分享到: 更多 (0)