我将 6 个值(4x 3bit + 1bit)编码为 16bit 整数,并通过串行将它们传输到 ATTINY84,将它们分成 2 个字节。这一切都很好,直到我将字节重新组合成一个 16 位整数。
例子:
我正在发送以下二进制状态0001110000001100
,该状态转换7180
为[18, 28]
.
我将该字节数组放入 EEPROM 并在下一次电源循环时读取它。
重启后,我的串行调试输出如下所示:
18
28
7180
惊人的。看起来一切都很好,我的那部分代码是:
byte d0 = EEPROM.read(0);
byte d1 = EEPROM.read(1);
unsigned int w = d0 + (256 * d1);
但现在最奇怪的事情发生了。当我逐位阅读时,我回来了:
0011000000111000
should be:
0001110000001100
通过:
for(byte t = 0; t < 16; t++) {
serial.print(bitRead(w, t) ? "1" : "0");
}
位表示完全相反。这怎么可能?或者,也许我错过了一些东西。
我还确认,当我提取实际的 3 位位置以接收我的原始值0..7
时,它全部关闭。
任何帮助,将不胜感激。