完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
引用数据表:
'温度数据存储在TEMP_OUT_L(05h),TEMP_OUT_H(06h)内,作为12位格式的两个补码数据,右对齐。 因此,如果传感器值读数为0且温度下降了1/8度,我希望该值为0xffff或0x0fff - 即0bxxxx111111111111。由于111111111111是-1的12位二进制补码,因此忽略x位。 然而,这种情况并非如此。我实际读取的值是0xefff / 0b1111111011111111 / -257。该值继续从此计算为每1/8度1。 有人能解释一下这里发生了什么吗? 以上来自于谷歌翻译 以下为原文 Quote the datasheet: 'Temperature data is stored inside TEMP_OUT_L (05h), TEMP_OUT_H (06h) as two’s complement data in 12-bit format, right-justified.' So if the sensor value is reading 0 and the temperature drops by 1/8th of a degree, I would expect the value to be 0xffff or 0x0fff - that is 0bxxxx111111111111. Since 111111111111 is 12 bit two's complement for -1, and the x bits are ignored. However this is not the case. The value I actually read is 0xefff / 0b1111111011111111 / -257. The value continues to count down by 1 per 1/8 degree from here. Can anyone explain what is going on here please? |
|
相关推荐
2个回答
|
|
你没有打高低字节吗?
Morevover 0b1111111011111111不是0xEFFF所以我不知道你读了哪个值。 以上来自于谷歌翻译 以下为原文 Didn't you swat the High and Low byte? Morevover 0b1111111011111111 is not 0xEFFF so I don't know which value do you read. |
|
|
|
你是对的。它是12b的0b1110111111111111,所以很有意义。
以上来自于谷歌翻译 以下为原文 Yes you are right. It is 0b1110111111111111 which is 12 1s, so it makes sense. |
|
|
|
只有小组成员才能发言,加入小组>>
请教:在使用UDE STK时,单片机使用SPC560D30L1,在配置文件怎么设置或选择?里面只有SPC560D40的选项
2634 浏览 1 评论
3208 浏览 1 评论
请问是否有通过UART连接的两个微处理器之间实现双向值交换的方法?
1783 浏览 1 评论
3609 浏览 6 评论
5987 浏览 21 评论
939浏览 4评论
1315浏览 4评论
在Linux上安装Atollic TRUEStudio的步骤有哪些呢?
582浏览 3评论
使用DMA激活某些外设会以导致外设无法工作的方式生成代码是怎么回事
1302浏览 3评论
1357浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 10:41 , Processed in 1.168437 second(s), Total 81, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号