首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

求高手写个电机驱动程序

求高手写个电机驱动程序

本帖最后由 denghaibo 于 2009-11-28 22:35 编辑

本人新手,买了个飞思卡尔的开发板,芯片是S12DP512,原理图在附件里,求大侠为OUT1和OUT2写个电机驱动程序,不胜感激。
本人菜鸟,不知道TLE7209的用法,自己瞎攒了一段程序,老是不能运行,郁闷死了。下面是我自己弄的,高手帮看看。
void Init_clock()                        // 产生24MHz系统时钟
{
  CRGFLG_SCM=0;
  PLLCTL_CME=0;
  PLLCTL_PLLON=1;
  SYNR=0X02;
  REFDV=0X01;
  while(CRGFLG_LOCK==0);
  CLKSEL_PLLSEL=1;
}
/*PWM初始化*/
void Init_PWM()
{
  PWME=0X00;                              // 关闭PWM
  PWM_clock();                            // 时钟设置
  PWMPOL=0X00;                            // 极性设置,周期开始时,输出为低电平
  PWMCAE=0X00;                            // 左对齐方式
  PWMCTL=0X00;                            // 通道不级联,
  PWM_adj();        
}
/*PWM时钟的选择和设置*/
void PWM_clock()
{
  PWMPRCLK=0X77;                          // ClockA分频,ClockB分频
  PWMSCLA=0X0c;                           // 时钟A分频12xPWMSCLA
  PWMSCLB=0X0c;                           // 时钟B分频12xPWMSCLB
  PWMCLK=0X03;                            // 时钟选择,选择时钟SA和时钟SB
}
/*PWM调节程序,可调节周期和占空比*/
void PWM_adj()
{
  PWME=0X00;                                  // 关闭PWM模块,开始调节
   
  PWMPER01=0XFF;                      // 调节周期
  PWMDTY01=0XF0;   // 调节占空比
  PWMCNT0=0;
  PWMCNT1=0;
   
  PWME=0X03;                                  // 打开PWM的0通道和1通道
}
void main(void)
{
    EnableInterrupts;
  Init_clock();
  Init_PWM();
    for(;;) ;

Schematic_MainBoard.pdf (57.31 KB)

Schematic_S12sys.pdf (52.11 KB)

TLE7209-2R.pdf (335.99 KB)

PWME=0X00;                                  // 打开PWM的0通道和1通道
你的PWM通道要禁止,设置成普通IO口.并把该口电平一直设置为高电平,
PWM0也要设置成普通IO方式,来控制电机的正反转.PWM0端口电平为高,则电机正转,电平为底则电机反转.
仔细研究一下你的电路图,和芯片资料就很容易明白了.很简单的东西,多动手.
1

评分次数

  • yumuzi

返回列表