看了一个例程,程序如下:
EvaRegs.T1CON.all = 0x0840; //0x0840=0000 1000 0100 0000 连续增/减计数模式 时钟预定标x/1,禁止定时器比较操作 //使用内部高速时钟HSPLCK,使用自己使能位,仿真挂起立即停止
EvaRegs.DBTCONA.all = 0x0ff0; /* 死区时间3.2us */
看到书上介绍,死区时间=DB定时器周期*DB预定标系数*CPU时钟周期。
按照这个公式,程序里面DBTCON(4:2)=100,查表知p=16,
DBTCON(11:8)=F,
那么死区时间就是15*16*6.67=1600ns=1.6us。为什么跟注释的3.2us差了1倍?
请问上面计算过程哪里出错了?谢谢。
alice wu:
补充一下,2812里面设置cpu频率150MHZ,因此cpu周期按照6.67ns计算。
看了一个例程,程序如下:
EvaRegs.T1CON.all = 0x0840; //0x0840=0000 1000 0100 0000 连续增/减计数模式 时钟预定标x/1,禁止定时器比较操作 //使用内部高速时钟HSPLCK,使用自己使能位,仿真挂起立即停止
EvaRegs.DBTCONA.all = 0x0ff0; /* 死区时间3.2us */
看到书上介绍,死区时间=DB定时器周期*DB预定标系数*CPU时钟周期。
按照这个公式,程序里面DBTCON(4:2)=100,查表知p=16,
DBTCON(11:8)=F,
那么死区时间就是15*16*6.67=1600ns=1.6us。为什么跟注释的3.2us差了1倍?
请问上面计算过程哪里出错了?谢谢。
alice wu:
专家看到我~麻烦相关知道的TI专家回复一下,谢谢!
看了一个例程,程序如下:
EvaRegs.T1CON.all = 0x0840; //0x0840=0000 1000 0100 0000 连续增/减计数模式 时钟预定标x/1,禁止定时器比较操作 //使用内部高速时钟HSPLCK,使用自己使能位,仿真挂起立即停止
EvaRegs.DBTCONA.all = 0x0ff0; /* 死区时间3.2us */
看到书上介绍,死区时间=DB定时器周期*DB预定标系数*CPU时钟周期。
按照这个公式,程序里面DBTCON(4:2)=100,查表知p=16,
DBTCON(11:8)=F,
那么死区时间就是15*16*6.67=1600ns=1.6us。为什么跟注释的3.2us差了1倍?
请问上面计算过程哪里出错了?谢谢。
alice wu:
回复 Joey Mao:
问题解决了,非常感谢,查完程序发现,HSPCLK确实设置的是75M。
SysCtrlRegs.HISPCP.all = 0x0001;//75m