- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
ble112蓝牙芯片 十六进制取平均值计算
录入:edatop.com 点击:
下面是程序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
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
顶一下。