Цитата(Эдди @ Jun 15 2017, 09:51)

Этим говном я пользоваться не собираюсь, обычно использую для CLK генерацию с таймера на STM32 — а там и 16МГц не проблема.
Я бы вот так словами не бросался, не зная броду. Понимаю, avr сейчас звучит смешно, но те кто реализовывал в них стеки - молодцы.
Те, кто с пеной у рта рассуждает о ПЛИС или АРМе, редко задумываются, что огромные возможности этого железа часто ненужный избыток...
Цитата(Эдди @ Jun 15 2017, 09:51)

Но в реальности движки быстрей 500 шагов в секунду не могут делать, т.е. даже на дроблении 1/256 нужно не больше 128кГц выдавать.
Тут я бы тоже не горячился. Все от механики зависит, при нормальном управлении на ремнях можно двигаться гораздо быстрее - до 2 кГц минимум...
Цитата(Эдди @ Jun 15 2017, 09:51)

А насчет "авторазгона", похоже, плохо я даташит почитал. Что-то я думал, что кое-какие последние тринамики вообще не нуждаются в сигналах CLK/DIR и тупо по SPI работают.
абсолютно нет. SPI интерфейс для сервисов только.
Под авторазгоном подразумевается изменение частоты ЗАПОЛНЕНИЯ ВНУТРИ ИМПУЛЬСА.
Цитата(Эдди @ Jun 15 2017, 09:51)

Но это не беда: при помощи коротенького массива (uint32_t членов на 16) и DMA можно разгон-торможение элементарно реализовать. Плохо только, что для счета шагов нужно еще один таймер заводить. Ну или в прерывании колупаться.
Эта придумка мне нравится. Но все же я не понимаю, зачем Вы сами поднимали этот проект, если есть куча готовых реализаций.
Кроме того, так красиво это выглядит только на пальцах. Как только вы начнете отрабатывать точные траектории в n координатах с рампами, тут же воткнетесь в необходимость реализовывать еще и свой слайсер, что очень увлекательно - достаточно скачать любой готовый, и посмотреть на его интерфейс. Энтузиазм сразу пойдет на убыль...
Хотите увидеть все вместе во всей красе - скачайте исходники LinuxCnc(Emc2).
Еще раз повторюсь - современное решение управления приводом в станке - полноценный 3 уровневый стек, я бы оценил трудоемкость в 2-3 года профессионального программиста.
Ну и напоследок задумайтесь над одним фактом. Качественный разгон - с непрерывно изменяющимся шагом. Современные драйвера дают микрошаг 128. Хороший станок гонится до 3 кГц.
Автогенерация заполнения тринамика как по мне мутная вода - они там сами себе аппроксимируют ВАШЕ изменение частоты - че они напридумывают большой вопрос, а у вас траектория определена строго.
Это значит в идеале вы должны получить плавно возрастающую частоту от 0 до 384 кГц (помножить на 3 оси минимум)), при этом фишка автоматического инкремента периода таймера не катит, тк ограничивает допустимые ускорения - значит вы будете терять в производительности машины...
Как Вы сгенерите такое таймером STM ?
Но и это еще цветочки. А как насчет кривых ? А еще интереснее кривые по траектории со строго определенной скоростью (задача дозирования клея/..., фрезерование) ?
Тут уже и STM может мало показаться, dsp нужен, и таймер вообще ни о чем.
Короче я хочу сказать, что начиная решать такие задачи, Вы должны точно понимать, какой результат Вам нужен. 70% поля покрывает AVR, а специфические задачи требуют таких затрат, что прежде нужно тщательно считать купляшки, дабы не бросить все посередине.
Цитата(Эдди @ Jun 15 2017, 09:51)

В случае затвора современные драйвера не спасут, т.к. там нужно генерировать короткий импульс прямой или обратной полярности с довольно высокой напругой (24-36В) и длительностью чуть ли не до сотни миллисекунд. А некоторые затворы нужно еще и удерживать в крайнем положении низким напряжением (3..5В).
У современных интегральных драйверов никакого затвора нет - только step/dir. Многие позволяют рабочее напряжение 36В и выше.