52 #include <avr/pgmspace.h>
54 #define PRINTF(FORMAT,args...) printf_P(PSTR(FORMAT),##args)
65 static uint8_t initialized = 0;
69 uint8_t i = 0,
id = 0;
90 PRINTF(
"at45db.c: Initialization failed\n");
102 if (!initialized)
return;
104 uint8_t cmd[4] = {0xC7, 0x94, 0x80, 0x9A};
115 if (!initialized)
return;
118 (uint8_t) (addr << 5), 0x00};
129 if (!initialized)
return;
132 (uint8_t) (addr << 2), 0x00};
144 if (!initialized)
return;
147 (uint8_t) (addr >> 8), (uint8_t) (addr)};
151 for (i = 0; i < bytes; i++) {
160 if (!initialized)
return;
165 (uint8_t) (addr >> 6), (uint8_t) (addr << 2), 0x00};
176 if (!initialized)
return;
179 (uint8_t) (p_addr >> 6),
180 ((uint8_t) (p_addr << 2) & 0xFC) | ((uint8_t) (b_addr >> 8) & 0x3),
184 for (i = 0; i < bytes; i++) {
197 uint8_t *buffer, uint16_t bytes) {
198 if (!initialized)
return;
207 uint8_t *buffer, uint16_t bytes) {
209 if (!initialized)
return;
215 (uint8_t) (p_addr >> 6),
216 (((uint8_t) (p_addr << 2)) & 0xFC) | ((uint8_t) (b_addr >> 8)),
220 for (i = 0; i < 4; i++) {
224 for (i = 0; i < bytes; i++) {
233 if (!initialized)
return;
236 (uint8_t) (addr >> 6),
237 (uint8_t) (addr << 2),
251 if (!initialized)
return;
258 for (i = 0; i < bytes; i++) {
267 if (!initialized)
return;
269 for (i = 0; i < 4; i++) {
277 if (!initialized)
return;
283 PRINTF(
"at45db.c: at45db_busy_wait timeout\n");