MX_Master писал(а):я вспомнил, что хотел попробовать DMA трансфер в регистры GPIO, так скать, для более аппаратной генерации шагов. В данный момент изучаю этот вопрос. Если способ будет годным, можно будет взять его в качестве альтернативы софт генерации.
Работа с
DMA в чипе
H3 оказалась не такой уж и простой. К тому же, в мануале отсутствует большой кусок инфы по этой теме. Слишком много времени уйдёт на изучение. Также я пока не понял как тактируется
DMA контроллер и можно ли эту частоту просеивать (менять). В
STM32 работать с
DMA было проще. Вощем, оставлю этот способ в долгом ящике. Быстрее будет новый драйвер софт генерации накатать.
В связи с этим, начал тесты с
отдельным от LCNC софт генератором шагов. В этом примере основной цикл пашет на частоте
400 КГц и позволяет генерировать шаги
до 200 КГц на каждом из восьми каналов. Точность по времени достигается за счёт аппаратного таймера.
Как только софт генератор будет готов, я накатаю новый
HAL драйвер для
LinuxCNC. Драйвер будет запускаться уже не в основном цикле, а в сервоцикле. Его основной функцией станет общение между планировщиком
LinuxCNC и отдельным софт генератором. Планировщик каждый сервоцикл выдает задание на генерацию, софт генератор отрабатывает. И в следующий сервоцикл сообщает сколько и чего нагенерировал. На основе этих данных планировщик решает, что делать дальше. И так далее. И так далее. По такому же принципу работает связка планировщика со
stepgen.
Честно говоря, такой финт с отдельным быстрым софт генератором может работать не только в
Orange Pi. Но и на любом другом многоядерном настольном процессоре. Насколько я знаю, драйвер
LPT порта позволяет выводить большие частоты.