если закрыть глаза, что при герерации пачки мпульсов будут возникать пауза или не точно выдерживаться количество имульсов, то
Цитата(=GM= @ Aug 18 2008, 18:55)

Частота на самом деле высокая, но задача легко решаема на меге.
только автор вопроса может сказать, что допустимо, а что нет. Поскольку он ничего не говорит про гапы, то я предполагаю, что их быть не должно.
И в самом деле, ротор двигателя -- достаточно инерционная шткуа, а еще если нагружена, то можно представить себе какая будет инерционность. А теперь представьте, что следует команда передвинуть чего-то там на 987654 шагов. Двигатель начинает шагать, разгоняетя, и вдруг в это время возникает пауза... По инерции двигатель проскакивает полюс. Импульсы вновь появляются. Частота уменьшается, двигатель тормозится и останавливается. Каков результат? Мы считем, что двигатель совершил 987654 шага, на само деле они ушел на 987655 шагов.
Я не знаю, на сколько это трагично. Но вижу одно -- очень большая частота импульсов. Если сразу "влупить" ее на неподвижный ротор, то двигатель будет работать не правильно. Определить положение двигателя будет сложно -- энкодер отсутствует (см. пояснения автора вопроса).
Давайте попробуем смоделировать процесс отсчета 500000 шагов. Для начала проигнорируем, инерционность двигателя, т.е. проигнорируем то обстоятельство, что его нужно разгонять и тормозить, Как я говорил -- срузу "влупим" ему 1 МГц.
Аппаратный счетчик способен считать до 65536. Значит, для реализации идеи нам понадобится совершить 500000 / 65536 = 7 полных цикла и один (последний) до значения 41248.
(проверка того, что не ошибаемся в подсчете: 65536 * 7 + 41248 = 500000.)
Я предполагаю, что TIMER1 будет работать в режиме normal и считать по циклу. Каждый раз при переполнении будет возникать прерывание. Мы программно считаем эти переполнения. Это есть наши полные циклы, их должно быть семь. Пока мы их просто считаем, в работу таймера не вмешиваемся, следовательно, перерывов в генерации импульсов возникать не должно.
Последний цикл не полный. Значит мы должны среагировать на прерывание от регистра сравнения. Т.е. перед тем как войти в последний цикл отсчета, мы должны изменить режим работы таймера. Мы сможем очень быстро, иначе гововоря, -- не заметно для выходной последовательности импульсов
поменять режим? Я не уверен.
Ладно, есть еще одни грабли: окончание счета. По достижении конца счета на последнем цикле (41248) возникает соответствующее прерывание. Что мы должны сделать? Нам нужно быстро остановить генерацию импульсов. Сможем это сделать? Или пока мы входим в прерывание, пока мы исполняем первую команду в нем, схема нам успеет нагенерить еще "этих мягких французских булочек"?
Я не говорю, что я прав. Скорее, я даже где-то ошибаюсь. Но мне самому стало интересно, как автор сможет разгонять движек до мегагерца и точно исполнять заданное количество шагов? Задача-то, отнюдь, не тривиальная.