Chinaunix首页 | 论坛 | 博客
  • 博客访问: 107169
  • 博文数量: 26
  • 博客积分: 1060
  • 博客等级: 少尉
  • 技术积分: 300
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-04 10:32
文章分类

全部博文(26)

文章存档

2013年(1)

2011年(21)

2010年(4)

分类: 嵌入式

2011-09-19 20:09:34


细致看了下手上2440的BSP里的PWM驱动,和GPIO驱动一样,需要知道PWM寄存器的作用才好办事。总结下觉得有用的资料。

对于一个定时器来说,其时钟源输入频率一般不变,即TCFG0(定时器预分频值)和TCFG1(定时器分割值)的值设定后就不需要改变,这样对于PWM提供了一个稳定的时钟源。的转速与电机两端的电压成比例,而电机两端的电压与控制波形的占空比成正比,因此电机的速度与占空比成比例,占空比越大,电机转得越快。系统中PWM脉冲频率就由TCNTBn决定,PWM脉冲宽度值则由TCMPBn的值来决定,而占空比即为TCMPnTCNTn如果要使电机转速下降,即得到一个比较低的PWM脉宽输出值,可以减少TCMPBn的值;要使电机转速增加,即得到一个更高的PWM的输出值,可以增加TCMPBn的值。由于双缓冲器的特性,下一个PWM周期的TCMPBn值可以通过ISR(中断服务程序)或其他手段在当前PWM周期中低电平时的任何一点写入,即在程序中可以通过中断重新设定TCMPBn的值来改变电机的转速缓冲区TCMPBnTCNTBn的值不一定等于这个周期的TCMPnTCNTn的值,但一定是TCMPnTCNTn的下一个周期的值。

 

 

 

定时器的工作原理

1设定TCMPBnTCNTBn两个寄存器,它们表示定时器n的比较值,初始计数值;

2、启动定时器n通过设置TCONTCMPBnTCNTBn的值被装入TCMPnTCNTn在定时器n的工作频率下,TCNTn开始减1计数,其值可以通过TCNTOn寄存器读取;

3TCNTn的值等于TCMPn的值时,定时器n的输出管脚TOUTn反转;TCNTn继续减1计数;

4TCNTn的值到达0时,其输出管脚TOUTn再次反转,并触发定时器n的中断(如果中断使能);

5如果在TCON寄存器中将定时器n设为自动加载,则TCMPB0TCNTB0寄存器的值被自动装入TCMP0TCNT0中,开始下一个计数流程。

    定时器n的输出管脚TOUTn初始状态为高电平,当TCNTn的值等于TCMPn的值、TCNTn的值等于0时都会发生反转,

    也可以通过TCON寄存器设置其初始电平,这样TOUTn的输出就完全反相了,

    通过设置TCMPBnTCNTBn的值可以设置管脚TOUT输出信号的占空比,这就是所谓的可调制脉冲(PWM),所以这些定时器又被称为PWM定时器。

 

TCON

     TCON4个作用:

     1)第一次启动定时器时,将TCNTBnTCMPBn的值装入TCNTnTCMPn中;

     2)启动、停止定时器;

     3)设置自动重载;

     4)设置TOUTn是否反转;

     30】用于定时器0

     118】用于定时器1

     1512】用于定时器2

     1916】用于定时器3

     2220】用于定时器4,没有输出引脚反转位


     
0 0——停止定时器,   1——开启定时器;

      1 1——TCNTBnTCMPBn的值装入TCNTnTCMPn中;

      2 0——TOUTn不反转,   1——TOUTn反转;

      3 0——不自动加载,   1——自动加载;


在第一次使用定时器时,需要设置1”,使TCNTBn/TCMPBn的值装入TCNTnTCMPn中。

阅读(1281) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~