智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 8170|回复: 18
打印 上一主题 下一主题

[编程类] 求教有关PWM控制舵机的程序

  [复制链接]

1

主题

6

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
213
威望
177
贡献
30
兑换币
0
注册时间
2010-3-3
在线时间
3 小时
跳转到指定楼层
1#
发表于 2010-4-6 10:58:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1贡献
这个是我从一本教科书上找来的程序,想拿来试下用PWM控制舵机
但是不懂为什么没有波形输出
因为是新手,悬赏不是很多。。。。
程序如下
  1. #include <hidef.h>     
  2. #include <mc9s12dg128.h>     
  3. #pragma LINK_INFO DERIVATIVE "mc9s12dg128b"


  4. #define BUS_FREQ    32000000                    //总线频率
  5. #define PWM_PRCLK   0x22                        //CH_A=CH_B=BUS_FREQ/4            
  6. #define CH_A_FREQ   8000000                     //时钟A频率
  7. #define CH_B_FREQ   8000000                     //时钟B频率
  8. #define CH_SA_FREQ  1000000                     //时钟SA频率
  9. #define CH_SB_FREQ  1000000                     //时钟SB频率
  10. #define CH_SA_DIV   (CH_A_FREQ/(CH_SA_FREQ*2))  //CH_SA_DIV=4
  11. #define CH_SB_DIV   (CH_B_FREQ/(CH_SB_FREQ*2))  //CH_SB_DIV=4
  12. #define STEER_FREQ  100                         //舵机频率100Hz


  13. void Pwm_init(void) {
  14.   PWMPRCLK=PWM_PRCLK;
  15.   PWMSCLA=CH_SA_DIV;
  16.   PWMSCLB=CH_SB_DIV;
  17.   PWMCTL_CON45=1;、                            //组合PWM45
  18.   PWMCTL_CON67=1;
  19.   PWMCTL_CON23=1;
  20.   
  21.   PWMCLK_PCLK5=1;                              //PWM5使用SA
  22.   PWMCLK_PCLK3=1;
  23.   PWMCLK_PCLK7=1;
  24.   
  25.   PWMPER45=(CH_SA_FREQ/STEER_FREQ);      
  26.   PWMPER23=(CH_SB_FREQ/MOTOR_FREQ);
  27.   PWMPER67=(CH_SB_FREQ/MOTOR_FREQ);
  28.   PWMPOL_PPOL5=1;                               //写PWM45的周期寄存器
  29.   PWMPOL_PPOL3=0;
  30.   PWMPOL_PPOL7=0;
  31.   PWMCAE=0x00;
  32.   PWME_PWME5=1;                                  //左对齐
  33. }

  34. void Motor_back(uint duty) {
  35.   PWMDTY45=duty;
  36. }
  37. void delay(unsigned int delay_time) {
  38.   unsigned int loop_i,loop_j;
  39.   for(loop_i=0;loop_i<delay_time;loop_i++)
  40.     for(loop_j=0;loop_j<500;loop_j++)
  41.     _FEED_COP();
  42. }

  43. void main(void) {
  44.   
  45.   Pwm_init();
  46.   Motor_back(9250);
  47.   delay(2000);
  48.   for(;;){
  49.     Motor_back(9500);
  50.     delay(2000);
  51.     Motor_back(9000);
  52.     delay(2000);
  53.   }
  54. }
复制代码

9

主题

358

帖子

42

精华

金牌会员

Rank: 6Rank: 6

积分
1296
威望
80
贡献
506
兑换币
206
注册时间
2008-9-18
在线时间
355 小时
2#
发表于 2010-4-6 16:42:24 | 只看该作者
你随便找个技术报告后面的pwm初始化代码用上就可以了。这个就几个寄存器的初始化没什么难度的。技术报告后面的代码可能没有问题。

补充内容 (2015-4-23 09:15):
真人游戏|足球篮球|时时彩| 六合投注| 网络赚钱去SO娱乐城:顶级信用,提现百分百即时到账SO.CC

回复

使用道具 举报

1

主题

6

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
213
威望
177
贡献
30
兑换币
0
注册时间
2010-3-3
在线时间
3 小时
3#
 楼主| 发表于 2010-4-7 21:05:41 | 只看该作者
找了几个试了下,但是舵机仍旧是只有上电的瞬间会动下
回复

使用道具 举报

1

主题

6

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
267
QQ
威望
238
贡献
23
兑换币
4
注册时间
2010-4-7
在线时间
3 小时
4#
发表于 2010-4-7 23:45:51 | 只看该作者
怎么都是DG的啊,没有XS的吗
回复

使用道具 举报

1

主题

68

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
354
QQ
威望
297
贡献
25
兑换币
2
注册时间
2010-3-22
在线时间
16 小时
5#
发表于 2010-4-8 10:27:49 | 只看该作者
急需解决啊
回复

使用道具 举报

0

主题

7

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
202
威望
180
贡献
22
兑换币
2
注册时间
2010-4-8
在线时间
0 小时
6#
发表于 2010-4-8 10:49:25 | 只看该作者
新手 不懂
回复

使用道具 举报

3

主题

105

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
444
QQ
威望
336
贡献
32
兑换币
0
注册时间
2010-3-3
在线时间
38 小时
7#
发表于 2010-4-8 19:47:06 | 只看该作者
新手 不懂
回复

使用道具 举报

1

主题

45

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
313
威望
266
贡献
33
兑换币
0
注册时间
2010-4-7
在线时间
7 小时
8#
发表于 2010-4-8 21:19:53 | 只看该作者
不明白
回复

使用道具 举报

7

主题

158

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2843
QQ
威望
393
贡献
2380
兑换币
26
注册时间
2009-11-5
在线时间
35 小时
9#
发表于 2010-4-11 09:16:08 | 只看该作者
使劲看看就明白了
回复

使用道具 举报

2

主题

10

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
241
威望
202
贡献
35
兑换币
0
注册时间
2010-4-22
在线时间
2 小时
10#
发表于 2010-4-22 21:11:13 | 只看该作者
试试这个
void main(void) {
  /* put your own code here */
   PWME=0X00;//
   PWMCTL=0X00;
   PWMPRCLK=0X66;
   PWMCLK=0XFF;
   PWMSCLA=0X0D;
   PWMSCLB=0X0D;
   PWMPOL=0XFF;
   PWMCAE=0X00;
   PWMPER0=0X09;
   PWMDTY0=0X05;
   PWME=0X01;
        EnableInterrupts;


  for(;;) {
    _FEED_COP(); /* feeds the dog */
  } /* loop forever */
  /* please make sure that you never leave main */
}
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-28 23:03 , Processed in 0.053548 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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