智能车制作

标题: 不看会后悔的(pwm------舵机) [打印本页]

作者: 可欣    时间: 2012-12-10 00:01
标题: 不看会后悔的(pwm------舵机)
                                 
   总是潜水,现在为大家服务一下吧,希望能对一些人有帮助!!! 以前没有深入关注过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)时,苦逼了啊,一切都没有问题了(我当时控制的是舵机),舵机在正常不过了,一切都好了,我当时就笑了,这是什么玩意啊,我多么宝贵的几天的时间啊,哎,童鞋们,就写到这吧,我的能力有限,剩下的还得靠你们自己去摸索。那些还在为舵机不
能正常工作而发愁的童鞋们,你们看一看,是不是与我一样不小心啊,希望对你们能有一些帮助。有什么不对的,请指出来,谢谢。








作者: fmadot    时间: 2012-12-10 00:08
不后悔。。。
作者: exiao    时间: 2012-12-10 00:13
谢谢分享,学习了
作者: 叶子一哥    时间: 2012-12-10 00:16
谢谢分享
作者: 有-木-友    时间: 2012-12-10 00:39
hehe
作者: 张永超    时间: 2012-12-10 00:47
学习了
作者: Smile_Sun    时间: 2012-12-10 02:00

作者: 黎明sunshine    时间: 2012-12-10 07:19
感谢楼主
作者: dongyunlong    时间: 2012-12-10 07:24
谢谢分享
作者: ludlee    时间: 2012-12-10 09:09
我们用不着了
作者: 1434636181    时间: 2012-12-10 09:18

作者: ganlei    时间: 2012-12-10 10:02

作者: bloong    时间: 2012-12-10 10:09
感谢分享  但是我表示看完后 很后悔
作者: wen123    时间: 2012-12-10 10:11
行!!
作者: x舞z    时间: 2012-12-10 11:34
呵呵'光电
作者: qual9109    时间: 2012-12-10 12:09
不后悔
作者: jack_channel    时间: 2012-12-10 12:12
恭喜卤煮。又进步了
作者: orthodox    时间: 2012-12-10 12:45
不是K60的吧?
作者: 389059751    时间: 2012-12-10 13:06
xuexil
作者: Mr_Q    时间: 2012-12-10 13:21
学习了
作者: sdlibin007@qq.c    时间: 2012-12-10 14:17
确实是这样啊
作者: mmina456    时间: 2012-12-10 15:14
谢谢
作者: 824427451    时间: 2012-12-10 16:10
明白了些@@
作者: 孤狼♂翎翔    时间: 2012-12-10 18:43
感谢
作者: 万能pcb    时间: 2012-12-12 21:44
目前还看不懂
作者: 可欣    时间: 2012-12-12 22:50
万能pcb 发表于 2012-12-12 21:44
目前还看不懂

没事的,刚开始都是看不懂,慢慢就好了,坚持
作者: Determined    时间: 2012-12-12 23:53

作者: 夏小凉    时间: 2012-12-13 10:38
谢谢 楼主 学习了
作者: ybcqujx    时间: 2012-12-13 21:38
呵,谢谢分享,这个我也遇到过。
作者: 赵宇    时间: 2012-12-13 22:14
不错。。
作者: majihong    时间: 2012-12-14 10:13

作者: :句·话っ    时间: 2012-12-18 13:21
{:soso_e179:}
作者: AOE    时间: 2012-12-19 22:25
感谢经验分享
作者: 似水流年、    时间: 2012-12-20 07:14
学习了
作者: huayuc19    时间: 2012-12-21 22:49
看了真心不后悔!!
作者: 似水流年、    时间: 2012-12-21 23:09
xuexi le

作者: xuruoyu    时间: 2013-1-15 14:39


作者: lincson    时间: 2013-1-22 22:36
学习学习
作者: 萧逸    时间: 2013-1-23 09:32
感谢分享!
作者: nsxzclx    时间: 2013-1-23 23:59
呵呵 马虎不得
作者: 青龙0偃月    时间: 2013-1-25 20:19
弱弱的表示前天试舵机时出现了类似的问题
作者: azure647    时间: 2013-2-1 18:29
谢谢楼主提醒~~~
作者: hxp632626965    时间: 2013-2-2 09:59
学习了
作者: dlyt03    时间: 2013-2-4 09:14
谢谢
作者: 高敏真人真话    时间: 2013-2-5 12:52
谢谢分享

作者: 最好不相误    时间: 2013-3-15 14:54
感谢楼主
作者: lxnick    时间: 2013-3-18 14:57
你的23呢?

作者: 可欣    时间: 2013-3-18 17:35

作者: 吴镇    时间: 2013-3-18 21:37
好!{:soso_e179:}
作者: 天空之城-    时间: 2013-3-20 11:26
给力   给力!!!!  深有感触!一直纠结的问题现在解决了!
作者: tory柴    时间: 2013-4-3 15:50
分享快乐
作者: 了修明日    时间: 2013-4-6 15:11
xuexi
作者: 夏夜之星    时间: 2013-4-16 22:19

作者: 丶Capricorn    时间: 2013-5-7 19:13

作者: heart804571    时间: 2013-5-8 00:13

作者: glacier0    时间: 2013-5-8 00:25
顶一下
作者: dynamic    时间: 2013-7-1 10:15
其实经常这样,一个小问题纠结好久
作者: 哲000    时间: 2013-7-16 21:46
学习了……
作者: mnh999    时间: 2014-3-12 17:04

作者: justone    时间: 2014-3-15 15:32
谢谢分享了
作者: ★相★离    时间: 2014-3-17 12:29

作者: 流氓兔    时间: 2014-3-17 20:48
PWMPER23=50000; // 20ms ;50Hz
    PWMDTY23=0;
这个 啥情况啊!!!意思是占空比为0吗?
舵机不动吗?


作者: 有思想的车    时间: 2014-3-19 15:16
000
作者: 断梦    时间: 2014-3-27 20:27
不孬
作者: 板正的    时间: 2014-4-4 21:58
顶楼主!虽然没看懂  但是先学着  
作者: 张世民    时间: 2014-4-5 16:11
牛皮  哈哈哈哈  看看 学习学习
作者: 张世民    时间: 2014-4-5 16:13
牛皮  哈哈哈哈  看看 学习学习
作者: 追梦dream    时间: 2014-4-9 21:05
受益了,谢谢

作者: _乐天_    时间: 2014-4-11 02:06
学习了




欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2