Некорректная запись в память Arduino EEPROM
Есть программа, для записи данных о погоде. Есть задача записать и прочитать 16 записей в EEPROM, встроенную в саму ATMEGA328P-PU. Код приведён ниже.
#include <avr/eeprom.h>
void setup() {
Serial.begin(9600);
// структура хранения данных об измерениях
struct measure {
float temp;
float hum;
float pressure;
float altitude;
};
// создаём и заполняем структуру
measure a;
a.temp = 25.74;
a.hum = 33.71;
a.pressure = 748;
a.altitude = 137.11;
eeprom_update_word(1, 16);// Кол-во записей, нужно для последующей выгрузки
Serial.println("START WRITING");//Debug
int iterations = eeprom_read_word(1);
for (int i=0; i < iterations; i++){
Serial.println("WRITE");//Debug
eeprom_write_block((void*)&a, i+1, sizeof(a)); //Запись блока в EEPROM
}
measure readMeasure;
// читаем
Serial.println("START READING");//Debug
for (int i=0; i < iterations+1; i++){
eeprom_read_block((void*)&readMeasure, i+1, sizeof(readMeasure));//Чтение из блока EEPROM
Serial.println(readMeasure.temp);
Serial.println(readMeasure.hum);
Serial.println(readMeasure.altitude);
}
Serial.println("Clearing..."); //Очистка памяти
for (int i=0; i < iterations+1; i++){
eeprom_write_byte(i,0);
}
Serial.println("EEPROM clear!");
}
void loop() {}
на выходе получаю такие данные
START WRITING
WRITE
WRITE
WRITE
WRITE
WRITE
WRITE
WRITE
WRITE
WRITE
WRITE
WRITE
WRITE
WRITE
WRITE
WRITE
WRITE
START READING
-0.00
-0.00
-0.00
-0.00
-0.00
ovf
-0.00
-0.00
-493924512.00
-0.00
-0.00
25.74
-0.00
-0.00
0.00
-0.00
-0.00
ovf
-0.00
-0.00
0.00
-0.00
-0.00
33.71
-0.00
-0.00
0.00
-0.00
ovf
0.00
-0.00
-493924512.00
0.00
-0.00
25.74
748.00
-0.00
0.00
0.00
ovf
ovf
0.00
-493924512.00
0.00
0.00
25.74
33.71
137.11
0.00
0.00
195.04
Clearing...
EEPROM clear!
Почему программа выводит такие данные?
Платформа: Arduino Uno R3