金牌会员
- 积分
- 1147
- 威望
- 618
- 贡献
- 267
- 兑换币
- 368
- 注册时间
- 2012-12-29
- 在线时间
- 131 小时
|
1106161071 发表于 2011-7-3 23:27
电磁专用舵机300HZ 的 哪来的20ms?
我的舵机 使用的 20ms的,是3010,现在给他脉冲 左转右转都没问题,AD采集值没问题,然后写了个简单的控向程序,但是不好用,大神帮忙看看吧
void Duo_zhuanwan()
{
int p1,m ;
m= (ad_value_0 - ad_value_1)/(ad_value_0 + ad_value_1);
if(m<=1||m>=-1) /* 1500时 90度 中间 AD采集数 120*/
{
p1=1500-(m*400);
pwm2_init(p1);
}
} /*___占空比____*/
这是AD部分
void Init_AD_more(void)
{
ATD0CTL1 = 0x00; //选用8位模数转换
ATD0CTL2 = 0X40; //启动A/D转换,快速清零,禁止中断
//delay_atd(); //延时
ATD0CTL3 = 0Xa0; //10100000 转换序列长度为4 右对齐
ATD0CTL4 = 0x07; //AD模块时钟频率为2MHz fA=fBUS/(PRS+1)/2 24周期采集
ATD0CTL5 = 0X30; //多通道,连续转换,起始通道AD0 AD1,AD2,AD3,因为 0011 转换一次
ATD0DIEN = 0X00; // 禁止数字输入■ 8
}
/*______________________________AD 0---1 口 数据_____________________________________*/
void AD_get_more(void)
{
while(!ATD0STAT2_CCF0);
{
PORTA_PA0=1;
ad_value_0=ATD0DR0;
}
while(!ATD0STAT2_CCF1);
{
PORTA_PA1=1;
ad_value_1=ATD0DR1;
}
}
|
|