Здравствуйте, Иван Дубров, Вы писали:
V>>И получается тот фокус, что мы уже того-с, поезд уже ушел. Мы можем лишь настроить теневые регистры на следующий цикл, а не на этот, т.е. который вот только что начался.
ИД>Если программа заранее известна
Вот. ))
А если у нас токарный станок, у которого скорость вращения детали может зависеть банально от давления резака на материал, то у тебя "известная заранее программа" представлена в таком виде, что её еще надо отображать на мгновенную угловую скорость вращения детали.
ИД>Таймер же (опосредованно) от того же генератора тактовой частоты работает. Если задержка в целых тиках не выражается, значит не выражается, надо переменные длительности делать. Можно чередовать длительности 127 и 128, в среднем будет 127.5.
А если 127.3333? ))
Это я просто намекаю, что ты всё делаешь верно, но в итоге получишь такой алгоритм, что таймер станет уже фактически не нужным — у тебя и так получится "ручной" генератор произвольной частоты, примерно как в посте по ссылке, где дан сниппет про генератор синусоиды:
http://www.rsdn.org/forum/flame.comp/6803924.1
Там можно взять только старший бит — и будет меандр нужной дробной частоты.
V>>Что вообще можно сделать с обычным 16-тиразрядным счётчиком, кроме как использовать его для чего-то малокритичного?
ИД>Можно сцепить два таймера и получить один 32-разрядный (старший щёлкает по переполнению младшего).
А в базовой конфигурации есть 6 таймеров, которые можно подобным образом сцепить?