智能车制作

标题: 【求助】我的AD采集经过中值和均值滤波之后,提示possible loss of data ,值明显不对 [打印本页]

作者: 青春少年样样红    时间: 2013-5-7 19:20
标题: 【求助】我的AD采集经过中值和均值滤波之后,提示possible loss of data ,值明显不对
我也用了强制转换。但是不好使啊,采集的值应该是2000多才对,但是出来的只有200多。这是程序,先看第二个函数。
uchar middle_data(uchar h1,uchar h2,uchar h3,uchar h4,uchar h5)  //中值选择
{ uchar t=0,s=0;
  uchar out_data,data_temp[5]={0},d_temp;
  data_temp[0]=h1; data_temp[1]=h2; data_temp[2]=h3; data_temp[3]=h4; data_temp[4]=h5;
for(t=0;t<5;t++)
{ for(s=0;s<4-t;s++)
  { if(data_temp[s]>data_temp[s+1])
    { d_temp=data_temp[s]; data_temp[s]=data_temp[s+1]; data_temp[s+1]=d_temp; }
}
}
out_data=data_temp[3];  
  return out_data; }
uint Mult_covert(uchar num)
{uchar result[5];
  uint ss;  
   uint i,j;
   switch(num)
    {
      case 0:
       {for(j=0;j<5;j++)
         {  for(i=0;i<5;i++)
        {while(!ATD0STAT0_SCF)  //等待当前队列转换完成   
        result[i]=(uchar)ATD0DR0;
              ATD0STAT0_SCF=1;//清除队列完成标志
       }
       pp[j]=middle_data(result[0],result[1],result[2],result[3],result[4]);
    }   
        ss=(pp[0]+pp[1]+pp[2]+pp[3]+pp[4])/5;
       }  break;
      case 1:
       { for(j=0;j<5;j++)
         {  for(i=0;i<5;i++)
        {while(!ATD0STAT0_SCF)  //等待当前队列转换完成   
         result[i]=(uchar)ATD0DR1;
            ATD0STAT0_SCF=1; //清除队列完成标志
       }
       pp[j]=middle_data(result[0],result[1],result[2],result[3],result[4]);
    }   
        ss=(pp[0]+pp[1]+pp[2]+pp[3]+pp[4])/5;
       }break;
      case 2:
       {for(j=0;j<5;j++)
         {  for(i=0;i<5;i++)
        {while(!ATD0STAT0_SCF)  //等待当前队列转换完成   
        result[i]=(uchar)ATD0DR2;
              ATD0STAT0_SCF=1;//清除队列完成标志
       }
       pp[j]=middle_data(result[0],result[1],result[2],result[3],result[4]);
    }   
        ss=(pp[0]+pp[1]+pp[2]+pp[3]+pp[4])/5;
       }break;
      
      default:  break;
    }  
    return ss;
}

作者: 青春少年样样红    时间: 2013-5-7 19:54
数组只能存255以下的数?
作者: 穆旦阿斗    时间: 2013-5-7 20:37
青春少年样样红 发表于 2013-5-7 19:54
数组只能存255以下的数?

你这个uchar出来的不只有200+才怪了,另外你说应该是2000+的话,你是用的12位精度吧?感觉没有必要 8位足够
作者: 青春少年样样红    时间: 2013-5-7 20:50
穆旦阿斗 发表于 2013-5-7 20:37
你这个uchar出来的不只有200+才怪了,另外你说应该是2000+的话,你是用的12位精度吧?感觉没有必要 8位足 ...

不用char用uint吗?还是什么?
作者: 青春少年样样红    时间: 2013-5-7 20:53
穆旦阿斗 发表于 2013-5-7 20:37
你这个uchar出来的不只有200+才怪了,另外你说应该是2000+的话,你是用的12位精度吧?感觉没有必要 8位足 ...

具体应该改哪里,谢谢了
作者: 穆旦阿斗    时间: 2013-5-8 18:08
青春少年样样红 发表于 2013-5-7 20:53
具体应该改哪里,谢谢了

额  额   额  





欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2