智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1031|回复: 3
打印 上一主题 下一主题

AD转换出问题了!大神求解!

[复制链接]

4

主题

6

帖子

0

精华

注册会员

Rank: 2

积分
133
威望
90
贡献
19
兑换币
39
注册时间
2014-12-24
在线时间
12 小时
毕业学校
青岛科技大学
跳转到指定楼层
1#
发表于 2015-3-3 22:20:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
5贡献
各位大神!舵机单独测试可以转,传感器也没有问题,AD貌似除了问题,但是不知道在哪里,求指点啊!拜托了!这是AD初始化
void InitAD(void)
{   



  ATD0CTL1=0x00; //00000000  选择AD 通道为外部触发,8 位精度,采样前不放电
  ATD0CTL2=0x40; //01000000  标志位自动清零,禁止外部触发, 禁止中断
  ATD0CTL3=0x88; //10001000  右对齐无符号,每次转换1 个序列, No FIFO, Freeze 模式下继续转
  ATD0CTL4=0x01; //00000001  采样时间为4 个AD 时钟周期,PRS=1,ATDClock=16/(2*(1+1))=4MHz
  ATD0CTL5=0x23; //00100011 特殊通道禁止,连续转换,单通道转换,输入通道为3
  ATD0DIEN=0x00; //00000000  禁止数字输入

   }


主函数中AD部分

        while(!ATD0STAT0_SCF);     //等待转换结束,退出循环  
        ad_value=(int)ATD0DR0L;      
       Delay(100);                     
       PWMDTY01 =1500+ad_value;



舵机就是不转,各位大神求解啊!小弟不胜感激啊!

回复

使用道具 举报

4

主题

6

帖子

0

精华

注册会员

Rank: 2

积分
133
威望
90
贡献
19
兑换币
39
注册时间
2014-12-24
在线时间
12 小时
毕业学校
青岛科技大学
2#
 楼主| 发表于 2015-3-3 22:37:55 | 只看该作者
自己顶一个,唉,找不到问题所在真难受。
回复

使用道具 举报

6

主题

1037

帖子

1

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
9108

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

威望
4514
贡献
2400
兑换币
2952
注册时间
2014-7-18
在线时间
1097 小时
毕业学校
合肥工业大学
3#
发表于 2015-3-4 10:36:14 | 只看该作者
是不是1500+ad_value后超出舵机高电平时间范围了
先把转化的数据发到电脑看看
回复

使用道具 举报

4

主题

6

帖子

0

精华

注册会员

Rank: 2

积分
133
威望
90
贡献
19
兑换币
39
注册时间
2014-12-24
在线时间
12 小时
毕业学校
青岛科技大学
4#
 楼主| 发表于 2015-3-4 12:45:30 | 只看该作者
支点305 发表于 2015-3-4 10:36
是不是1500+ad_value后超出舵机高电平时间范围了
先把转化的数据发到电脑看看

现在改成了这样。我们用的128的芯片,用导线连接主板上的输入引脚AD和GND,舵机就会打到中间,但是用稳压源连接导线不论多大的电压,舵机都会左右摇摆。这是为什么?


void InitAD(void)
{   
   
  
   ATD0DIEN=0x00; //00000000  禁止数字输?
  ATD0CTL1=0x00; //00000000  选择AD 通道为外部触发,8 位精度,采样前不放电
  ATD0CTL2=0xC0; //01000000  标志位自动清零,禁止外部触发, 禁止中断
  ATD0CTL3=0x0D; //11000100  右对齐无符号,每次转换2 个序列, No FIFO, Freeze 模式下继续转
  ATD0CTL4=0xE1; //00000001  采样时间为4 个AD 时钟周期,PRS=1,ATDClock=24/(2*(1+1))=4MHz
  ATD0CTL5=0x23; //00110011  特殊通道禁止,连续转换,多通道转换,输入通道3

   }


主函数中

  while(!ATD0STAT2L_CCF3);     //等待转换结束,退出循环  
     LEFT=(byte)ATD0DR3H;
     while(!ATD0STAT2L_CCF4);     //等待转换结束,退出循环  
     RIGHT=(byte)ATD0DR4H;  

  PWMDTY01 =1500+LeftSt+RightSt;
      Delay(100);   

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-26 03:35 , Processed in 0.387603 second(s), 34 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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