Zie: https://github.com/adafruit/Adafruit_FRAM_SPI/blob/master/Adafruit_FRAM_SPI cpp
De volgende methode leest en converteert de invoer naar 8 bit. Ik heb verschillende vragen met betrekking tot zijn functie.
Met behulp van addr = 0xFFFF als een voorbeeld, converteert de methode de variabele naar 0xFF. Ik begrijp dat bits van het einde worden verwijderd, maar zeker 65535! = 255. Misschien relatief, tot hun maximale grootte, maar hoe is dit een nuttige conversie? Ik mis hier misschien iets over bitsgewijs ...
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;
}
Corrigeer me als ik het mis heb, het gieten is om de tekenuitbreiding te voorkomen.
De maskering die ik in theorie begrijp, maar die de toepassing hier helemaal niet begrijpt.
Uiteindelijk wordt altijd dezelfde waarde x = 0 geretourneerd, waarom?
Ik zie ook dat er een schrijfmethode is maar geen leesmethode. Alleen read8. Redenering?