Сделал загрузчик с определением длительности бита по таймеру - работает! Профит в увеличении точности определения длительности.
Раньше делал так:
inr b\ in 01\ cmp d\ jz $-4
Дискретность 36 тактов.
Убираем увеличение счетчика и уменьшаем дискретность до 28 тактов. А чтобы узнать, сколько мы там крутились, используем таймер. Т.е. фактически точность как в развернутом цикле, который предлагал svofski, но без развертывания. Преимущество таймера перед развертыванием - легко подстроить (изменением порога сравнения) под разные скорости и код компактнее.
- - - Добавлено - - -
С другой стороны у развертывания меньше накладные расходы между битами и таймер (причем согласованный по частоте с процом) не нужен (это если не для вектора делать). Но накладные расходы на запись/чтение таймера между битами для частоты дискретизации 44100 имхо вполне приемлемы, т.к. один интервал дискретизации 68 тактов и даже при использовании развертывания имеет смысл добавить балластные команды (короткие, но долгие), чтобы сократить код. А тут вместо балласта взаимодействие с таймером.




Ответить с цитированием