87 #ifndef MicrochipSRAM_h 89 #define MicrochipSRAM_h 114 void clearMemory(
const uint8_t clearValue = 0)
const;
121 template <
typename T>
122 uint32_t &
get(
const uint32_t addr, T &value)
const {
130 static uint32_t returnAddress;
131 uint8_t * bytePtr = (uint8_t *)&value;
132 returnAddress = (addr +
sizeof(T)) %
SRAMBytes;
133 digitalWrite(_SSPin, LOW);
136 SPI.transfer((uint8_t)(addr >> 16) & 0xFF);
137 SPI.transfer((uint8_t)(addr >> 8) & 0xFF);
138 SPI.transfer((uint8_t)addr);
139 for (uint32_t i = 0; i <
sizeof(T); i++)
140 *bytePtr++ = SPI.transfer(0x00);
141 digitalWrite(_SSPin, HIGH);
142 return (returnAddress);
144 template <
typename T>
145 uint32_t &
put(
const uint32_t addr,
const T &value)
const {
153 static uint32_t returnAddress;
154 const uint8_t * bytePtr = (
const uint8_t *)&value;
155 returnAddress = (addr +
sizeof(T)) %
SRAMBytes;
156 digitalWrite(_SSPin, LOW);
159 SPI.transfer((uint8_t)(addr >> 16) & 0xFF);
160 SPI.transfer((uint8_t)(addr >> 8) & 0xFF);
161 SPI.transfer((uint8_t)addr);
162 for (uint32_t i = 0; i <
sizeof(T); i++)
163 SPI.transfer(*bytePtr++);
164 digitalWrite(_SSPin, HIGH);
165 return (returnAddress);
167 template <
typename T>
176 addr =
put(addr, value);
Access the Microchip SRAM with automated memory size detection.
Definition: MicrochipSRAM.h:106
const uint32_t SRAM_1024
Equates to 1mbit of storage.
Definition: MicrochipSRAM.h:98
uint32_t & fillMemory(uint32_t addr, T &value) const
Definition: MicrochipSRAM.h:168
~MicrochipSRAM()
Definition: MicrochipSRAM.cpp:93
const uint8_t SRAM_PAGE_MODE
2MSB 10 is page mode
Definition: MicrochipSRAM.h:96
const uint8_t SRAM_READ_MODE_REG
Read the mode register.
Definition: MicrochipSRAM.h:94
uint32_t & put(const uint32_t addr, const T &value) const
Definition: MicrochipSRAM.h:145
const uint8_t SRAM_BYTE_MODE
2MSB 00 is Byte mode
Definition: MicrochipSRAM.h:95
const uint32_t SRAM_64
Equates to 64kbit of storage.
Definition: MicrochipSRAM.h:102
const uint32_t SRAM_256
Equates to 256kbit of storage.
Definition: MicrochipSRAM.h:100
const uint32_t SRAM_128
Equates to 128kbit of storage.
Definition: MicrochipSRAM.h:101
const uint32_t SRAM_512
Equates to 512kbit of storage.
Definition: MicrochipSRAM.h:99
uint32_t SRAMBytes
Number of bytes available on chip//.
Definition: MicrochipSRAM.h:179
MicrochipSRAM(const uint8_t SSPin)
Definition: MicrochipSRAM.cpp:9
const uint8_t SRAM_WRITE_MODE_REG
Write the mode register.
Definition: MicrochipSRAM.h:93
const uint8_t SRAM_SEQ_MODE
2MSB 11 is sequential mode
Definition: MicrochipSRAM.h:97
const uint8_t SRAM_READ_CODE
Read.
Definition: MicrochipSRAM.h:104
const uint8_t SRAM_WRITE_CODE
Write.
Definition: MicrochipSRAM.h:103
void clearMemory(const uint8_t clearValue=0) const
Definition: MicrochipSRAM.cpp:99