il-2 (13.10.2014 11:40 - 11:49, просмотров: 209) ответил Codavr на Как правильно организовать передачу данных в программе
Я бы сделал так: - Настраиваем работу DMA по кольцевому буферу и больше не трогаем, никаких прерываний не нужно.
- Программа вычисляет скользящее среднее в момент запроса (голова буфера определяется через CNDTR). При этом используются данные расчета, оставшиеся от предыдущего обращения (если окно скользящего среднего захватывает область, рассчитанную при предыдущем обращении). Результат сохраняется для оптимизации вычисления следующего запроса.
- Если интервал между запросами превышает определенное значение, данные предыдущего расчета сбрасываются.
Данный алгоритм оптимален с точки зрения использования ресурсов МК, но имеется нестабильная задержка из-за вычисления скользящего среднего (от момента запроса). При этом надо учитывать, что за время вычисления могут прийти еще данные и "подъесть" хвост буфера.