智能车制作
标题:
飞思卡尔智能车舵机调试工具
[打印本页]
作者:
LinX
时间:
2009-3-7 19:41
标题:
飞思卡尔智能车舵机调试工具
今天在调试舵机,发现经常需要频繁地修改PWMDTYx,让舵机旋转到不同的角度,比如让舵机调零,测试舵机不同角度对应车轮的角度等等。如果每次测试都要重新编译,不仅浪费时间,而且对芯片的寿命也有影响,于是想到了用VB编写一个调试舵机的上位机程序,通过串口与单片机通讯,来实现舵机的实时调节。我把写好的程序放在附件里了,希望能给大家提供点帮助。
角度转换为高电平时间
角度 -45 0 45 (anger/度)
高电平时间 1000 1500 2000 (t/us)
计算公式为:T = 1000 + (anger + 45) * (1000 / 90)
该上位机程序可以通过串口与单片机进行通讯,实时改变舵机的角度。
通讯协议为:0xfe 0xMM 0xNN (其中0xfe为包头,0xMM为PWMDTYx高8位,0xN为PWMDTYx低8位)
在串口中断中分三次接收,在第二次接收时保存数据到temp0中,在第三次接收到数据时将PWMDTY01= ((unsigned int)temp0 <<8) | RxData 就可以完成PWM改变输出了。
下位机程序如下:
#include <hidef.h> /* common defines and macros */
#include <MC9S12XS128.h> /* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12xs128"
unsigned char RX=0,temp0;
void uart_putchar(unsigned char ch)
{
if (ch == '\n')
{
while(!(SCI0SR1&0x80)) ;
SCI0DRL= 0x0d;
return;
}
while(!(SCI0SR1&0x80)) ;
SCI0DRL=ch;
}
static void PWM_Init(void)
{
//SB,B for ch2367
//SA,A for ch0145
PWMCTL_CON01=1; //0和1联合成16位PWM;
PWMCAE_CAE1=0; //选择输出模式为左对齐输出模式
PWMCNT01 = 0; //计数器清零;
PWMPOL_PPOL1=1; //先输出高电平,计数到DTY时,反转电平
PWMPRCLK = 0X40; //clockA不分频,clockA=busclock=16MHz;CLK B 16分频:1Mhz
PWMSCLA = 8; //对clock SA 进行2*8=16分频;pwm clock=clockA/16=1MHz;
PWMCLK_PCLK1 = 1; //选择clock SA做时钟源
PWMPER01 = 20000; //周期20ms; 50Hz;(可以使用的范围:50-200hz)
PWMDTY01 = 1500; //高电平时间为1.5ms;
PWME_PWME1 = 1;
}
void setbusclock(void) //PLL setting
{
CLKSEL=0X00; //disengage PLL to system
PLLCTL_PLLON=1; //turn on PLL
SYNR=1;
REFDV=1; //pllclock=2*osc*(1+SYNR)/(1+REFDV)=32MHz;
_asm(nop); //BUS CLOCK=16M
_asm(nop);
while(!(CRGFLG_LOCK==1)); //when pll is steady ,then use it;
CLKSEL_PLLSEL =1; //engage PLL to system;
}
static void SCI_Init(void) //SCI
{
SCI0CR1=0x00;
SCI0CR2=0x2c; //enable Receive Full Interrupt,RX enable,Tx enable
SCI0BDH=0x00; //busclk 8MHz,19200bps,SCI0BDL=0x1a
SCI0BDL=0x68; //SCI0BDL=busclk/(16*SCI0BDL)
//busclk 16MHz, 9600bps,SCI0BDL=0x68
}
interrupt 20 void SCI_Rx_IRS(void) //中断接收
{
unsigned char RxData;
DisableInterrupts;
if (SCI0SR1&0x20)
{
RxData = SCI0DRL;
switch(RX)
{
case 0:
if (RxData==0xfe) RX=1;
break;
case 1:
temp0 = RxData;
RX=2;
break;
case 2:
PWMDTY01= ((unsigned int)temp0 <<8) | RxData;
PORTB=~PORTB;
RX=0;
break;
}
uart_putchar(RxData);
}
EnableInterrupts;
}
void main(void)
{
EnableInterrupts;
setbusclock();
SCI_Init();
PWM_Init();
DDRB=0xff;
for(;;) {
}
}
作者:
whut_wj
时间:
2009-3-7 21:12
好.
作者:
yaoyeming
时间:
2009-3-7 21:41
正需要
作者:
yudongx
时间:
2009-3-8 00:35
事实上,貌似有人已经做过类似的调试程序了,用的是XS128的串口,通过超级终端以及PC键盘指令,非常容易实现
作者:
来不及看清
时间:
2009-3-8 01:09
4#
yudongx
急需啊,呵呵
作者:
sffry
时间:
2009-3-8 01:43
好东西,谢谢楼主分享
作者:
yup775
时间:
2009-3-8 14:00
好!
作者:
燕子老公
时间:
2009-3-8 16:33
太好了,谢谢楼主
作者:
ryan1984
时间:
2009-3-8 19:37
好东西啊
作者:
jenuious
时间:
2009-3-8 19:48
正需要啊
作者:
wysh320
时间:
2009-3-9 09:02
收藏了~~~
作者:
50833713
时间:
2009-3-9 09:07
提示:
作者被禁止或删除 内容自动屏蔽
作者:
liujiejesse
时间:
2009-3-12 14:29
正需要啊
作者:
cys179
时间:
2009-3-14 15:28
you are the best man!
作者:
hellozj
时间:
2009-3-14 15:41
vb的程序可以提供源码么
作者:
379846690
时间:
2009-3-15 10:41
谢谢
作者:
ysu8b204
时间:
2009-3-15 15:51
谢谢
作者:
qqzj1987
时间:
2009-3-15 20:19
需要啊,谢谢
作者:
baitian3744
时间:
2009-3-18 19:45
太谢谢了!
作者:
草竹
时间:
2009-3-19 23:03
·好顶·
作者:
xiaoyao8745
时间:
2009-3-21 16:16
顶
作者:
aijiujiu
时间:
2009-3-21 20:57
好东西。。
作者:
chulu
时间:
2009-3-22 11:10
谢谢楼主!
作者:
chenrunshe_007
时间:
2009-3-31 01:03
牛
作者:
星空下的学生
时间:
2009-3-31 15:19
不知道需不需要,对VB不熟悉啊。先下载看看,还是谢谢了
作者:
shibf
时间:
2009-3-31 19:07
感谢楼主分享。我试试看
作者:
gf128
时间:
2009-4-2 09:49
太好了
作者:
dengxiaofeng
时间:
2009-4-3 13:02
收下了 谢谢!
作者:
flyer1988hh
时间:
2009-4-3 13:35
提示:
作者被禁止或删除 内容自动屏蔽
作者:
xuetingxun2010
时间:
2009-4-12 22:48
看了,真冲动啊
作者:
圈圈
时间:
2009-4-16 19:23
谢咯~
作者:
mc0511
时间:
2009-4-17 19:11
事实上,貌似有人已经做过类似的调试程序了,用的是XS128的串口,通过超级终端以及PC键盘指令,非常容易实现
yudongx 发表于 2009-3-8 00:35
可否提供一下资料!!
作者:
chch08
时间:
2009-4-26 21:31
有帮助!
作者:
pengzhen_lin
时间:
2009-4-26 22:15
好的
作者:
xiaoyao8745
时间:
2009-4-27 18:25
正需要啊
作者:
刘雪磊
时间:
2009-4-27 18:33
用过了,很实用
作者:
mzmm
时间:
2009-5-19 21:44
xiexie
作者:
fzuzhouyu
时间:
2009-5-19 22:58
楼主,我是新手,怎么解压的测试程序打不开呢,我想问你一下那个用什么软件打开啊,谢谢了
作者:
戾辰
时间:
2009-5-21 23:57
十分感谢楼主,
作者:
xxhs
时间:
2009-5-22 12:51
呵呵 其实还有个跟简单的方法 就是直接通过BDM调试,更改PWMDTYxx的寄存器值
作者:
xxhs
时间:
2009-5-22 12:51
呵呵 其实还有个跟简单的方法 就是直接通过BDM调试,更改PWMDTYxx的寄存器值
作者:
zrs62123
时间:
2009-7-9 13:05
好东西
作者:
wanghaiwei1118
时间:
2009-8-12 11:13
好东西
作者:
xiaokk
时间:
2009-8-12 11:17
好东西。。。希望以后更多这样的好心人。。。。多多交流分享!
作者:
hannsg1000
时间:
2009-8-24 13:19
行啊!!!!!!!!!!
作者:
背风口
时间:
2009-11-25 21:45
好东西!
作者:
wangguoxiao
时间:
2009-11-26 09:40
ddddddddddddddd
作者:
lizhuoqi
时间:
2009-11-26 11:09
顶一下!
作者:
lishengfei
时间:
2010-1-4 14:54
谢谢楼主了哦
作者:
YLLL
时间:
2010-1-7 16:02
太谢谢啦
作者:
张书银
时间:
2010-1-7 21:39
看看!!!!!!!!!!!!!!!!!!!!!!!!!!
作者:
张书银
时间:
2010-1-7 21:39
看看!!!!!!!!!!!!!!!!!!!!!!!!!!
作者:
zhh
时间:
2010-1-9 16:54
太好了
作者:
浪子
时间:
2010-1-9 17:04
xiexie
作者:
anjiayu
时间:
2010-1-10 23:14
谢谢!!
作者:
MagicCJ
时间:
2010-1-22 16:26
谢谢写楼主无私分享~~~~~
作者:
小什羊
时间:
2010-1-22 16:39
lz 真好啊
作者:
461
时间:
2010-1-30 00:48
需要啊
作者:
张晓
时间:
2010-2-7 20:28
谢谢
作者:
donghong000
时间:
2010-2-7 21:31
谢谢
作者:
xiaozhiang
时间:
2010-2-11 20:42
xiexie a
作者:
封疆大吏
时间:
2010-2-22 16:33
bu不错不错
作者:
zgxhan
时间:
2010-2-22 17:10
好
作者:
吴楚山人
时间:
2010-2-22 22:17
不错不错
作者:
吴楚山人
时间:
2010-2-22 22:17
下了,谢谢
作者:
阿贵
时间:
2010-3-2 16:56
好.
作者:
changhao
时间:
2010-3-2 22:03
顶啊
作者:
johnny_123
时间:
2010-3-5 15:07
回复
1#
LinX
谢谢 分享
作者:
旭昆
时间:
2010-3-11 20:25
hao
作者:
1987chenwei
时间:
2010-3-11 22:04
有帮助 谢谢……
作者:
shiyucao
时间:
2010-3-12 15:46
看看。。。。。
作者:
xiaowei19890228
时间:
2010-3-12 20:30
好东西
作者:
luson1321
时间:
2010-3-12 23:29
哇。好东西,谢谢;了
作者:
flashspider
时间:
2010-3-13 13:35
学习了,谢谢分享
作者:
少将师长
时间:
2010-3-15 21:11
好东西啊,谢谢啦
作者:
少将师长
时间:
2010-3-15 21:17
我需要这些资料,谢谢啦
作者:
alai881020
时间:
2010-3-16 17:29
多谢楼主!
作者:
nie11kun
时间:
2010-3-17 18:48
可能要用用
作者:
juyan
时间:
2010-3-19 10:10
样条曲线!!!!!!!
作者:
nie11kun
时间:
2010-3-19 10:48
收着用
作者:
qiangqiangxx
时间:
2010-3-19 10:55
谢谢
作者:
huachou
时间:
2010-3-21 22:44
谢谢
作者:
kukuboy2007
时间:
2010-3-23 13:54
试一试
作者:
czhuestc
时间:
2010-3-23 14:29
非常感谢、、
作者:
sunjiajiang
时间:
2010-3-23 15:32
学习一下。。。
作者:
堕落天使
时间:
2010-3-23 19:05
谢谢
作者:
luili16
时间:
2010-3-24 19:59
好啊
作者:
时代还怪
时间:
2010-3-24 21:22
请问包头0xfe是什么啊?
作者:
时代还怪
时间:
2010-3-24 21:47
还有为什么要在串口中断中分三次接收呢?请教!
作者:
shiyucao
时间:
2010-3-24 22:22
看看。。。。
作者:
jiaodoushidw
时间:
2010-3-26 15:39
好
作者:
Bingo5017
时间:
2010-3-27 20:53
顶
作者:
lfllcy
时间:
2010-3-27 20:58
好东西 谢谢!
作者:
coolkids
时间:
2010-3-27 22:56
赞一个~很有个性
作者:
nigel1946
时间:
2010-3-28 01:23
作者:
nigel1946
时间:
2010-3-28 01:25
作者:
fengnan
时间:
2010-3-28 09:52
xiexie
作者:
zhwtfeisikaer
时间:
2010-3-28 13:17
谢谢
作者:
izhangyr
时间:
2010-3-28 14:29
试试看看~~不错
作者:
锦芫
时间:
2010-3-28 14:34
谢谢
欢迎光临 智能车制作 (http://dns.znczz.com/)
Powered by Discuz! X3.2