打印
[国产单片机]

怎样设置松翰SN8P2711A的PWM频率?

[复制链接]
8659|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lyklyk|  楼主 | 2009-7-11 11:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
sz_longyue| | 2009-7-11 21:35 | 只看该作者

改系统频率 ^_^

使用特权

评论回复
板凳
lyklyk|  楼主 | 2009-7-12 13:19 | 只看该作者

回复2楼

改系统频率只能做到1MHz,500KHz,250KHz,125KHz,62.5KHz等这些频率。

使用特权

评论回复
地板
McuPlayer| | 2009-7-12 16:52 | 只看该作者

你用的是内部RC吧

外部震荡应该不止这几个频率的

使用特权

评论回复
5
lyklyk|  楼主 | 2009-7-13 08:17 | 只看该作者

回复4楼: 你用的是内部RC吧

是的,是用内部16M,我看到别人也是用内部16M做出228K的PWM。可做不出来,希望大家多多指点。

使用特权

评论回复
6
t.jm| | 2009-7-14 11:18 | 只看该作者

可以的.

P60有说明,
设置TC0C,TC0R;

使用特权

评论回复
7
t.jm| | 2009-7-14 11:44 | 只看该作者

Sorry,搞错了.

使用特权

评论回复
8
lyklyk|  楼主 | 2009-7-15 14:18 | 只看该作者

问了松翰代理商,的确是做不到的

问了松翰代理商,的确是做不到的 

使用特权

评论回复
9
t.jm| | 2009-7-16 09:00 | 只看该作者

有一个方法:

soft PWM,在中断里用by pass(老外样叫的)实现:

B0BSET  P0.PWMOUT  ;35/70
...
B0BSET  P0.PWMOUT  ;2/70
B0BSET  P0.PWMOUT  ;1/70
B0BCLR  P0.PWMOUT  ;0/70
RETI
B0BCLR  P0.PWMOUT  ;36/70
...
B0BCLR  P0.PWMOUT  ;68/70
B0BCLR  P0.PWMOUT  ;69/70
B0BSET  P0.PWMOUT  ;70/70
RETI
如果你肯定他用的是内部振荡,频率为228K,那么他极有可能是用这个方法实现的.以前我在1MIPS的MCU实现差不多20KHZ,
而2711A最高为16MIPS,实现228K是可以的.


使用特权

评论回复
10
lyklyk|  楼主 | 2009-7-16 15:23 | 只看该作者

回复9楼: 有一个方法

是可以肯定用内部16M的频率,昨天打电话到松翰深圳技术服务,答复是不能用硬件做频率为228K的PWM,看样子只有用软件做了。

使用特权

评论回复
11
戒指320| | 2009-7-18 20:35 | 只看该作者

o

系统时钟选16m的话 在进行2分频最多能做到250kHz (sonix单片机的仿真器不能仿16m的 系统跑16m也不稳定)。通过设定计时器的预分频数,可以实现250k的 1/2n  的频率,如果不用pwm功能的话这个228k是能实现的,pwm输出口和tc0out是一个口 ,你可以选择 tc0out功能,只不过tc0out的占空比是固定的。另外的话 用软件实现也是可以的。

下面是pwm的应用,你可以参考
PWM的频率控制
PWM0输出频率与定时器时钟频率、定时器溢出边界、以及定时器初值有关, 受TC0M、TC0C寄存器控制。
(1)    定时器时钟直接影响PWM的频率,定时器时钟频率由TC0RATE[2:0]决定。可以有4种选择,分别是:
    TC0RATE[2:0]: 000=FCPU/256,001=FCPU/128,110=FCPU/4,111=FCPU/2
(2)    定时器溢出边界选择受ALOAG0、TC0OUT位的控制,通过这两位可选择四种溢出边界,其频率可在较大的范围调整。例如,ALOAG0=1、TC0OUT=0时,TC0C只取低5位有效,当低5位有全1变为全0,即由1FH增值20H时,发生溢出,PWM0OUT引脚由低电平跳变到高电平。此时,TC0R寄存器只有低5位有效。有关溢出边界、PWM最大输出频率以及TC0R/TC1R有效位之间的关系如表7.6所示。
表7.6 定时器溢出边界与PWM输出频率关系
ALOAD0
ALOAD1    TC0OUT
TC1OUT    TC0溢出边界
TC1溢出边界    TC0R/TC1R
有效位    PWM占空比范围    最大PWM频率(Fcpu=4M)    备注
0    0    FFh~00h    00000000~11111111    0/256~255/256    7.8125K    每计数256次溢出
0    1    3Fh~40h    xx000000~xx111111    0/64~63/64    31.25K    每计数64次溢出
1    0    1Fh~20h    xxx00000~xxx11111    0/32~31/32    62.5K    每计数32次溢出
1    1    0Fh~10h    xxxx0000~xxxx1111    0/16~15/16    125K    每计数16次溢出
PWM1与PWM0相似,输出频率受TC1M、TC1C寄存器控制。

(3)    定时器初值对PWM0输出频率影响
在使用PWM功能时,并不妨碍定时器中断的使用。同样以PWM0输出为例,在使能PWM0输出的同时也可以使能定时器TC0中断功能。利用这一特点,可以在定时器TC0中断服务程序中给TC0C赋一初值,定时器溢出的时间就被缩短了,PWM输出的频率就会提高。

使用特权

评论回复
12
snxhenry| | 2016-2-23 11:23 | 只看该作者

我设置2711的PWM输出时,为什么TC1OUT和ALOAD1的值一定要设置为00,改为其他值后就没有输出了。
        PWM_OFF ();
        TC1M = 0x60;               
        TC1R =128;            
        FPWM1OUT = 1;
        FTC1ENB = 1;
这样P5.3脚就有约1K的频率输出。
当改为TC1M = 0x64;时P5.3脚就没有波形输出了。是什么回事呢?
我想要100KHz的频率输出
哪位高手指点一下迷津,感激万分了。

使用特权

评论回复
13
mzh1668| | 2016-3-23 15:15 | 只看该作者
我们可以帮你做,可能没有哪么精准

使用特权

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

本版积分规则

14

主题

114

帖子

0

粉丝