怎么PIC16F1827打开PWM功能在RA3上输出

2019-03-25 18:55发布

下面的代码能开启PWM吗?我试了好像不行

void initPWM()
{
INTCON = 0x00; //关闭总中断和外部中断
TRISA=0xFF;  //ADD BY CHEN
PR2 = 0xff;  //写入PR2寄存器设置PWM周期,PWM周期=[(PR2)+1]*4*TOSC*(TMR2预分频比)
CCP1CON = 0x3C;  //设置PWM占空比低2位为11,设置为PWM模式
CCPR1L = 0x00; //设置PWM占空比高8位
// TRISC = 0xfb;  //设置CCP1口为输出
// T2CON = 0x02;  //设置TMR2预分频为16;
        T2CON = 0x06;  //ADD BY CHEN 设置TMR2预分频为16并且打开TIMER2;
        TRISA=0;  //ADD BY CHEN
}

是否PWM功能要开中断?

此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
mzb2012
1楼-- · 2019-03-25 23:47
可以不开中断
and01
2楼-- · 2019-03-26 02:52
我现在还是没正常开启PWM?帮忙看哪里出问题了?!
非常感谢
dingzy_2002
3楼-- · 2019-03-26 02:59
本帖最后由 dingzy_2002 于 2016-12-16 14:55 编辑
and01 发表于 2016-12-16 13:54
我现在还是没正常开启PWM?帮忙看哪里出问题了?!
非常感谢

你的雾化输出频率,个人认为,采用PWM调节频率输出是不合适的(我也试过,包括其它开发人员测试不行,才将这个项目要我帮忙的,不过,要用PWM模块来作为固定脉宽的输出配置)
主要是频率的分辨率不够,PWM能做到从1.8~2.4M的50K~200KH步进调节吗?
否则极不容易找到最佳的中心谐振频率.
dingzy_2002
4楼-- · 2019-03-26 07:59
请按数据手册要求进行程序设置:
以下文字摘录处1827的数据手册中PWM设置部分:
24.3.2 设置 PWM 工作模式
当配置CCP模块使之工作于标准PWM模式时应遵循以
下步骤:
1. 通过将相应的 TRIS 位置 1 禁止 CCPx 引脚输出
驱动器。
2. 将 PWM 周期值装入 PRx 寄存器。
3. 通过将合适的值装入 CCPxCON 寄存器来配置
CCP 模块使之工作于 PWM 模式。
4. 将 PWM 占空比值装入 CCPRxL 寄存器和
CCPxCON 寄存器的 DCxBx 位。
5. 配置并启动 Timer2/4/6:
• 通过设置 CCPTMRS 寄存器中的
CxTSEL<1:0> 位,选择用于生成 PWM 的
Timer2/4/6 资源。
• 清零 PIRx 寄存器的 TMRxIF 中断标志位。
请参见下面的 “注”。
• 使用定时器预分频值配置 TxCON 寄存器的
TxCKPS 位。
• 通过将 TxCON 寄存器的 TMRxON 位置 1
来使能定时器。
6. 使能 PWM 输出引脚:
• 等待定时器溢出并且 PIRx 寄存器的 TMRxIF
位置 1。请参见下面的 “注”。
• 通过将相应的 TRIS 位清零使能 CCPx 引脚输
出驱动器。
and01
5楼-- · 2019-03-26 11:12
 精彩回答 2  元偷偷看……
dingzy_2002
6楼-- · 2019-03-26 14:25
and01 发表于 2016-12-16 15:05
请版主帮忙建议用什么方法比较合适,我看到之前我的样机上是用一个芯片输出的方波来控制的?非常感谢

我在这个帖子里说了的:
http://bbs.eeworld.com.cn/forum. ... 1&page=1#pid2104066
重点是:
这种输出频率不是采用PWM输出的,而是用数控振荡器或调节芯片的振荡频率来完成的.
当然,如果有PWM模块,应该设置其为合适的输出频率(例如2MHz)的方波输出,通过调节芯片的主振荡频率来完成从1.5~2.5MHz调节的.

一周热门 更多>