Некорректная запись в память 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


Ответы (0 шт):