打印

求助

[复制链接]
1176|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
victor3l|  楼主 | 2012-6-30 09:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
tc, TE, AD, ic, ST
ulong  FilterDatChannel1(ulong datBuf[],ulong temp)
{
uchar i;
//static xdata ulong datBuf[8] = {0};
static uchar datCount;
  xdata ulong sum = 0;
datBuf[datCount] = temp;
for(i = 0; i< 8; i++)
  sum += datBuf[i];
sum = (ulong)(sum >> 3);//求均值
datCount++;
if(datCount == 8)
  datCount = 0;
return sum;
}
我在调用这个函数时,在外部定义了6个ulong 型的数组,是用来存储6个AD分别采样的数据。当我在主循环中处理一路数据是正确的,当处理两路数据是数据就不对了,好像各个数据都减半似的。不同的AD我开辟了不同的存储数据的队列啊,数据应该不会相互冲刷吧,为什么数据不对了?请大家帮帮忙,谢谢

相关帖子

沙发
ayb_ice| | 2012-6-30 09:48 | 只看该作者
基本算法的问题吧

使用特权

评论回复
板凳
wangyy608| | 2012-6-30 09:53 | 只看该作者
datBuf[datCount] = temp;
的目的是什么?

使用特权

评论回复
地板
victor3l|  楼主 | 2012-6-30 10:12 | 只看该作者
3# wangyy608


我在调用的时候会定义一个和他类型一样数组。该数组的目的就是把不同AD来的数据temp ,放到不同的地方,以免他们相互干扰。这是我的期望,实际上他没有到达预期。您能给点建议吗,谢谢。

使用特权

评论回复
5
victor3l|  楼主 | 2012-6-30 10:13 | 只看该作者
2# ayb_ice
大侠,请给我点建议嘛,谢谢

使用特权

评论回复
6
wangyy608| | 2012-6-30 10:26 | 只看该作者
感觉这里应该是有些问题,就这么一段也没法说啊

使用特权

评论回复
7
ayb_ice| | 2012-6-30 11:49 | 只看该作者
2# ayb_ice  
大侠,请给我点建议嘛,谢谢
victor3l 发表于 2012-6-30 10:13

程序本身没有问题,但和你的意思是否一致,就难说了

因为你的需求说的不是很清楚,无法判断

使用特权

评论回复
8
ayb_ice| | 2012-6-30 12:00 | 只看该作者
都没有看到某路的相关参数
比如
有6路,每路8个数据求平均值
应该是个两维数组
U16 ad[6][8];
调用时保存数据应该有通道参数,数据次数,数据
比如这样
ulong  FilterDatChannel1(U8 ch, U8 index, U16 value);

使用特权

评论回复
9
wukunshan| | 2012-6-30 19:10 | 只看该作者
楼主你真是马大哈呀,
static uchar datCount;
定义静态变量又不初始化,把它初始化:
static uchar datCount=0;
试试看。

使用特权

评论回复
10
victor3l|  楼主 | 2012-7-1 18:27 | 只看该作者
8# ayb_ice
谢谢老师指点

使用特权

评论回复
11
victor3l|  楼主 | 2012-7-1 18:27 | 只看该作者
9# wukunshan
谢谢老师指点

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

77

主题

308

帖子

5

粉丝