реклама на сайте
подробности

 
 
> PIC32 SD card, (задержка при записи)
BlackOps
сообщение May 13 2011, 06:58
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 618
Регистрация: 7-06-08
Из: USSR
Пользователь №: 38 121



Привет всем,

Такая вот проблема... использую PIC32 и стандартные Микрочиповские библиотеки для работы с файловой системой FAT.

Записываю данные размером 24 байта каждую 1 миллисекунду, длится эта запись меньше 100 микросекунд, и так далее... Но... вот проблема: каждые примерно 21-25 миллисекунд процесс записи данных длится около 5-6 миллисекунд, а не 100 микросекунд как обычно.

т.е. каждые примерно 21-25 миллисекунд команда: FSfwrite(&data, 1, 24, pointer); занимаыет около 5-6миллисекунд, в то время как каждую 1 миллисекунду она занимает около 100 микросекунд.


У кого есть опыт работы с системой FAT, кто может поделится или подсказать в чем дело? как это исправить?

(пробовал разные карти с разным форматированием...результат примерно тот же)


--------------------
Нажми на кнопку - получишь результат, и твоя мечта осуществится
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
aaarrr
сообщение May 13 2011, 07:49
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Задержка в данном случае возникает на границе сектора - 512 байт. Совсем уйти от задержек нельзя: операция записи SD может занимать до 250мс (и занимает иногда). Ваше приложение должно обеспечивать достаточную буферизацию.
Go to the top of the page
 
+Quote Post
BlackOps
сообщение May 13 2011, 08:57
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 618
Регистрация: 7-06-08
Из: USSR
Пользователь №: 38 121



Да согласен... т.к. примерно 21-25 * 24 байта ~512

Цитата(aaarrr @ May 13 2011, 12:49) *
Ваше приложение должно обеспечивать достаточную буферизацию.


Ну а вот с этим как раз таки проблемы у ПИК32 есть определенная РАМ память..но вот как реализовать буферизацию?..дело в том что пока функция FSfwrite исполняется нужно ждать ее завершения пока что либо можно будет сделать... памяти у меня 32кБ...но вот процесс сбора данных с различных сенсоров идет очень долгое время... т.е. это не кратковременная работа где я бы мог записать в память, потом в карту и так далее... тут требование чтобы процесс записи новых данных не прерывался хотябы на протяжении часа. поетому если я скажем буду записывать данные в память, а после этого начну писать из памяти в карту...то в это время я начну терять новые поступающие данные.


другое решение будет например сократить интервал времени сбора данных...скажем собирать их каждые 7миллисекунд... что примерно чуть больше самой долгой задержки.... но хотелось бы конечноже более частого сбора данных с равномерным интервалом..


--------------------
Нажми на кнопку - получишь результат, и твоя мечта осуществится
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 21:46
Рейтинг@Mail.ru


Страница сгенерированна за 0.01561 секунд с 7
ELECTRONIX ©2004-2016