智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 5558|回复: 10
打印 上一主题 下一主题

ATD

[复制链接]

0

主题

34

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
413
威望
257
贡献
102
兑换币
0
注册时间
2009-2-22
在线时间
27 小时
跳转到指定楼层
1#
发表于 2009-4-29 21:10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <hidef.h>      /* common defines and macros */
#include <MC9S12XS128.h>     /* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12xs128"
#pragma CODE_SEG __NEAR_SEG NON_BANKED
void wait() {
  int i,j;
  for(i=0;i<2000;i++)
    for(j=0;j<1335;j++) ;
}
void ADCInit(void)
{ ATD0CTL1=0x00;   //7:1-外部触发,65:00-8位精度,4:放电,3210:ch
  ATD0CTL2=0x42;   //禁止外部触发, 中断允许   
  ATD0CTL3=0xa0;   //右对齐无符号,每次转换4个序列, No FIFO, Freeze模式下继续转   
  ATD0CTL4=0x01;   //765:采样时间为4个AD时钟周期,ATDClock=[BusClock*0.5]/[PRS+1]
  ATD0CTL5=0x20;   //6:0特殊通道禁止,5:1连续转换 ,4:0单  通道轮流采样
  ATD0DIEN=0x00;   //禁止数字输入
}
word AD_wData = 0;
void main(void) {
  DisableInterrupts;
  ADCInit();   
  DDRB = 0xFF;    //数据方向寄存器为输出
  PORTB  = 0x00;
  EnableInterrupts;
  for(;;) { }
}
void interrupt 22 Int_AD0(void)
{
   DisableInterrupts;
   AD_wData = ATD0DR0;  //Read out the Result Register
   PORTB = (byte)AD_wData;
      wait();
   EnableInterrupts;
}
这段程序调试通过了,把一模拟量输入到AN00,把电源的负极接到GND,给已下好程序的单片机通电。这样能采集吗  ???是否接线有问题啊   我采集时,PORTB口灯一直亮。没什么现象

0

主题

29

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
426
威望
288
贡献
80
兑换币
58
注册时间
2009-1-12
在线时间
29 小时
2#
发表于 2009-5-5 17:22:18 | 只看该作者
ATD0CTL5_MUTL=0
意思是说单通道的采样
Multi-Channel Sample Mode—When MULT is 0, the ATD sequence controller samples only from the specified
analog input channel for an entire conversion sequence. The analog channel is selected by channel selection
code (control bits CD/CC/CB/CA located in ATDCTL5). When MULT is 1, the ATD sequence controller samples
across channels. The number of channels sampled is determined by the sequence length value (S8C, S4C, S2C,
S1C). The first analog channel examined is determined by channel selection code (CD, CC, CB, CA control bits);
subsequent channels sampled in the sequence are determined by incrementing the channel selection code or
wrapping around to AN0 (channel 0).
0 Sample only one channel
1 Sample across several channels
回复 支持 反对

使用道具 举报

0

主题

34

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
413
威望
257
贡献
102
兑换币
0
注册时间
2009-2-22
在线时间
27 小时
3#
 楼主| 发表于 2009-5-10 08:39:38 | 只看该作者
上面哪位答非所问啊     ,哪位高手指教一下啊
回复 支持 反对

使用道具 举报

1

主题

128

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1033
QQ
威望
339
贡献
622
兑换币
3
注册时间
2008-12-11
在线时间
36 小时
毕业学校
河北大学
4#
发表于 2009-5-20 12:38:21 | 只看该作者
ATD0CTL4=0x01;   //765:采样时间为4个AD时钟周期,ATDClock=[BusClock*0.5]/[PRS+1]
  

AD的周期不大于2MHZ,是不是时钟问题???
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

注册会员

Rank: 2

积分
123
威望
173
贡献
20
兑换币
0
注册时间
2009-5-9
在线时间
3 小时
5#
发表于 2009-5-24 14:55:12 | 只看该作者
我感觉也是时钟问题,好像并没有给出BusClock;试一下.
回复 支持 反对

使用道具 举报

80

主题

1045

帖子

0

精华

跨届大侠

北京龙邱智能科技有限公司

Rank: 10Rank: 10Rank: 10

积分
10332

论坛元老奖章

QQ
威望
2905
贡献
6151
兑换币
4515
注册时间
2008-6-7
在线时间
638 小时
6#
发表于 2009-5-24 15:23:29 | 只看该作者
没用过AD中断,有机会试试看。
回复 支持 反对

使用道具 举报

0

主题

34

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
413
威望
257
贡献
102
兑换币
0
注册时间
2009-2-22
在线时间
27 小时
7#
 楼主| 发表于 2009-5-24 21:49:06 | 只看该作者
6# chiusir 我想每行采集48点,怎么设定BusClock,ATD时钟分频因子,摄像头是380线的。XS128    ATD时间为3微妙,怎么算来的啊
回复 支持 反对

使用道具 举报

0

主题

5

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
228
威望
176
贡献
22
兑换币
0
注册时间
2009-3-6
在线时间
15 小时
8#
发表于 2009-5-30 09:55:29 | 只看该作者
LZ用中断方式调出来了吗??时间是否比查询方式用时更少啊??
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
261
威望
207
贡献
46
兑换币
24
注册时间
2009-3-31
在线时间
4 小时
9#
发表于 2009-7-4 15:43:02 | 只看该作者
我也有这种问题,如何解决啊????
回复 支持 反对

使用道具 举报

9

主题

78

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
457
威望
328
贡献
43
兑换币
0
注册时间
2009-11-25
在线时间
43 小时
10#
发表于 2010-3-16 16:00:02 | 只看该作者
回复 1# fangweidong


    我的AD也有这种问题怎么解决的啊
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-5 07:02 , Processed in 0.385184 second(s), 37 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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