打印

如何在8位PIC单片机(PIC16LF1937)上实现16位的PWM呢?

[复制链接]
2661|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hobbye501|  楼主 | 2012-2-21 09:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
/*这是用8位定时器2和CCP1实现的PWM,计数周期最大只有PR2=255;不够我需要做个16位的 65536计数周期的PWM ?各位高手帮我想想。。。。。 如果我用16位定时器1自己控制脉宽做个方波发生器出来是否可以?改如何配置?我试了。。。可是timer1中断没进去,计数周期没有溢出,自然方波也没有?为什么?


#include "PIC.h"  

void Init (void)
{  
  OSCCON = 0b11111011;   
         
  TRISA = 0x00;
  TRISB = 0X01;
  TRISC = 0x00;
  TRISD = 0x00;
  TRISE = 0x00;

  ANSELA = 0x00;   
  ANSELB = 0x00;
  ANSELD = 0x00;   
  ANSELE = 0x00;   
}
void Init_ir (void)
{  
  GIE = 1;      //全局中断与允许
  OPTION_REG =0b00000011;      //开外部中断,下降沿触发
  WPUB = 0xff;
  WPUE = 0xff;
  PR2 = 250;                      //定时器2周期计数
  CCP1CON = 0b00001100;           //
  CCPR1L = PR2/2;                   //占空比
  CCPTMRS0 = 0b11111100;          //CCP1的PWM选择
  CCPTMRS1 = 0b00000011;          //
  TMR2IF = 0;                     //定时器2溢出标志
  T2CON = 0b00000100;             //
  //T2CKPS = 0b00;                //预分频比1:1
  //TMR2ON = 1;                   //使能定时器2
  //TOUTPS = 0b0000;              //后分频比1:1
}

void main (void)
{
   Init ();
   Init_ir ();
  while (1)
   {
   }
}

相关帖子

沙发
ayb_ice| | 2012-2-21 10:11 | 只看该作者
关键是频率要求

使用特权

评论回复
板凳
yewuyi| | 2012-2-21 15:32 | 只看该作者
你要区分占空比和周期,是哪个需要16位?

使用特权

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

本版积分规则

认证:大连嘉特科技有限公司 硬件工程师
简介:开展公司硬件产品技术研发工作,管理硬件研发项目。

2064

主题

15505

帖子

76

粉丝