Вот именно логика из G-кода в команды step/dir. У меня только две мысли:
- по алгоритму Брезенхэма расчитывать каждый шаг(или группу шагов) в зависимости от жирности памяти и запускать из буфера через DMA в таймеры (для x свой таймер, для y свой)
- крутить с разными скоростями, я для примера намахал на скорую руку пример: проехать из А в Б прямолинейно, расчитал по X надо 7200 шагов, по Y 3200, значит при максимально доступной "скорости" на моих драйверах 200кГц необходимо 36000 микросекунд, стало быть "скорость" для Y должна быть 88889Гц. Запустил два таймера, через DMA скармливаю в один таймер свой буфер, в другой свой. И получил великолепную картинку на ЛА. За время тикания таймера 1 с частотой 200кГц, второй тамер натикал своё с частотой 88889Гц. Есть канечно нюанс, а внем и суть. Не абсолютно совпадают времена работы таймеров (погрешность около 5-10 микросекунд). Ну допустим одновременный старт таймеров можно как-то(еще не разбирался) забабахать, но вот какова приемлимая точность допустима. Как вообще правильно это делать?