одной из ошибок была запись без предварительной проверки на окончание записи. в случае просадки питания запись, начатая до сброса из-за этой самой просадки, продолжалась, а "наложенная" свежая ломала процесс. В старинных АВР при сбросе к тому же успевали обнулиться регистры адреса (для EEPROM стопудово, для FLASH - не помню).