注册 登录
查看: 658|回复: 14

[K60] 对你们的ADC的例程的程序有疑问

[复制链接]
发表于 2013-7-30 21:10:56 | 显示全部楼层 |阅读模式
看看我修改的地方对吗

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2013-7-30 21:28:03 | 显示全部楼层
自己验证一下不就知道了嘛
回复 支持 反对

使用道具 举报

发表于 2013-7-31 16:27:02 | 显示全部楼层
16进制和2进制搞清出,再说吧
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-7-31 19:52:27 | 显示全部楼层
我的意思是那里应该是4,而不是0x100=256
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-7-31 19:53:17 | 显示全部楼层
CHT7504 发表于 2013-7-31 16:27
16进制和2进制搞清出,再说吧


我的意思是那里应该是4,而不是0x100=256
回复 支持 反对

使用道具 举报

发表于 2013-7-31 23:53:57 | 显示全部楼层
杀神12300 发表于 2013-7-31 19:53
我的意思是那里应该是4,而不是0x100=256

山外哥 的思想太他妈的 跨度 大 ,基础不踏实容易晕的
  1. static uint8 n = (uint8)(0x100 - (int8)(1 << (SAMP_COUNT)));


如果定义成:
  1. static int8 n =  - (1 << (SAMP_COUNT));


这样你就看得懂了吧?

因为与前n此求平均,而一开始 的 n 应该是负数,计数到 0 表示 积累了  (1 << (SAMP_COUNT)) 次 ,这是的求平均值与之前还没积累满的时候求平均值是不一样的,所以有前面的 if 判断
回复 支持 反对

使用道具 举报

发表于 2013-7-31 23:56:52 | 显示全部楼层
我来一个容易理解的版本(没编译过,不过思想肯定是对的):
  1. uint16 adc_flt(ADCn_Ch_e adcn_ch, ADC_nbit bit)
  2. {
  3.     static uint16 buf[(1<<(SAMP_COUNT))] = {0};  //保存前  2^SAMP_COUNT 次 的采样数据
  4.     static int8 n =  - (1 << (SAMP_COUNT));
  5.     static uint32 sum = 0;

  6.     if(n < 0 )
  7.     {
  8.         buf[(uint8)((1<<(SAMP_COUNT))+n)] = adc_once(adcn_ch, bit);
  9.         sum += buf[(uint8)((1<<(SAMP_COUNT))+n)];
  10.         n++;
  11.         return ((uint16)(sum >> SAMP_COUNT));
  12.     }

  13.     sum -= buf[n];
  14.     buf[n] = adc_once(adcn_ch, bit);
  15.     sum += buf[n];

  16.     if (++n >= (1 << (SAMP_COUNT)))
  17.     {
  18.         n = 0;
  19.     }
  20.     return ((uint16)(sum >> SAMP_COUNT)); /* ADC采样值由若干次采样值平均 */
  21. }
  22. #undef  SAMP_COUNT
回复 支持 反对

使用道具 举报

发表于 2013-7-31 23:58:17 | 显示全部楼层
山外哥的思想是 利用了溢出 变量会变为 0 的方法
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-1 10:59:49 | 显示全部楼层
本帖最后由 杀神12300 于 2013-8-1 11:10 编辑
微粒子 发表于 2013-7-31 23:56
我来一个容易理解的版本(没编译过,不过思想肯定是对的):

嗯,你的我是看懂了!根据你的思考山外哥的也懂了!但是在#define SAMP_COUNT  2  的情况下,你写的程序保存数据的位置,应该在buf[0]到buf[3]对吧,而山外哥保存数据的位置应该在buf[0x100+0]到buf[0x100+3]对吧,这样的话,山外哥的程序是不是对开辟数组的空间要求比较大呢,比较占用内存!
回复 支持 反对

使用道具 举报

发表于 2013-8-1 11:13:31 | 显示全部楼层
杀神12300 发表于 2013-8-1 10:59
嗯,你的我是看懂了!根据你的思考山外哥的也懂了!但是在#define SAMP_COUNT  2  的情况下,你写的程序保存 ...

跟山外哥的,其实是一样的意思,山外哥是用 uint8 类型,我用的是 int8 类型,一个有符号,一个无符号。
无符号,想当作 负数来用,就要 给他一个 0x100 减 ,其实你把那个 0x100 替换成 0 ,结果也是对的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-1 19:14:17 | 显示全部楼层

帖子标题务必清晰表现帖子内容,不能仅写“求助”等无意义标题

微粒子 发表于 2013-8-1 11:13
跟山外哥的,其实是一样的意思,山外哥是用 uint8 类型,我用的是 int8 类型,一个有符号,一个无符号。
无符 ...

每次串口都会发送图片的内容,但是我却找不到,哪里有发送那个文字的程序,求指导!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2013-8-1 19:52:58 | 显示全部楼层
杀神12300 发表于 2013-8-1 19:14
每次串口都会发送图片的内容,但是我却找不到,哪里有发送那个文字的程序,求指导!

你需要看 三天入门 的函数,有介绍的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-1 20:19:57 | 显示全部楼层
风落小鱼 发表于 2013-8-1 19:52
你需要看 三天入门 的函数,有介绍的

能告诉我在哪个.c文件里吗?看三天入门太多了,不能很好定位在哪一块
回复 支持 反对

使用道具 举报

发表于 2013-8-1 23:05:45 | 显示全部楼层
杀神12300 发表于 2013-8-1 20:19
能告诉我在哪个.c文件里吗?看三天入门太多了,不能很好定位在哪一块

start.c 里打印启动信息
三天入门教程的开头,就见系统的启动,讲到启动的时候打印调试信息
回复 支持 反对

使用道具 举报

发表于 2013-8-1 23:05:48 | 显示全部楼层
杀神12300 发表于 2013-8-1 20:19
能告诉我在哪个.c文件里吗?看三天入门太多了,不能很好定位在哪一块

start.c 里打印启动信息
三天入门教程的开头,就见系统的启动,讲到启动的时候打印调试信息
回复 支持 反对

使用道具 举报

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

本版积分规则

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