[技术问答] SC92F8462B的PWM周期计算问题?

[复制链接]
367|7
 楼主 | 2019-9-21 18:39 | 显示全部楼层 |阅读模式
想产生38khz方波,也就是周期为26us。
程序如下:
  1. /*****************************************************
  2. *函数名称:void PWM_Init(void)
  3. *函数功能:PWM初始化
  4. *入口参数:void
  5. *出口参数:void
  6. *****************************************************/
  7. void PWM_Init(void)
  8. {
  9.         P2CON|=(1<<7);//PWM5-P27
  10.         
  11.         PWMCFG &= ~(1<<5);        //PWM5输出不反向,时钟源Fosc
  12.         PWMCFG &= ~(1<<6);
  13.         PWMCFG &= ~(1<<7);
  14.         
  15.         PWMPRD  = 159;                //PWM周期=(159+1)*(1/Fpwm);
  16.         
  17.          PWMDTYB = 0X00;     //PWM3/4/5周期与占空比的低2位设置  
  18.         PWMDTY5 = 35;                //PWM0的Duty = 35/160 =7/32
  19.         
  20.         PWMCON |= 0x20;                //PWM5输出到P27
  21.         PWMCON |= 0x80;     //开启PWM
  22.   IE1 |= 0x02; //PWM中断使能
  23.   EA = 1;
  24. }
复制代码


时钟源为FOSC不分频,也就是默认为12Mhz
但是上面源码要按6MHZ算才能输出周期为26us的方波,不知道为什么?

使用特权

评论回复
| 2019-9-22 20:06 | 显示全部楼层
用的内部时钟?

8462.png

使用特权

评论回复
 楼主 | 2019-9-23 08:19 | 显示全部楼层

没晶振,用的HRC,但是PWM一直不对!

使用特权

评论回复
| 2019-9-23 10:09 | 显示全部楼层
你的计数 160 / 6M 正好等于 26uS 嘛,12M想要26uS,你的计数要用 320

使用特权

评论回复
 楼主 | 2019-9-23 11:51 | 显示全部楼层
wh6ic 发表于 2019-9-23 10:09
你的计数 160 / 6M 正好等于 26uS 嘛,12M想要26uS,你的计数要用 320

对呀,正好!所以我就奇怪,为什么莫名其妙的变成6Mhz了,但是系统是默认的24/2=12M呀?
高明不明白!

使用特权

评论回复
| 2019-9-24 09:22 | 显示全部楼层
主频是24M,如果程序中没有分频,就看option选项中有没有分频设置

使用特权

评论回复
 楼主 | 2019-9-24 11:55 | 显示全部楼层
本帖最后由 hayden0 于 2019-9-24 11:57 编辑
赛元MCU3 发表于 2019-9-24 09:22
主频是24M,如果程序中没有分频,就看option选项中有没有分频设置

我知道主频是24M!option选项里是默认的二分频,而且只有2分频,4分频,12分频。我没动,使用的是默认的2分频。所以是12M。 570035d8993d055cc0.png

使用特权

评论回复
 楼主 | 2019-9-29 14:37 | 显示全部楼层
有谁遇到过这问题?

使用特权

评论回复
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

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