打印

采用PIC单片机CCP来作频率发生器的一种方法:

[复制链接]
3327|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yuntian|  楼主 | 2011-7-15 10:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
采用PIC单片机CCP来作频率发生器的一种方法:
由于一个项目需要驱动步进电机,主控用的是18F单片机,需要产生一个脉冲驱动信号,想来想去,觉得用CCP模块来做
还是比较合适.
由于步进电机不能突然加减速,需要一个加速过程,这样一来,加减速必然要用频率的变化来控制
方法为:采用两CCP,其中一个CCP设为比较-输出翻转模式,CCP比较值设为=0X0001,这样TMR1只要计数到1时,
输出都会
翻转,而用另一个CCP来复位TMR1,比如CCP2,若CCP2设为2,则TMR1累加到2时,TMR1被复位,当CCP2的比较器值从2-65535时,
输出频率将按倒数关系变化.从而达到自动输出指定频率而不需占用中断的目的.

若需要变更输出频率,只要改CCP2的寄存器值即可,相当方便.当最高频率为5K时,最低频率为5Hz.
CCP 频率 步差
50---6250Hz  -6154 高频段
51---6126Hz  124
52---6009Hz  117
53---5895Hz  114
54---5786Hz  109
55---5681Hz  105
56---5580Hz  101
57---5481Hz  99
58---5387Hz  94
59---5296Hz  91
60---5208Hz  88
61---5122Hz  86
62---5040Hz  82
63---4960Hz  80
64---4882Hz  78
65---4807Hz  75
179---1745Hz  10 中频段
180---1735Hz  10
181---1726Hz  9
182---1716Hz  10
183---1707Hz  9
184---1698Hz  9
185---1688Hz  10
186---1680Hz  8
187---1670Hz  10
188---1661Hz  9
189---1653Hz  8
190---1644Hz  9
191---1635Hz  9
192---1627Hz  8
193---1618Hz  9
194---1610Hz  8
195---1602Hz  8
12501---24Hz  1 低频段
12821---23Hz  1
13514---22Hz  1
13889---21Hz  1
14706---20Hz  1
15626---19Hz  1
16130---18Hz  1
17242---17Hz  1
17858---16Hz  1
19231---15Hz  1
20834---14Hz  1
21740---13Hz  1
23810---12Hz  1
25001---11Hz  1
27778---10Hz  1
31251---9Hz  1
33334---8Hz  1
38462---7Hz  1
41667---6Hz  1
由上表可看出,低频段,步差只有1HZ,在高频段100HZ,驱动步进马达足够了.
唯一不好的是当定入CCP2寄存器时,因为高低CCPH,CCPL不是同时写入,如从0x123变更到0x235,时若先写入2高
字节,而低字节为0x23,若刚好TMR1计数到0x223,那么将会引起TMR1复位,

而此时输出率率会产生跳跃,为避免这
种情况,采用了一个笨办法,强制TMR1ON=0,关闭TMR1再定入CCP2寄存器值,写完后再打开TMR1,虽然会引起TMR1停
几个指令周期,但这个时间相当短,也就略过不计了,但最好是把GIE也关闭,因为若TMR1ON=0时,碰巧来了中断,
那么就会使TMR1停止比较长的时间了.

或许还要更好的方法,权当抛砖引玉,各位探讨下看.
沙发
yuntian|  楼主 | 2011-7-31 08:18 | 只看该作者
有点奇怪,有时输出频率会有中断,比如中间突然间隔100MS左右没有输出频率.还没找到原因.

使用特权

评论回复
板凳
yewuyi| | 2011-7-31 21:19 | 只看该作者
有点奇怪,有时输出频率会有中断,比如中间突然间隔100MS左右没有输出频率.还没找到原因.
yuntian 发表于 2011-7-31 08:18


啥都别说了,先找出这个话题再说吧.

使用特权

评论回复
地板
yuntian|  楼主 | 2012-1-3 15:51 | 只看该作者
忘了把TMR1清零了.

使用特权

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

本版积分规则

29

主题

178

帖子

1

粉丝