打印
[DSP编程]

CpuTimer0Regs.PRD.all = 0x00005B8D这句话代表什么?

[复制链接]
3942|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sunsundsp|  楼主 | 2013-7-26 09:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
zhangmangui| | 2013-7-26 10:03 | 只看该作者
定时器中有0、1、2,每个定时器寄存器组有计数寄存器(TIM :TIMH,32位),周期寄存器(PRD:PRDH,32位),控制寄存器(TCR,16位),保留(16位),预定标寄存器(TPR:TPRH,32位)。

     TIMH:TIM,保存当前计数器的值;

     PRDH:PRD,保存32位周期值;

     TCR,控制功能,主要控制定时器的种种状态;

     TPRH:TPR,详细的说:

                   TPR   PSC(8位):TDDR(8位)

                   TPRH PSCH(8位):TDDRH(8位)

                   PSCH:PSC保存当前定时器预定标值,每个定时器源时钟周期PSCH:PSC递减1,递减到0时,即是一个定时器周期,

           将TDDRH:TDDR中的值重新装载,并且定时器计数器减1;

                   TDDRH:TDDR,CPU定时器分频寄存器,每隔(TDDRH:TDDR+1)个定时器源时钟周期,定时器计数器减1;

                    注:当TRB被软件置1时,PSCH:PSC也会重新装载;所以一个定时器计数周期完成,周期=定时器源时钟周期X(TDDRH:TDDR+1)X(PRDH:PRD+1)

看看  计算方法与你的时钟周期等有关系

使用特权

评论回复
板凳
sunsundsp|  楼主 | 2013-7-26 11:02 | 只看该作者
zhangmangui 发表于 2013-7-26 10:03
定时器中有0、1、2,每个定时器寄存器组有计数寄存器(TIM :TIMH,32位),周期寄存器(PRD:PRDH,32位) ...

问题一:时钟源周期是不是就是1/SYSCLKOUT?
问题二:TDDRH:TDDR的值又该在哪看呢??
问题三:注意上面(TDDRH:TDDR)=0x0080 的含义是:一个定时器时钟周期由129 个时钟源周期(1/SYSCLKOUT)组成。定时器TIM 间隔129 个时钟源周期即一个定时器时钟周期减1,减到0 时再装入周期值PRD。若设置(TDDRH:TDDR)=0x0000,即一个定时器时钟周期等于钟源周期(1/SYSCLKOUT),并且设置PRD=40×1(不可太小),示波器(量程:2 V,250 ns)一个正脉冲的周期为250 ns 左右,这与理论值相符(40×6.33=253 ns);再设置(TDDRH:TDDR)=0x0001,PRD 不变,示波器一个正脉冲的周期为500 ns 左右。  
这是我在网上看到的资料,但我觉得那个理论值计算那里有点问题,1/150不是应该是6.67,怎么会有6.33??

使用特权

评论回复
地板
sunsundsp|  楼主 | 2013-7-26 11:13 | 只看该作者
zhangmangui 发表于 2013-7-26 10:03
定时器中有0、1、2,每个定时器寄存器组有计数寄存器(TIM :TIMH,32位),周期寄存器(PRD:PRDH,32位) ...

Timer->RegsAddr->TPR.all = 0;
    Timer->RegsAddr->TPRH.all = 0;
这两句语句的意思是将TPR:TPRH设为0了吗?

使用特权

评论回复
5
zhangmangui| | 2013-7-26 12:13 | 只看该作者
sunsundsp 发表于 2013-7-26 11:13
Timer->RegsAddr->TPR.all = 0;
    Timer->RegsAddr->TPRH.all = 0;
这两句语句的意思是将TPR:TPRH设为0 ...

( ⊙ o ⊙ )是的  这两句是将两个寄存器清零
关于计算定时长度   你应该在了解一下DSP里面的时钟
首先是倍频   然后是分频   每个模块都有自己的时钟频率   都可以进行配置
模块还有自己的时钟限制   具体计算还望你慢慢研究

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

29

主题

122

帖子

2

粉丝