物联网技术
直播中

陈银川

10年用户 15经验值
擅长:可编程逻辑 模拟技术 接口/总线/驱动 控制/MCU EDA/IC设计
私信 关注
[问答]

ble112蓝牙芯片 十六进制取平均值计算

下面是程序adc模块的代码 现在主要问题在将一组十六进制相加后除以总个数 ,app读取出来的结果与我实际计算的结果不一致。说明我的十六进制数计算存在问题,想请教我该如何计算。谢谢!
event hardware_adc_result(input, value)

        # 1.设定采样总时间 Xs,设定记录counter 0-X/10(ms)的ad数据值,
        #  平均counter(20:X/10)(ms)的数据,同时重置counter为初值状态。
       
        if counter < 100 then
                counter = counter + 1
               
                # 交换AD采样的数据高低位字节。               
                adc_buf1 = (value >> 8) & $00ff
                adc_buf2 = (value << 8)        & $ff00
                adc_buf = adc_buf1 | adc_buf2
               
                #write adc value               
                call attributes_write(c_adc_data, 0, 2, adc_buf)       
               
                #十六进制数累加
                adc_val = adc_val + adc_buf
               
                       
        else
                if counter = 100 then
                       
                        #平均一组16进制值
                        adc_result = (adc_val >> 4)/16
                        #write adc value               
                        call attributes_write(c_adc_result, 0, 2, adc_result)                                                       
                       
                        #关闭 ad采样                       
                        call hardware_set_soft_timer(0, 0, 0)       
                                                                                                                       
                        #关闭IO端口
                        call hardware_io_port_write(1,  pin_select_mask, $ff)
                       
                        #重置counter值为初始状态
                        counter = 0
                       
                end if
        end if

end

已退回1积分

回帖(1)

七夜一夕

2015-8-29 12:37:56
顶一下。。。。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分