Я удивлён разбалованностью пользователей компилятора и среды
разработки IAR. Писать в EEPROM как в обычную переменную? Нонсенс.
Даже и в голову бы не пришло. Сделайте сеттер и геттер для значения
в EEPROM и используйте их для явных, ручных чтения и записи. Возможно, внутри встроенных функции компилятор чтения или записи EEPROM, идёт не понятое компилятором обращение к EEPROM, не как к volatile-регистру, а как просто инструкции перемещения данных между абстрактными адресами. Поэтому может теряться волатильность и компилятор выкидывает "лишние" обращения.