这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » PWM 请讨论一下PWM的事,请关注!

共2条 1/1 1 跳转至

PWM 请讨论一下PWM的事,请关注!

院士
2006-09-17 18:14:16     打赏
PWM 请讨论一下PWM的事,请关注!



关键词: 讨论     一下     的事     关注    

院士
2006-12-22 22:43:00     打赏
2楼
问 大家好!!这是我的电路图和程序:

我意图是让PWM2,PWM4,PWM6输出周期为1的方波,占空比50%.
但是结果是错误的,在开机一后,过了1S钟LED点亮,就不是熄灭了.
这是为什么呢??是我的程序有问题???请大家指点一下:

请大家讨论一下用PWM做控制的方法与经验.
#define PWM2   1<<7  //P0.7
#define PWM4   1<<8  //P0.8
#define PWM6   1<<9  //P0.9


/* PWM周期及占空比设置值 */
#define CYCLE  1
#define DUTY_DATA 0.5


int main (void)
{  
    uint8 i=1;
    uint8 key_value;
     key_value=255;
     
    PINSEL0 = 0x000A8000; //GPIO,PWM2,PWM4,PWM6;
    PINSEL1 = 0x00000000; //GPIO;
    IO0DIR = 0xffffffff;  //设置为输出;
    IO1DIR = 0x010f0000;  //设置P1.16~1.19为输出,P1.20~P1.23为输入;P1.24为输出
    IO2DIR = LED8;          //设置为输出;
    //InitLCD();            //初始化液晶;
    //init_draw_main_menu();
    //IO1SET = LCD_K;
    PWMPR  = Fpclk;                 // 不分频,计数频率为Fpclk
    PWMMCR = 0x02;                    // 设置PWMMR0匹配时复位PWMTC
    PWMMR0 = CYCLE;                 // 设置PWM周期
    
    PWMMR2 = DUTY_DATA;                // 设置PWM2占空比%50
    PWMMR4 = DUTY_DATA;                // 设置PWM4占空比
    PWMMR6 = DUTY_DATA;                // 设置PWM6占空比
    
    PWMLER = 0x55;                  //锁存使能寄存器PWMMR0,PWMMR2,PWMMR4,PWMMR6锁存
    PWMPCR = 0x5400;                //允许PWM2,PWM4,PWM6输出,单边PWM
    PWMTCR = 0x09;                    //启动定里器,PWM使能

    //Show3232(1,0,0,0);
    //draw_box(10,10,28,28);
    while(1)
     {
      IO2CLR = LED8;      
      DelayNs(1000);
      IO2SET = LED8;
      DelayNs(1000);
      
      PWMMR2 = CYCLE*i;       //改变周期
      PWMMR4 = CYCLE*i;
      PWMMR6 = CYCLE*i;
      PWMLER = 1<<0 | 1<<2 | 1<<4 | 1<<6;  //PWMMR2,PWMMR4,PWMMR6锁存
      PWMTCR = 0x09;   //启动定时器
      key_value=get_key_code();
     
      if(key_value!=255)
       {
        if(key_value==0)//按下零键切换主菜单显示;
         {
           
          i+=1;       
         }
       }
     }
    return 0;
}
1: 怎么没有回答吗???自已顶。更改为:
       PWMMPR = 0;//为不分频

为什么不能输出一连串的方波??? 2: #define DUTY_DATA 0.5恒为0能有输出才晕菜呢~~~ 3: 噢,不好意思!! 4: 请教那程序里定义周期,是怎么来换算它的值呢???

我用的主频是:44.2368M,pclk=11.0592M 5: 因为我手头上没有示波器所以,我想把周期改的大一点,频率小一点。能用发光二极管反映出来。

10HZ应该可以吧?但是我不知道周期是怎么换算的了。

请指点 6: 自已顶,为什么PWM来控制步进电机就不行吗?我现在想用PWM中断来控制和计数脉冲数,不知得行不???

100K是我最大的频率,这样应该说是可以的啊

为什么没有回答呢???

7: LPC213X四路单边PWM模块应用源码控制电机用DSP的较多~~~ 8: 哪里有啊???? 9: 请各位老师指点迷精! 10: PWM到底控制步进电机可不可行?PWM到底控制步进电机可不可行?如果步进电机使用单独的驱动,只要输入:CLK/DIR/FREE三路信号呢? 11: 我也不知道,但是可以肯定一点,PWM可以做步进电机控制为什么呢?
因为,PWM也是定时器,并且是定时器的扩展了。

请高手指点一二。

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]