智能车制作

 找回密码
 注册

扫一扫,访问微社区

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

MCS12XS128 单片机 控制 舵机 PWM 问题! 求求你们救救我吧!

[复制链接]

1

主题

2

帖子

0

精华

注册会员

Rank: 2

积分
141
威望
81
贡献
34
兑换币
39
注册时间
2013-8-21
在线时间
13 小时
毕业学校
GZDXKJXY
跳转到指定楼层
1#
发表于 2013-8-21 08:06:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <hidef.h>
#include <time.h>     
#include <MC9S12XS128.h>
#include <stdlib.h>
#pragma LINK_INFO DERIVATIVE "mc9s12xs128"

int pwm=150;                                 


void delay(int x){

  int i,k;
  for(i=0;i<=x;i++){
  for(k=255;k>=0;k--);
  }
}

//核心超频代码、、、、、、、、、、、、、、、、、、、、

void chaopin(char x)//80M
{   

    char f;
     f=(x/8)-1;

    CLKSEL=0X00;                               
    PLLCTL_PLLON=1;                       
    SYNR =0xc0 | f;                        
    REFDV=0x80 | 0x01;
    POSTDIV=0x00;       //分频=2*外部时钟*(1+SYNR)/(1+REFDV)=160MHz;
    _asm(nop);          //超频=分频/2
    _asm(nop);
    while(!(CRGFLG_LOCK==1));          
    CLKSEL_PLLSEL =1;                        
}
//核心超频代码、、、、、、、、、、、、、、、、、、、、、、

void pwm_init(void)

{
  PWMPRCLK=0X00;
  PWMCNT01=0;
  PWMSCLA=40;      
  PWMSCLB=40;
  PWMCLK=0xFF;   //调用已经分频好的时钟,高电平为SA或SB时钟,低电平为A,或B,时钟[单独操作(PWMCLK_PCLKx=。。。)]
  PWMPOL=0xFF;   //设置起始波形是高电平计数还是低电平计数或者说翻转,高电平是高电平计数,低电平是低电平计数【单独操作(PWMPOL_PPOLx=)】
  PWMCAE=0x00;   //设置PWM波对齐方式,高电平为中心对齐,低电平为左边对齐方式,[单独操作(PWMCAE_CAEx=)]
// PWMCTL=0x00;   //级联寄存器,高电平开启,低电平关闭,单独操作(PWMCTL_CON01=)   
  PWMCTL_CON01=1;

  PWMDTY01=pwm;  //占空比
  PWMPER01=1000;  //占空比周期                300Hz

  //01
  //若CAEx=0,
  //PWM波频率=选取的时钟/占空比周期
  //PWM波周期=1/PWM波频率

  //02
  //若CAEx=1
  //PWM波频率=选取时钟/(占空比周期*2)
  //PWM波周期=1/PWM波频率

  //占空比计算方法
  //当设置的PWMPOL_PPOLx=0时 占空比=[(PWMPERx-PWMDTYx)/PWMERx]*100%
  //当设置的PWMPOL_PPOLx=1时 占空比=[PWMDTYx/PWMPERx]*100%

}

void main(void) {

   chaopin(24);
    pwm_init();
    PWME_PWME1=1;

   // for(;;){
   // pwm++;
   // delay(200);
   // pwm_init();
   // if(pwm>=1000)pwm=0;
   // }
}

预计给出的PWM频率是300HZ但是,很神奇的是,PWMDTY寄存器如果为150左右就会变成600HZ左右,其他范围正常,比如(pwm=600,也就是 PWMDTY01=600)就是300HZ其他的也是300HZ 而且,就算调成舵机的要求频率和占空比了,舵机也会乱摆,真心无解了 啊!!求大神救救我啊!!我刚刚接触Freescale 啊!!!!我好可怜的啊!!!

1

主题

2

帖子

0

精华

注册会员

Rank: 2

积分
141
威望
81
贡献
34
兑换币
39
注册时间
2013-8-21
在线时间
13 小时
毕业学校
GZDXKJXY
2#
 楼主| 发表于 2013-8-21 08:21:39 | 只看该作者
补充一下,我 是 超频 到 24M
回复 支持 反对

使用道具 举报

42

主题

1054

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3034

优秀会员奖章活跃会员奖章

QQ
威望
1650
贡献
780
兑换币
625
注册时间
2012-7-6
在线时间
302 小时
3#
发表于 2013-8-21 14:22:42 | 只看该作者
这么奇葩的问题还没遇见过,要不你换个PWM口试试,怎么会脉宽寄存器的值会改变周期了!?
回复 支持 反对

使用道具 举报

2

主题

291

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1578
QQ
威望
740
贡献
524
兑换币
501
注册时间
2013-10-30
在线时间
157 小时
4#
发表于 2014-8-18 17:11:01 | 只看该作者
我的不知怎么了,周期都正常了,脉宽寄存器就是不能调节占空比了?不管多大,占空比总是很小
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-29 20:16 , Processed in 0.050533 second(s), 37 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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