[国产单片机] 怎样设置松翰SN8P2711A的PWM频率?

[复制链接]
 楼主| lyklyk 发表于 2009-7-11 11:15 | 显示全部楼层 |阅读模式
谁用过SN8P2711A的PWM?我只能做到1MHz,500KHz,250KHz,125KHz,62.5KHz等这些频率,怎样做才能设置出200KHz,195KHz,240KHz这些频率的PWM?请指教。
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吧

外部震荡应该不止这几个频率的
 楼主| lyklyk 发表于 2009-7-13 08:17 | 显示全部楼层

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

是的,是用内部16M,我看到别人也是用内部16M做出228K的PWM。可做不出来,希望大家多多指点。
t.jm 发表于 2009-7-14 11:18 | 显示全部楼层

可以的.

P60有说明,
设置TC0C,TC0R;
t.jm 发表于 2009-7-14 11:44 | 显示全部楼层

Sorry,搞错了.

 楼主| lyklyk 发表于 2009-7-15 14:18 | 显示全部楼层

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

问了松翰代理商,的确是做不到的 
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是可以的.


 楼主| lyklyk 发表于 2009-7-16 15:23 | 显示全部楼层

回复9楼: 有一个方法

是可以肯定用内部16M的频率,昨天打电话到松翰深圳技术服务,答复是不能用硬件做频率为228K的PWM,看样子只有用软件做了。
戒指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输出的频率就会提高。
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的频率输出
哪位高手指点一下迷津,感激万分了。
mzh1668 发表于 2016-3-23 15:15 | 显示全部楼层
我们可以帮你做,可能没有哪么精准
您需要登录后才可以回帖 登录 | 注册

本版积分规则

14

主题

115

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部

14

主题

115

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部