智能车制作

标题: 关于PWM编程 [打印本页]

作者: zhangyi5009    时间: 2009-4-9 13:07
标题: 关于PWM编程
我们用的是P口的1、2、7端口,其中1和2是控制电机的,7是控制舵机的,都是16位的,请问怎么初始化啊?谢谢了!!!
作者: rrison    时间: 2009-4-9 22:51
dg128
void PWM_INIT(void)
     {
       /// PDTY01=18400;
        // PDTY67=1500;
         PWMCAE=0x00;
         PWME=0xFF;    //禁止pwm
         PWMPOL=0x42; //起始输出为高电平
         PWMCLK=0x00; //通道零时钟为A
         PWMPRCLK=0x03;       //总线时钟8分频为 CLOCK A
         PWMCTL=0x90;         //通道0.1 6.7级联16位
         PWMDTY01=1520;     //占空比初始化
         PWMPER01=20000;    //周期20毫秒
         PWMDTY67=1300;
         PWMPER67=2000;      //周期2毫秒         
         PWME_PWME1 =1;      
         PWME_PWME7 =1;
         PWMDTY45=10;
作者: 草竹    时间: 2009-4-10 18:18
//PWM模块初始化   
void init_PWM(void){   
  PWME=0;   
  /*舵机使用PWM45级联*/   
  PWMCTL_CON45=1;   //级联PWM45   
  PWMCLK_PCLK5=1;   //PWM5选择SA为时钟源   
  PWMPRCLK_PCKA=0;  //A时钟预分频0;分频4   
  PWMSCLA=4;        //即1/3us   
  PWMPOL_PPOL5=1;   //PWM5输出先高后低   
  PWMPER45=30000;       //100Hz   
  PWMDTY45=SERVO_MID;       //舵机中心位置1.5ms高电平   
  PWME_PWME5=1;     //启动PWM5   
     
  /*驱动电机使用PWM2和PWM3,目前仅使用PWM3*/   
  PWMCLK_PCLK2=1;   //PWM2使用SB时钟   
  PWMCLK_PCLK3=1;   //PWM3使用SB时钟   
  PWMPRCLK_PCKB=0;  //B=Bus   
  PWMSCLB=128;       //SB=B/64=384K 即4us   
  PWMPOL_PPOL2=1;   //P2先低后低   
  PWMPOL_PPOL3=1;     //P3先高后低   
  PWMPER2=0xff;   
  PWMPER3=0xff;   
  PWMDTY2=0x60;   
  PWMDTY3=0x00;   
  PWME+=0x0c;       //同时使能PWM23   
}
作者: zhaodong584    时间: 2009-4-10 18:39
void PWM_init(void)
{

PWMCTL_CON01=1;


PWMCTL_CON23=1;
//
两个通道联合产生PWM


PWMCAE_CAE1=0;


PWMCAE_CAE3=0;
//0=left,1=center


PWMPOL_PPOL1=1;


PWMPOL_PPOL3=1;
//PWM
波的极性控制


PWMCLK_PCLK1=1;
//
选择SA作为时钟源


PWMCLK_PCLK3=1;
//
选择SB作为时钟源


PWMCNT01=0;


PWMCNT23=0;
//
计数器清零


PWMPRCLK=0x10;
//BUS CLOCK=32M
CLOCKA=BUSCLOCK,CLOCKB=BUSCLOCK/4


PWMSCLA=1;


PWMSCLB=2;
//
PRCLK进行n*2分频


PWMDTY01=0;


PWMPER01=1500;


PWMDTY23=2700;


PWMPER23=40000;


PWME_PWME1=1;


PWME_PWME3=1;
//PWM
通道使能


}

作者: zhaodong584    时间: 2009-4-10 18:42
哦,不好意思,忘记改端口了.懂了程序,改一下就可以了.
作者: zhaodong584    时间: 2009-4-10 18:42
哦,不好意思,忘记改端口了.懂了程序,改一下就可以了.
作者: 星空下的学生    时间: 2009-4-11 16:39
哦,不好意思,忘记改端口了.懂了程序,改一下就可以了.
zhaodong584 发表于 2009-4-10 18:42
11111111111
作者: syxhaha    时间: 2009-11-29 20:15
duoxie
作者: 西子枫林    时间: 2010-3-13 16:38
非常感谢!
作者: alexzhan    时间: 2010-3-13 19:05
学习来
作者: francis    时间: 2010-3-14 22:07
learn
作者: wzcp    时间: 2010-3-15 09:23
谢谢啦~学习来了,哈哈
作者: zhoulxm    时间: 2010-3-15 23:03

作者: xiaohaipolang    时间: 2010-3-20 11:57

作者: nigel1946    时间: 2010-3-25 14:34

作者: 小怪兽AK    时间: 2010-3-25 23:21
蛮不错的 学习了
作者: hex    时间: 2010-3-26 15:50
呵呵   分享快乐   学习
作者: xiaohaipolang    时间: 2010-3-27 14:05

作者: feiyang1989    时间: 2010-3-29 00:24
非常感谢
作者: yanzi1225627    时间: 2010-4-1 19:39
十分感谢 我怎么查到关于寄存器的 资料呢??
作者: yanzi1225627    时间: 2010-4-1 19:39
是不是 dg128的每一个模块都有自己相应的寄存器啊??
作者: he251125    时间: 2010-4-1 20:22
xiexieha
作者: jession4    时间: 2010-4-5 23:06
学习了~
作者: qq451121549    时间: 2010-4-11 19:30

作者: crj19880917    时间: 2010-5-3 01:41
回复 3# 草竹
问下啊,你电机的口没用级联么,就是8位的有影响么
作者: crj19880917    时间: 2010-5-3 01:52
回复 3# 草竹


    问下啊,用一路和2路PWM到底有什么区别啊,2路的话怎么实现的?PWMPOL_PPOL2=1;   //P2先低后低   
  PWMPOL_PPOL3=1;     //P3先高后低    是不是通过这2句来实现2路波的合成?
作者: 向往智能    时间: 2010-5-5 00:09
biegaohuibian




欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2