智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 3007|回复: 8
打印 上一主题 下一主题

求SD-05舵机可用测试程序。!!!急用啊!!!!!!!!!

[复制链接]

39

主题

850

帖子

0

精华

跨届大侠

同学,今晚去你宿舍偷高压锅。

Rank: 10Rank: 10Rank: 10

积分
8530

活跃会员奖章优秀会员奖章在线王奖章论坛元老奖章

QQ
威望
3783
贡献
2239
兑换币
2331
注册时间
2012-7-26
在线时间
1255 小时
跳转到指定楼层
1#
发表于 2013-1-25 18:34:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
就求一个B车模的舵机SD-05的可用测试程序!看过很多帖子,什么要调成300Hz的。我调了,舵机一点反应都没有。我没示波器,就用电压表测一下,好像没变化,究竟是哪里出现问题啊!大家能帮我看下么?要么能给一个你们的初始化程序么?好痛苦啊,还担心是不是舵机坏了。
void PWM_Init(void) {
       //PWMCTL      PWM控制寄存器
   PWMCTL_CON45 = 1;                     
   PWME_PWME5 = 0;
    // PWMPRCLK    PWM时钟预分频寄存器
   PWMPRCLK_PCKA = 4;         // clockA  16分频,clockA = busclk/16 = 4MHz;
   PWMSCLA=1;                 // Clock SA = Clock A / (2 * PWMSCLA)  = 2 M
           //PWMCLK      PWM时钟选择寄存器
   PWMCLK_PCLK5 =1;        //PWM5选择 Clock SA  ,单位时钟为0.5us  
    // 通道1357输出极性 首先为高 占空比计数器计数完毕变为低  
   PWMPOL_PPOL5=1;
   //PWMCNTx     PWM计数寄存器
   PWMCNT45= 0;
   //PWMDTYx     PWM比较寄存器(PWM高电平)
    PWMDTY45= 0;
   //PWMPERx     PWM预置数寄存器(PWM周期)
   PWMPER45= 6666;  //PWM频率=Clock SA/PWMPER45=2M/6666=300HZ
     //PWME        PWM使能寄存器                                       
   PWME_PWME5 = 1;   
}

void main() {
  SetBusCLK_64M();  //超频64M
  PWM_Init();
  while(1) {
    PWMDTY45 = 3000;
  }
}


38

主题

1651

帖子

0

精华

功勋会员

Rank: 10Rank: 10Rank: 10

积分
8770
威望
4444
贡献
2638
兑换币
1818
注册时间
2010-12-29
在线时间
844 小时
2#
发表于 2013-1-25 19:17:19 | 只看该作者
用示波器看你输出的波形对不对。
回复 支持 反对

使用道具 举报

0

主题

29

帖子

0

精华

高级会员

Rank: 4

积分
874
威望
406
贡献
270
兑换币
241
注册时间
2012-10-15
在线时间
99 小时
毕业学校
德州学院
3#
发表于 2013-1-25 19:22:53 | 只看该作者
改成50HZ就行
回复 支持 反对

使用道具 举报

3

主题

19

帖子

0

精华

高级会员

Rank: 4

积分
823
QQ
威望
387
贡献
232
兑换币
222
注册时间
2012-11-6
在线时间
102 小时
4#
发表于 2013-1-25 23:21:34 | 只看该作者
#include <hidef.h>      /* common defines and macros */
#include "derivative.h"      /* derivative-specific definitions */

#define mid_duoji 1500

void pwm_init(void);
void duoji(uint duty);
void sysclock_init(void);

void main(void)
{
  sysclock_init();
  pwm_init();
  while(1)
  
  {
  duoji(1500);//打到中间
  
  }
}
  
  void sysclock_init(void)
{
   
  //重新修改        
  CLKSEL=0x00;
  PLLCTL_PLLON=1;   //turn on PLL
  SYNR =0xc0 | 0x09;  //160M                     
  REFDV=0x80 | 0x01;
  
  POSTDIV=0x00;       //pllclock=2*16*(1+SYNR)/(1+REFDV)=xxMHz;
  while(CRGFLG_LOCK!=1);
  CLKSEL_PLLSEL=1;//PLLCLK Enabled,Bus Clock=PLLCLK/2=80

}
void pwm_init(void)
{
   PWME=0; // Disable PWM 禁止
   PWMCAE=0; //对齐方式,左
   
   PWMCLK=0xff;    //选择SA或SB时钟通道
   PWMPOL=0xff; //极性,
   PWMPRCLK=0;//无预分频
   PWMSCLA=40;//时钟SA的频率为1MHz
   
   PWMCTL_CON45= 1;
   
   PWMPER45=20000;//周期20ms
   PWMDTY45=mid_duoji;//初始打到中间
   PWME_PWME5=1;
}

void duoji(uint duty)

{
  PWMDTY45=duty;
}  
回复 支持 反对

使用道具 举报

8

主题

34

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1013
QQ
威望
563
贡献
246
兑换币
244
注册时间
2012-2-3
在线时间
102 小时
5#
发表于 2013-2-16 17:10:13 | 只看该作者
试试:PWMPER45= 3333
回复 支持 反对

使用道具 举报

39

主题

850

帖子

0

精华

跨届大侠

同学,今晚去你宿舍偷高压锅。

Rank: 10Rank: 10Rank: 10

积分
8530

活跃会员奖章优秀会员奖章在线王奖章论坛元老奖章

QQ
威望
3783
贡献
2239
兑换币
2331
注册时间
2012-7-26
在线时间
1255 小时
6#
 楼主| 发表于 2013-2-16 17:20:14 | 只看该作者
LittleDevil 发表于 2013-2-16 17:10
试试:PWMPER45= 3333

问题解决很久了,谢谢
回复 支持 反对

使用道具 举报

1

主题

3

帖子

0

精华

注册会员

Rank: 2

积分
198
威望
106
贡献
56
兑换币
54
注册时间
2012-10-29
在线时间
18 小时
7#
发表于 2013-3-5 15:28:09 | 只看该作者
我知我心 发表于 2013-1-25 19:22
改成50HZ就行

请问怎么改成多少多少赫兹啊,在哪里调,谢谢
回复 支持 反对

使用道具 举报

18

主题

124

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4539
威望
1852
贡献
1107
兑换币
1203
注册时间
2012-11-27
在线时间
790 小时
8#
发表于 2013-4-5 17:12:10 | 只看该作者
⊙Lin⊙ 发表于 2013-2-16 17:20
问题解决很久了,谢谢

是怎么解决的?能告诉我吗,谢谢~
回复 支持 反对

使用道具 举报

1

主题

5

帖子

0

精华

注册会员

Rank: 2

积分
108
威望
69
贡献
27
兑换币
32
注册时间
2013-3-22
在线时间
6 小时
毕业学校
shan
9#
发表于 2013-4-13 16:12:08 | 只看该作者
yukunlinykl 发表于 2013-1-25 19:17
用示波器看你输出的波形对不对。

人家都说没有示波器了。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-8 13:46 , Processed in 0.073843 second(s), 37 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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