ты не понял, важно кол-во тактов/инпутов на весь блок данных
с перекосом в одну сторону - могут накопиться многие десятки тыщ тактов
потом прерывание не тогда, когда автор дешифровщика предполагал, и привет
Вид для печати
а готового теста нет, чтобы замерял длительности пилот-тона, синхроимпульсов, 1 и 0 и отображал в реальном времени на дисплее в тактах?
Кста, погрешность будет накапливаться только до того момента, как один цикл пропустит сигнал или чекнет раньше, чем надо, после чего погрешность сбросится и будет копиться дальше до такого же момента. Величина такого "скипа" - один цикл между in-ами. Это обычно не охренеть как много, и адекватные загрузчики это допускают.
Я не говорю, что у меня всё идеально, но данная проблема не такая огромная, как кажется.
не попадалось; ну и вряд ли можно прямо в реальном времени, точность будет только до числа инпутов, а их придётся делать реже из-за показа
- - - Добавлено - - -
а на практике на SCREEN$ 3-4 фрейма разницы набегает
да понятно, что у мафонов и в реале скорости различались, и в эмуле настройку иметь желательно
но для скоростей погрешность относительная нужна, а не абсолютная для всех импульсов
что уже может стать, например, проблемой при отладке шибко хитрых загрузчиков
...и что, собственно, мешает взять вместо микросекунды интервал в 3.5+ раза короче?
Так... а это как замерялось? От момента, когда схватился первый фронт пилота, и до последнего бита контрольного байта? Или просто на калькуляторе число импульсов перемножилось на погрешность?
ЗЫ: Раз в 10 повысить точность особой сложности не вызовет. Запишу себе в TODO, когда-нибудь дойду до этого пункта.
ну чуть выше же - сразу после синхры и до возврата (пилот до синхры)
https://zx-pk.ru/threads/9479-xpeccy...=1#post1208599
надо кратно тактовой z80 , а иначе всё равно придётся правильно округлять
Считаем:
- Цикл измерения от фронта до фронта в пзу48 - 59 тактов (5ed и до выхода на 5fa). В регистре B считается количество таких циклов.
- Ты говоришь, мы имеем 2 такта смещения на каждый фронт. Где-то за 30 фронтов набирается погрешность в целый цикл.
- И ТУТ ХЛАБЫСЬ! Следующий замер длится или на 1 цикл короче, или на 1 цикл длиннее из-за накопленной погрешности. И этот надостающий/лишний цикл СЪЕДАЕТ всю накопленную погрешность. Она не копится на протяжении всей загрузки. Она скачками прыгает между 0 и 60 тактами. Причём эта +-1 съедается допущениями загрузчика - это всё равно будет правильный бит.
- Где ты нашёл накопленную до 2 фреймов погрешность?