智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 14351|回复: 68
打印 上一主题 下一主题

不看会后悔的(pwm------舵机)

  [复制链接]

68

主题

1086

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4578

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

QQ
威望
2515
贡献
1213
兑换币
1382
注册时间
2012-9-19
在线时间
425 小时
跳转到指定楼层
1#
发表于 2012-12-10 00:01:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
                                 
   总是潜水,现在为大家服务一下吧,希望能对一些人有帮助!!! 以前没有深入关注过pwm,自以为是比较了解的,可是直到前几天,才发现我对pwm不是很了解,01、23、45、67级联后,起作用的均是高一级的口(就是1、3、5、7),当时写程序时没有注意,以为级联后就万事大吉啦,谁知道并不好使,一个很小的细节没有注意,导致了程序的崩溃。弄了好几天,郁闷死了。亲先给你们附上一段程序吧,看看有错没有,总线频率为40MHZ。

#include <hidef.h>      /* common defines and macros */
#include "derivative.h"      /* derivative-specific definitions */
#define ZK1 PWMDTY1     //电机占空比
#define ZK5 PWMDTY5
#define ZK3 PWMDTY3   //舵机占空比

void Steer_Init(void)
{
    PWME_PWME3 = 0;      //先禁止各通道输出
    PWMCTL_CON23 = 1;    //两两级联成16位PWM
    PWMPRCLK_PCKB = 2;  //预分频系数为B 4,总线频率,即10MHZ
    PWMSCLB = 2;  //SB_CLK = B_CLK / (2*2) ==2.5MHz
    PWMCLK_PCLK3 = 1;   //通道选  clock SB做时钟源
                                             
    PWMCNT3=0;  //23计数器清零
    PWMCAE_CAE3=0;    //选择输出模式为左对齐输出模式   
    PWMPOL_PPOL3=1;    //先输出高电平,计数到DTY时,反转电平
   
    PWMPER23=50000; // 20ms ;50Hz
    PWMDTY23=0;
    PWME_PWME3 = 1;      
}

void main(void)
{
   PLL_Init_40M();
   Steer_Init();
   IO_Init();
   Motor_Init();
   ZK3=5000;  //舵机摆正
   ZK1=100;
   ZK5=0;
}

当然啦,其他的程序都是没有错误的,都很好使的,亲们你们发现有什么不对了吗???
如果发现了,恭喜你,你真的很厉害,是一个有心人。如果没有发现的话,也不要紧的,
下面再给你们附上另外的一段程序,仔细看好了啊,亲。

#include <hidef.h>      /* common defines and macros */
#include "derivative.h"      /* derivative-specific definitions */
#define ZK1 PWMDTY01     //电机占空比
#define ZK5 PWMDTY45
#define ZK3 PWMDTY23   //舵机占空比

void Steer_Init(void)
{
    PWME_PWME3 = 0;      //先禁止各通道输出
    PWMCTL_CON23 = 1;    //两两级联成16位PWM
    PWMPRCLK_PCKB = 2;  //预分频系数为B 4,总线频率,即10MHZ
    PWMSCLB = 2;  //SB_CLK = B_CLK / (2*2) ==2.5MHz
    PWMCLK_PCLK3 = 1;   //通道选  clock SB做时钟源
                                             
    PWMCNT3=0;  //23计数器清零
    PWMCAE_CAE3=0;    //选择输出模式为左对齐输出模式   
    PWMPOL_PPOL3=1;    //先输出高电平,计数到DTY时,反转电平
   
    PWMPER23=50000; // 20ms ;50Hz
    PWMDTY23=0;
    PWME_PWME3 = 1;      
}

void main(void)
{
   PLL_Init_40M();
   Steer_Init();
   IO_Init();
   Motor_Init();
   ZK3=5000;  //舵机摆正
   ZK1=100;
   ZK5=0;
}

亲们发现两段程序有什么不同的吗???亲,不要告诉我说他们没有一点区别,完全一样,用你的火眼金睛再仔细的看一遍吧!!!他们是有区别的,而且就是这么小小的区别,让我们队的车子楞是跑不起来,可是害苦我了啊!!!我整整发了近三天的时间才找到的这不算问题的问题啊,哎!!!现在我是真的深有体会,无论什么事都是马虎不得的,不然会吃大亏的啊,尤其是做比赛的童鞋们,真的是伤不起啊!!!



#define ZK1 PWMDTY1     //电机占空比
#define ZK5 PWMDTY5
#define ZK3 PWMDTY3   //舵机占空比

#define ZK1 PWMDTY01     //电机占空比
#define ZK5 PWMDTY45
#define ZK3 PWMDTY23   //舵机占空比
现在发现了吧,上面的是 PWMDTY1, PWMDTY5, PWMDTY3
下面的是  PWMDTY01, PWMDTY45, PWMDTY23,

就是这些让我郁闷死了,若这样写(PWMDTY3),虽然23级联了,但是单片机还是认为他们并不级联,任然是8位的(注:8位最大值只能是255),而不是我们想象的16位(注:最大值是65535),为此我亲自做了实验,这样写(PWMDTY3),写入数值小于等于255的时候可以,运行时软件没有出现warning,写256就不行了,软件就出现warning,原来以为出现warning,没有错误就行,但是事实却不是如此,我当时写的是(ZK3=5000),舵机就是要么往一个方向摆、要么就是出现各种不正常的问题,但是当我把(PWMDTY3)改成(PWMDTY23)时,苦逼了啊,一切都没有问题了(我当时控制的是舵机),舵机在正常不过了,一切都好了,我当时就笑了,这是什么玩意啊,我多么宝贵的几天的时间啊,哎,童鞋们,就写到这吧,我的能力有限,剩下的还得靠你们自己去摸索。那些还在为舵机不
能正常工作而发愁的童鞋们,你们看一看,是不是与我一样不小心啊,希望对你们能有一些帮助。有什么不对的,请指出来,谢谢。







评分

1

查看全部评分

29

主题

637

帖子

0

精华

常驻嘉宾

我是孤独的赛车手 车手是不需要女人的

Rank: 8Rank: 8

积分
3136
威望
1664
贡献
630
兑换币
621
注册时间
2011-4-16
在线时间
421 小时
2#
发表于 2012-12-10 00:08:03 | 只看该作者
不后悔。。。
回复 支持 反对

使用道具 举报

1

主题

2067

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
5124

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

威望
2752
贡献
898
兑换币
59
注册时间
2012-12-8
在线时间
737 小时
3#
发表于 2012-12-10 00:13:01 | 只看该作者
谢谢分享,学习了
回复 支持 反对

使用道具 举报

42

主题

1450

帖子

0

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
8643

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

威望
4293
贡献
2166
兑换币
2108
注册时间
2011-10-20
在线时间
1092 小时
4#
发表于 2012-12-10 00:16:14 | 只看该作者
谢谢分享
回复 支持 反对

使用道具 举报

2

主题

296

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2404
QQ
威望
1358
贡献
576
兑换币
201
注册时间
2011-7-29
在线时间
235 小时
5#
发表于 2012-12-10 00:39:00 | 只看该作者
hehe
回复 支持 反对

使用道具 举报

55

主题

1235

帖子

0

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
6072
威望
3023
贡献
1595
兑换币
1879
注册时间
2012-11-6
在线时间
727 小时
6#
发表于 2012-12-10 00:47:07 | 只看该作者
学习了
回复 支持 反对

使用道具 举报

55

主题

1589

帖子

0

精华

知名人物

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

积分
24770

优秀会员奖章活跃会员奖章论坛骨干奖章论坛元老奖章资源大师奖章

威望
14187
贡献
8805
兑换币
1162
注册时间
2012-3-4
在线时间
889 小时
毕业学校
7#
发表于 2012-12-10 02:00:04 | 只看该作者
回复 支持 反对

使用道具 举报

15

主题

171

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1618

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

QQ
威望
726
贡献
414
兑换币
189
注册时间
2012-7-31
在线时间
239 小时
8#
发表于 2012-12-10 07:19:17 | 只看该作者
感谢楼主
回复 支持 反对

使用道具 举报

45

主题

897

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4570

热心会员奖章推广达人奖章优秀会员奖章活跃会员奖章

QQ
威望
2734
贡献
1368
兑换币
803
注册时间
2011-11-30
在线时间
234 小时
9#
发表于 2012-12-10 07:24:48 | 只看该作者
谢谢分享
回复 支持 反对

使用道具 举报

16

主题

1510

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
5586

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

QQ
威望
2953
贡献
1231
兑换币
29
注册时间
2012-6-2
在线时间
702 小时
10#
发表于 2012-12-10 09:09:03 | 只看该作者
我们用不着了
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-29 02:22 , Processed in 0.055275 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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