Я не могу понять, как читать / записывать в eeprom, используя следующий класс:
#include <avr/eeprom.h>
#include "myclass.hpp"
uint16_t arraySize = 0;
struct param {
char name[10];
char value[20];
};
std::vector<param> arrayOfParams;
std::vector<param>::iterator iterator;
MyClass::Myclass() {
read(0, &arraySize, sizeof(arraySize));
};
void MyClass::reset() {
arraySize = 0;
uint16_t addr = sizeof(arraySize);
write(0, &arraySize, addr);
uint8_t buffer[16];
memset(buffer, 0xFF, sizeof(buffer));
while(addr < 1024) {
eeprom_write_block(buffer, (void*)addr, sizeof(buffer));
addr += sizeof(buffer);
}
};
void MyClass::read(uint16_t from, void * result, uint16_t size) {
byte * b = (byte*)result;
for (uint16_t i = 0; i < size; i++) {
*b++ = eeprom_read_byte(from++);
}
};
void MyClass::write(uint16_t from, void * data, uint16_t size) {
const byte * b = (const byte*)data;
for(uint16_t i = 0; i < size; i++) {
eeprom_write_byte(from++, *b++);
}
};
Цель состоит в том, чтобы хранить «байты управления», которые содержат размер основного массива структур - arrayOfParams.Прежде всего, скрипт записывает в пространство байтов управления любое значение, кроме 0x00.Затем отказывается писать основную структуру arrayOfParams.
Есть идеи, что я делаю не так?