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

DM6437的Timer0的定时时间乱掉

32-Bit Timer Unchained Mode下,想产生一个10秒的中断,发现每次中断产生的时间都不一样,代码如下:

void int_init()

{  CSR = 0x100;        //disable all interrupts  

IER = 1;            //disable all interrupts except NMI   

ICR = 0xffff;       //clear all pending interrupts  

ISTP = 0x10800000;   //set the ISTP equals the INT address in the .cmd

 INTC_EVTCLR0 = 0xFFFFFFFF;

 INTC_EVTCLR1 = 0xFFFFFFFF;

 INTC_EVTCLR2 = 0xFFFFFFFF;  

INTC_EVTCLR3 = 0xFFFFFFFF;    

 INTC_EVTMASK0 = 0xFFFFFFEF;        //Timer0-TINT12 is combined  

INTC_EVTMASK1 = 0xFFFFFFFF;    

INTC_EVTMASK2 = 0xFFFFFFFF;    

 INTC_EVTMASK3 = 0xFFFFFFFF;    

 INTC_INTMUX3 = 0x00040000; //map Timer0-TINT12 to INT14  

TIMER0_TIM12 = 0x00000000;  

TIMER0_PRD12 = 0x1017DF80; //27M时钟,10S计时  

TIMER0_TGCR = 0x00000005;  

TIMER0_TCR  = 0x00000080;//The timer is enabled one time. The timer stops after the counter reaches the period.

IER |= 0x00004002; //enable int14-timer0     

CSR=0x01 ;  // enable all interrupts 

}

以上代码没有产生期望的十秒中断,在中断产生时查看输出的TIMER0_TIM12的值每次都不一样。TIMER0_PRD12这个值是怎么计算的?

Shine:

Emulation Management Register (EMUMGT)寄存器是怎么配的? 如果是Free模式的话, 因为你用的是continous计时模式, 所以即使仿真器断点停下了, timer还是在计数的.  TOUT管脚输出信号频率是多少?

devin chen1:

回复 Shine:

 

EMUMGT 寄存器是0,我要的是10秒的计时,定时器启动到10S就发出一个中断。Tout输出等都没有去配置,都是default值0。

Shine:

回复 devin chen1:

第一次进timer中断, TIM12 count寄存器值对吗, 能计到0x1017DF80吗? 后面几次的TIM12计数器值都不对?

devin chen1:

回复 Shine:

第一次中断进入,TIM12 count寄存器值就不对,后面的中断再进入也不对。每次TIM12 count寄存器值都不一样

Shine:

回复 devin chen1:

看你的timer配置没问题. 如果能进中断的话, TIM12的值会计到PRD才会产生中断.你能配一下TOUT吗? 看看输出波形有没有什么规律? 或者你先PRD设小一点, 如10, 看能正确计数吗?

devin chen1:

回复 Shine:

设置TIM0BK为1,pin设置为Tout0L,用示波器量,发现pin被设置为Tout0L后就一直输出1.58833MHz的波形,改动PRD值都不会影响到这个波形。

PRD值不管改大改小,都不能正确的计数。

Shine:

回复 devin chen1:

参考一下PSP的timer例程吧, 正好是unchained mode, 在DM648_BIOSPSP_RELEASE_01_10_03\pspdrivers_1_10_03\packages\ti\sdo\pspdrivers\soc\dm6437\examples\timer

下载BIOS PSP Release version 1.10.03http://software-dl.ti.com/dsps/dsps_registered_sw/sdo_sb/targetcontent/psp/bios_psp/index.html

赞(0)
未经允许不得转载:TI中文支持网 » DM6437的Timer0的定时时间乱掉
分享到: 更多 (0)