в итоге проблема решилась заменой флешки

вместо 128 меговой микро взял 1 Гб. Насколько я увидел там другой размер кластера и как-то все заработало, хотя так толком и не понял в чем была проблема, ибо деталей файловой системы не знаю.
Но появилась проблема №2. У меня ведется логирование на флешку с АЦП. Я поступаю следующим образом: создаю в памяти кольцевой буфер, внего в прерывании от АЦП кладу намерянные данные по 8 байт 512 раз в секунду. Затем в фоне когда данных в буфере, скажем, половина от размера буфера или более, я вычитываю их и делаю f_write() на флешку. При этом длительность функции записи не должна превышать время в течении которого весь мой кольцевой буфер заполнится данными в прерываниях. То есть я должен гарантировать длительность работы функции f_write() не более чем сколько то. Так вот я решил померить сколько занимает запись и получилось следующее:
Пока мы запимали данных менее чем 512 байт запись почти мгновенна, ибо пишется в локальный массив ФС вОЗУ и флешь не используется. Если количество уже записанных данных переваливает за 512 байт, то это переписывается на флешь и занимает где-то 10 тиков ОС (я все в тиках меряю, а они равны почти 2 мс). Если количество уже записанных данных переваливает за 4к (размер кластера), то длительность около 45 тиков. Все это приемлемо и относительно стабильно (+- пара тиков).
Но, если логировать около пары-тройки минут, то на графике видно, что случаются ситуации, причем совершенно не ожиданно, когда запись длится заметно больше, вплоть до 120 тиков. Случается это не с какой-то периодичностью, а случайно. Поэтому поставить брейкпоинт и пройти по шагам не представляется возможным, ибо узнаешь о длительной записи только постфактум. Писал я данные с постоянной длинной, один раз 110*8 байт, один раз 64*8 байт. В аттаче результаты, первая колонка длительность в тиках, вторая скалько данных писалось. Почему так? Флешка периодически тормозит?

Кстати тактируется она частотой около 800 кГц.
Прикрепленные файлы
fs.rar ( 109.91 килобайт )
Кол-во скачиваний: 131