Добрый день!
Для хранения номера прибора и установочных коэффициентов использую сегмент памяти INFOD. Всего получается 10 байт. Проблема в том, что иногда приходят команды по I2C, (одна за другой через 5мс) по которым нужно эти коэффициенты переписывать. Если приходит одна команда, после которой I2C молчит более 30мС -все нормально. Но если команды записи идут через 5мС - возникают проблемы. Как я понял время стирание сегмента может быть от 23 до 32 мС. Сейчас во время записи во флеш прерывания запрещены, поэтому если команда приходит именно в этот момент запись следующего коэф. пропускается.
Как лучше оптимизировать запись во флеш, чтобы избежать таких огромных задержек на стирание сегмента?
Можно в принципе, переписывать массив данных со смещением в 10 байт, но когда сегмент закончится, его нужно будет стереть и теоретически в этот момент может прийти последовательность команд записи.
|