智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 3757|回复: 5
打印 上一主题 下一主题

[讨论] AD采样问题(电磁组)

[复制链接]

4

主题

50

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
495
威望
334
贡献
63
兑换币
161
注册时间
2012-9-9
在线时间
49 小时
跳转到指定楼层
1#
发表于 2013-2-22 23:38:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
//这个程序是用来采集2个传感器传回的信号进行转化,可是一起用的时候就出现问题。单独用一个AD没问题。恳求大神们拯救。。。。。

#include "main.h"
//uint counttime,showtime;
//uchar pwmflag,modecount,delaycount;
unsigned int AdResult[4];
unsigned count;
unsigned int sampletimes=0;
void main(void) {
  /* put your own code here */
//  unsigned char value;
  SetBusCLK_64M();        // 选择待设定的总线频率
Port_init();            // IO口初始化
PWM_Init();             // PWM 初始化
LCD_Init();             // LCD 初始化
AD_Init() ;             // AD  初始化
PIT_Init();             // 中断初始化
// Capture_Init();         // 捕捉初始化
LCD_clear();            // 清屏幕  
  EnableInterrupts;       // 开总中断
  for(;;) {   
   
  }
  for(;;) {
  } /* loop forever */
  /* please make sure that you never leave main */
}
#pragma CODE_SEG __NEAR_SEG NON_BANKED
void interrupt 66 PIT0_ISR(void)
{
    DisableInterrupts;             // 关闭总中断
     
   
      
   
    LCD_Write_Num(0,5,AdResult[2],4);
    LCD_Write_Num(54,5,AdResult[3],4);
     PORTE_PE7=1;
    AdResult[3]=0;
    AdResult[2]=0;
   // AdResult[1]=0;
   // AdResult[0]=0;
    for(;sampletimes<20;sampletimes++) {
        while(!(ATD0STAT0&0x08));
      {
       // AdResult[0]+=ATD0DR0;
       // AdResult[1]+=ATD0DR1;
      
       AdResult[3]+=ATD0DR3;
      }
       while(!(ATD0STAT0&0x04)) ; {
        AdResult[2]+=ATD0DR2;}
      
    }
    AdResult[3]=AdResult[3]/20;
    AdResult[2]=AdResult[2]/20;
  //  AdResult[1]=AdResult[1]/20;
   // AdResult[0]=AdResult[0]/20;
    sampletimes=0;
    PORTE_PE7=0;                     // finish with 89us
      
      
      
      
      
  PORTB_PB7=~PORTB_PB7;
   
   
    PITTF_PTF0=1;                  // 清中断标志位
    EnableInterrupts;
}

4

主题

50

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
495
威望
334
贡献
63
兑换币
161
注册时间
2012-9-9
在线时间
49 小时
2#
 楼主| 发表于 2013-2-22 23:39:04 | 只看该作者
求大家能看一下,指导一下。自己真的看了很久很久了,不知道问题出在哪里...
回复 支持 反对

使用道具 举报

4

主题

50

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
495
威望
334
贡献
63
兑换币
161
注册时间
2012-9-9
在线时间
49 小时
3#
 楼主| 发表于 2013-2-22 23:40:59 | 只看该作者
while(!(ATD0STAT0&0x08));
是改成 while(!ATD0STAT_SCF);的
回复 支持 反对

使用道具 举报

3

主题

156

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1284

优秀会员奖章活跃会员奖章

威望
740
贡献
228
兑换币
29
注册时间
2012-3-10
在线时间
158 小时
4#
发表于 2013-2-23 21:18:34 | 只看该作者
/*****************AD初始化*********************/
void AD_Init(void)
{  
  //8ch   
    ATDCTL1=0x20;   //7:1-外部触发,65:00-8位精度,4:放电,3210:ch   ATDCTL1=0x20;十位精度
    ATDCTL2=0x40;   //禁止外部触发, 中断禁止   
    ATDCTL3=0xc0;   //右对齐无符号,每次转换8个序列, No FIFO, Freeze模式下继续转   
    ATDCTL4=0x45;   //765:采样时间为4个AD时钟周期,ATDClock=[BusClock*0.5]/[PRS+1]  PRS=1;
    ATDCTL5=0x30;   //6:0特殊通道禁止,5:1连续转换 ,4:1多通道轮流采样
    ATDDIEN=0x00;   //禁止数字输入
}
/*****************Read AD Value*********************/
void Read_AD()
{
   while(ATDSTAT0_SCF == 0);
    // AD[0]=ATDDR0;
     AD[1]=ATDDR1;  //gyro
     AD[2]=ATDDR2;  //accle
     AD[3]=ATDDR3;  //left
     AD[4]=ATDDR4;  //right  
}

for(;;)
  {
   sum_AD1=0;
   sum_AD2=0;
   for(i=0;i<20;i++)
    {  
      Read_AD();//读取各路AD值
      sum_AD1+=AD[1];
      sum_AD2+=AD[2];
    }
    aver_AD1=sum_AD1/20;
   aver_AD2=sum_AD2/20;
   
    OutData[0] = g_fGravityAngle*15;
    OutData[1] = g_fCarAngle*16;
    OutData[2] = AD[3]*5+100;
    //OutData[3] = Pluse*10;
   
    OutPut_Data();//送串口显示波形
    这是我上届用的程序,看看你的初始化、函数调用有没有问题,希望对你有帮助
回复 支持 反对

使用道具 举报

4

主题

50

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
495
威望
334
贡献
63
兑换币
161
注册时间
2012-9-9
在线时间
49 小时
5#
 楼主| 发表于 2013-2-25 17:09:33 | 只看该作者
xiexueshi 发表于 2013-2-23 21:18
/*****************AD初始化*********************/
void AD_Init(void)
{  

谢了,问题找到了,不是程序的问题,是硬件的问题,周围存在极大的干扰,哈哈
回复 支持 反对

使用道具 举报

26

主题

216

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1524
QQ
威望
759
贡献
411
兑换币
468
注册时间
2013-3-28
在线时间
177 小时
6#
发表于 2014-2-18 19:09:27 | 只看该作者
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-21 01:34 , Processed in 0.045121 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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