Собственно, есть EEPROM на AT24C32, нужно писать и читать из него int и float. Гугл выдает кучу кода но дельных комментариев в нем нет, а я хочу понять принцип Если кто может - поделитесь кодом, где реализованно чтение и запись в EEPROM
Задача делится на два части: 1) научиться считывать и записывать в отдельные байты через I2C. 2) научиться обращаться к int и float как к массиву байт. Как решается задача 1 вы уже, вероятно, разобрались. Вторая задача решается разными способами, можно воспользоваться union либо преобразованием типа указателя. Код (Text): void write_eeprom(int adr, byte data) { // write I2C eeprom } byte read_eeprom(int adr) { // read I2C eeprom } void test() { int int_data; float float_data; byte *buffer; int address; buffer = (byte *)&int_data; for (int i = 0; i < sizeof(int_data); i++) write_eeprom(address+i, buffer[i]); buffer = (byte *)&float_data; for (int i = 0; i < sizeof(float_data); i++) write_eeprom(address+i, buffer[i]); buffer = (byte *)&int_data; for (int i = 0; i < sizeof(int_data); i++) buffer[i] = read_eeprom(address+i); buffer = (byte *)&float_data; for (int i = 0; i < sizeof(float_data); i++) buffer[i] = read_eeprom(address+i); }
Спасибо за помощь, но я не совсем понимаю как решить первую задачу, я конечно знаю, что делается это силами библиотеки Wire, но сколько я не втыкал в datasheet от AT24C32 я так и не понял что и куда записывать и, соответственно, откуда читать...
Хммм, я это видел уже, я же в начале писал, что хочу разобраться, как это работает, а там комментариев кот наплакал...