[an error occurred while processing this directive]
[an error occurred while processing this directive]
|
Уж больно цифры соответствуют:-)
Можно, например, таким макаром:
Сигнал(ы) подаем на ноги порта, часто (в несколько раз чаще, чем Тмин/50) читаем порт и отправляем очередной отсчет в кольцевой буфер (будет длинным - десятки/сотни килобайт для Вашего диапазона длительностей и разрешения). Попутно вычисляем период, пересчитываем АБСОЛЮТНОЕ значение однотактной задержки в доли вычисленного периода и получаем значение разности между указателем записи и указателем считывания из кольцевого буфера. Считываем, разумеется, в том же темпе, что и пишем, лучше в единой процедуре, в ней же и отправляем считанный отсчет в выходной порт. Пока период не измерен - на выход подаем вход (мин. задержка).
В зависимости от того, насколько быстро может изменяться входной период, можно соорудить примитивное подобие цифровой ФАПЧ с целью квантования входного периода ВСЕГДА на требуемые 50 кусочков, это позволит работать с маленькими буферами - 50 кусков*5 периодов = 250 байт. А если сигнал всего один, то буфер можно сделать и битовым, т.е. обойтись 250/8=32 байт всего.
Удачи!
E-mail: info@telesys.ru