智能车制作

标题: 请问什么是pwm的预分频?为什么要“预”,该怎么设置预分频寄存器呢 [打印本页]

作者: feizhu    时间: 2010-2-9 23:25
标题: 请问什么是pwm的预分频?为什么要“预”,该怎么设置预分频寄存器呢
谢谢了
作者: 法拉利    时间: 2010-2-10 11:26
个人理解就相当于二次分频一样,预分频是第一次,然后可以再分一次,提高一下精度,不分也行的。至于怎么设置,看看DG128的书就行,应该是一样的。
作者: 烙铁头    时间: 2010-2-10 14:39
从设置寄存器的角度理解:8位的寄存器,顶多能够分频1-255,(连续分频),譬如  1MHz分频至1Hz,一次寄存器设置显然不够。
作者: 1987chenwei    时间: 2010-2-23 11:07
专业术语,其实也很通俗易懂了,慢慢领会吧!
作者: jiao19880804    时间: 2010-3-17 12:41
5.3.2 PWM模块
MC9S12DG128B集成了8路8位独立PWM通道,通过设置相应控制寄存器可变成4个16位PWM通道,每个通道都有专用的计数器,PWM输出极性和对齐方式可选择,8个通道分成两组,共有4个时钟源控制。
PWM[2]主要是用于控制舵机的转向和电机的驱动。
1、通过将PWM0和PWM1级联,提高其控制精度来控制舵机的转向,由PWM1输出。在单片机总线频率为24MHz时,若设置级联PWM周期常数为60000,对应的PWM周期为20ms,PWM占空比常数为4500对应为1.5ms。改变占空比常数可以改变输出脉冲的宽度。同时为了提高舵机的响应速度使在弯道时能顺利过弯,将舵机的频率设置成10ms。
2、为了实现MC33886的正向和反向控制,用PWM2和PWM3级联,PWM6和PWM7级联,两路PWM级联来驱动电机。为提高电机的驱动能力对电机驱动频率进行了反复的调整。

最终PWM的初始化程序如下:
void pwm_init(void){
PWME=0x8A;
PWMCTL=0xB0;
PWMPRCLK=0x11;
PWMSCLA=0x01;
PWMSCLB=0x01;
PWMCLK=0xEA;
PWMPOL=0xFF;
PWMCAE=0xFF;
PWMCNT01=0;
PWMCNT23=0;
PWMCNT67=0;
PWMPER01=30000;
PWMPER23=1000;
PWMPER67=1000;
}
5.3.3 ATD模块
S12内部设置了2个10位/8位的A/D模块[2],可自行设置其转化精度和采样模式等。为了提高采样的分辨率,此次设计采用了15路AD输出。通过红外传感器采样到道路的信息,并经过ATD的模数转化,最终将结果存在相应的寄存器中,读取控制舵机的转向以及电机的速度。
其初始化程序如下:
void atd_init(void){
ATD0CTL2=0xC0;
ATD1CTL2=0xC0;
ATD0CTL3=0x02;
ATD1CTL3=0x02;
ATD0CTL4=0x8A;
ATD1CTL4=0x8A;
ATD0CTL5=0xB0;
ATD1CTL5=0xB0;
}
- 22 -
5.3.4 ECT模块
由于S12系列的MCU的定时器模块在HC12的标准定时器模块上增加了输入捕捉及脉冲累加器的功能,因而称为增强型定时器模块[2]。此次设计就用了脉冲累加和输入捕捉的功能,另外还有定时器中断的功能。
捕捉有传感器检测到的脉冲的个数,并通过脉冲累加器累加得到当前的速度值,40ms测试一次当前速度。
其初始化程序如下:
void ect_init(void){
MCCTL=0xCF;
MCFLG=0x80;
MCCNT=60000;
TCTL4=0x01;
TIOS_IOS0=0;
PBCTL=0x40;
PACN10=0x0000;
}
利用定时器进行中断反馈速度值,实时获得当前的速度。中断服务程序:
#pragma CODE_SEG NON_BANKED
void interrupt 26 ect_interrupt(void){
pulse=PACN10;
PACN10=0x0000;
MCFLG=0x80;
}
#pragma CODE_SEG DEFUALT
5.3.5时钟模块
为了提高系统的响应速度,使用单片机内部的锁相环[2]电路将外部晶振电路的16MHz通过设置SYNR,REFDV寄存器倍频到48MHz,总线时钟为24MHz。其初始化程序如下:
void crg_init(void){
SYNR=0x02;
REFDV=0x01;
while((CRGFLG & 0x08)==0 ){}
CLKSEL |=0x80;
}
作者: jiao19880804    时间: 2010-3-19 09:01
谢谢
作者: gjs1988    时间: 2010-3-23 07:36
学习了
作者: lishengfei    时间: 2010-3-23 18:56
恩,很好,受益匪浅
作者: xiaohaipolang    时间: 2010-3-23 21:48

作者: wokao    时间: 2010-3-24 17:39
楼主的精神值得学习!
作者: nigel1946    时间: 2010-3-25 14:16

作者: lansedeyueliang    时间: 2010-3-29 18:37

作者: he251125    时间: 2010-4-1 20:51
说的好啊
作者: cdschenshuai    时间: 2010-4-2 15:24
不错
作者: simon3panda    时间: 2010-4-4 15:21
牛了。。。
作者: hufangwu    时间: 2010-4-5 21:12
谢谢啊
作者: 吉人天相    时间: 2010-4-14 21:06
不懂
作者: 安杰    时间: 2010-7-4 21:19
有些代码没注释
作者: wwei    时间: 2010-8-11 00:36
回复 5# jiao19880804


    厉害厉害,获益良多
作者: 563776743    时间: 2010-9-25 18:38
所谓预分频,是为了在单片机硬件支持的范围内,尽量能够使PWM的频率获得更宽的范围。分频寄存器只有16位,如果不进行预分频的话,那么PWM最低的频率就为BUSCLK/65535,这显然是不够的,至少舵机的频率不能这样高,因此需要进行预分频。
作者: 李子yue    时间: 2010-12-11 09:58
不错不错,值得考虑学习
作者: lifenothing    时间: 2011-1-19 15:56

作者: xzdlxd    时间: 2011-2-12 16:37

作者: 似曾相识    时间: 2011-2-17 21:04
XUEXI
作者: qingpingpei    时间: 2011-2-18 19:01
回复 5# jiao19880804


          牛!!!
作者: xiaotong0202    时间: 2011-3-6 08:42
受益匪浅
作者: wang123123    时间: 2011-3-6 18:53
从设置寄存器的角度理解:8位的寄存器,顶多能够分频1-255,(连续分频),譬如  1MHz分频至1Hz,一次寄存器 ...
烙铁头 发表于 2010-2-10 14:39



    同意此回答!
作者: zhjb1    时间: 2011-3-9 07:39
两个好处:使总线频率降低更容易了——裕量更大,更主要的一点是预分频后使得PWM周期等后边的设计可以成为整数,以便控制和计算。
作者: 薨莀    时间: 2011-3-9 14:14
看看……
作者: sunshiwen_02    时间: 2011-3-15 17:30
学习了!
作者: 602    时间: 2011-11-26 09:19
嗯,好。
作者: xuekaige1990    时间: 2011-11-27 17:48
指的是cpu的外频和内存频率的比例,一般情况出现在intel的平台上
作者: chuan0506    时间: 2011-12-3 21:27
为了精确 计数简单来说
作者: 我是传奇    时间: 2011-12-13 21:13
表示我对软件的确了解不多。。。
作者: 东城    时间: 2011-12-18 17:12
看数据手册
作者: 东城    时间: 2011-12-18 17:12
楼主真是好人
作者: drting    时间: 2011-12-24 17:58
[quote][/quote]
作者: welterstar    时间: 2012-2-20 14:41

作者: liyun9999    时间: 2012-2-25 11:43
不错,学习了
作者: Damonx    时间: 2012-3-8 20:32
谢谢
作者: D_Wade    时间: 2012-3-15 18:33
法拉利 发表于 2010-2-10 11:26
个人理解就相当于二次分频一样,预分频是第一次,然后可以再分一次,提高一下精度,不分也行的。至于怎么设 ...

通熟易懂    受教啦  

作者: chenmingqiu    时间: 2012-7-28 21:19
李子yue 发表于 2010-12-11 09:58
不错不错,值得考虑学习

这个回复有深度
作者: 新人369    时间: 2012-8-3 10:49
      预分频与后分频

分频器一般都是跟计数单元一起结合使用。

预分频比是在计数单元值发生变化之前起作用(假如不用预分频时,计数器在每个上升沿到来时加1,而现在使用分频比为1:2的预分频器的话,那么必须等到两个上升沿的到来,计数器才会加1)

后分频器与预分频器功能一样,只不过是在计数器值发生改变后起作用。像TMR2的后分频器,如果不使用,计数器一但发生溢出,将立即置位标志为TMR2IF,但是如果有1:2的后分频器的话,必须两次溢出后才会置位。


系统的的时钟频率是一定的,一般比较大。对系统的时钟频率进行适当的分频,产生所需要的频率。通过特定的控制寄存器来设定!



作者: 风雨三千    时间: 2013-1-11 08:28
很棒
作者: 夏夜之星    时间: 2013-6-3 20:34
很受益。谢了楼主




欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2