智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1195|回复: 3
打印 上一主题 下一主题

帮我看看这段控制电机的代码~~

[复制链接]

10

主题

31

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
210
威望
114
贡献
66
兑换币
56
注册时间
2014-11-9
在线时间
15 小时
跳转到指定楼层
1#
发表于 2014-12-13 21:38:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式



这是板子原理图的部分截图。代码在下面:
#include <hidef.h>      /* common defines and macros */
#include "derivative.h"      /* derivative-specific definitions */

#define  BUS_CLOCK                   32000000           //总线频率
#define  OSC_CLOCK                   16000000           //晶振频率

unsigned char k;

/*************************************************************/
/*                      初始化锁相环                         */
/*************************************************************/
void INIT_PLL(void)
{
    CLKSEL &= 0x7f;       //set OSCCLK as sysclk
    PLLCTL &= 0x8F;       //Disable PLL circuit
    CRGINT &= 0xDF;

    #if(BUS_CLOCK == 40000000)
      SYNR = 0x44;
    #elif(BUS_CLOCK == 32000000)
      SYNR = 0x43;     
    #elif(BUS_CLOCK == 24000000)
      SYNR = 0x42;
    #endif

    REFDV = 0x81;         //PLLCLK=2×OSCCLK×(SYNR+1)/(REFDV+1)=64MHz ,fbus=32M
    PLLCTL =PLLCTL|0x70;  //Enable PLL circuit
    asm NOP;
    asm NOP;
    while(!(CRGFLG&0x08)); //PLLCLK is Locked already
    CLKSEL |= 0x80;        //set PLLCLK as sysclk
}

/*************************************************************/
/*                        初始化PWM                          */
/*************************************************************/
void init_pwm(void)
{
  PWMPOL_PPOL0= 1;   //通道的极性为高电平有效
  PWMPOL_PPOL1= 1;   //通道的极性为高电平有效
  PWMPOL_PPOL2= 1;   //通道的极性为高电平有效
  PWMPOL_PPOL3= 1;   //通道的极性为高电平有效

  PWMPRCLK = 0x22;   //A时钟和B时钟的分频系数为4,频率为8MHz
  PWMSCLA=0x04;      //SA时钟频率为1MHz
  PWMSCLB=0x04;      //SB时钟频率为1MHz

  PWMCLK   = 0x0f;   //0,1,2,3用SA时钟
  PWMCAE   = 0x00;   //脉冲模式为左对齐模式

  PWMPER0  =  100;   //通道0的周期为10KHz
  PWMPER1  =  100;   //通道1的周期为10KHz
  PWMPER2  =  100;   //通道2的周期为10KHz
  PWMPER3  =  100;   //通道3的周期为10KHz

  PWMDTY0  =  0;     //通道0的占空比设置
  PWMDTY1  =  0;     //通道1的占空比设置  
  PWMDTY2  =  0;     //通道2的占空比设置
  PWMDTY3  =  0;     //通道3的占空比设置  

  PWME_PWME0=1;      //使能PWM信号
  PWME_PWME1=1;
  PWME_PWME2=1;
  PWME_PWME3=1;
}

/*************************************************************/
/*                       延时函数                            */
/*************************************************************/
void delay(void)
{
    unsigned long i;
    for(i=0;i<20000;i++);
}

/*************************************************************/
/*                         主函数                            */
/*************************************************************/
void main(void)
{
        DisableInterrupts;
        INIT_PLL();
        init_pwm();
        EnableInterrupts;

  for(;;)
  {
                  for(k=0;k<100;k++)   //正转逐渐加速
                  {
                          PWMDTY0=k;
                    PWMDTY1=0;
                          PWMDTY2=k;
                    PWMDTY3=0;
                          delay();               
                  }
                  for(k=100;k>0;k--)   //正转逐渐减速
                  {
                          PWMDTY0=k;
                    PWMDTY1=0;
                          PWMDTY2=k;
                    PWMDTY3=0;
                          delay();               
                  }
                  for(k=0;k<100;k++)   //反转逐渐加速
                  {
                          PWMDTY0=0;
                    PWMDTY1=k;
                          PWMDTY2=0;
                    PWMDTY3=k;
                          delay();               
                  }
                  for(k=100;k>0;k--)   //反转逐渐减速
                  {
                          PWMDTY0=0;
                    PWMDTY1=k;
                          PWMDTY2=0;
                    PWMDTY3=k;
                          delay();               
                  }
  }
}



帮我看看代码怎么改,才能控制两个电机转,能转就行~~~小白求大神

回复

使用道具 举报

32

主题

3009

帖子

0

精华

杰出人士

学期班的来卖萌?

Rank: 12Rank: 12Rank: 12

积分
14832

在线王奖章活跃会员奖章优秀会员奖章论坛元老奖章资源大师奖章

威望
5952
贡献
3172
兑换币
4257
注册时间
2013-11-26
在线时间
2854 小时
2#
发表于 2014-12-13 21:43:00 | 只看该作者
这本来就是在控制2个电机正反转了。4路pwm,还要怎么改,和驱动配套就行了
回复 支持 反对

使用道具 举报

10

主题

31

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
210
威望
114
贡献
66
兑换币
56
注册时间
2014-11-9
在线时间
15 小时
3#
 楼主| 发表于 2014-12-13 22:14:13 | 只看该作者
zhou1994 发表于 2014-12-13 21:43
这本来就是在控制2个电机正反转了。4路pwm,还要怎么改,和驱动配套就行了

可是我烧进去电机不转~~~
回复 支持 反对

使用道具 举报

32

主题

3009

帖子

0

精华

杰出人士

学期班的来卖萌?

Rank: 12Rank: 12Rank: 12

积分
14832

在线王奖章活跃会员奖章优秀会员奖章论坛元老奖章资源大师奖章

威望
5952
贡献
3172
兑换币
4257
注册时间
2013-11-26
在线时间
2854 小时
4#
发表于 2014-12-13 22:29:57 | 只看该作者
E龙 发表于 2014-12-13 22:14
可是我烧进去电机不转~~~

硬件问题
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-12-27 18:16 , Processed in 0.046719 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表