参照: https://github.com/adafruit/Adafruit_FRAM_SPI/blob/master/Adafruit_FRAM_SPI .cpp
次のメソッドは、入力を読み取り、8ビットに変換します。私はその機能に関していくつか質問があります。
例としてaddr = 0xFFFFを使用すると、メソッドは変数を0xFFに変換します。私はビットが最後から削除されていることを理解していますが、確かに65535!= 255です。おそらく相対的に、最大サイズまでですが、これはどのように有用な変換ですか?私はここでビットごとに何かを見逃しているかもしれません..
uint8_t Adafruit_FRAM_SPI::read8 (uint16_t addr)
{
digitalWrite(_cs, LOW);
SPItransfer(OPCODE_READ); //read memory from fram array (2-byte)
SPItransfer((uint8_t)(addr >> 8));
SPItransfer((uint8_t)(addr & 0xFF));
uint8_t x = SPItransfer(0);
digitalWrite(_cs, HIGH);
return x;
}
私が間違っている場合は、私の修正は、キャスティングは、記号拡張が発生するのを防ぐことです。
私が理論的に理解しているマスキングは、ここではその応用を全く理解していません。
最後に、常に同じ値x = 0を返します。なぜですか?
私はまた、書き込みメソッドがありますが、読み取りメソッドはありません。 read8のみ。推理?