主题 : TCMPB填什么? 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 10949
精华: 0
发帖: 4
金钱: 20 两
威望: 4 点
综合积分: 8 分
注册时间: 2009-11-22
最后登录: 2017-09-13
楼主  发表于: 2010-07-19 11:57

 TCMPB填什么?

最近做PWM,查了下资料TCMPB0:
    TCMPB0                                                 Bit                            Description Initial                                     State
Timer 0 compare buffer register      [15:0]                 Set compare buffer value for Timer 0      0x00000000
但在友善之臂给的程序里:
clk_p = clk_get(NULL, "pclk");                                    //得到pclk
pclk = clk_get_rate(clk_p);
tcnt = (pclk/50/16)/freq;                                             //得到定时器的输入时钟,进而设置PWM的调制频率

__raw_writel(tcnt, S3C2410_TCNTB(0));        //PWM脉宽调制的频率等于定时器的输入时钟  
__raw_writel(tcnt/2, S3C2410_TCMPB(0));    //占空比是50%
填充的是频率。
我不解的是TCMPB里到底是填频率还是计数值。
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
1楼  发表于: 2010-07-19 13:01
tcnt = (pclk/50/16)/freq;  

你没觉得tcnt的单位是Hz/Hz吗?
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."