Беда подкралась незаметно, так и не придумал, как разумными методами побороть дрожание фронта. Были такие варианты
1. Использовать два таймера в чейне. Первый считает до неого значения, при совпаденнии счетчика с этим значением, запускается второй и выдает импульс, а в это время пересчитывается следующее время срабатывания. Недостатки у такого способа - много неопределенностей. Что будет, если нужно отработать два события с интервалом в 3мкс? Кроме того, сложные расчеты в прерывании - не хорошо, большая загрузка процессора. Хотя, точное время выхова прерывания уже не так критично.
2. Использовать два таймера и DMA. При этом, основной потом расчитывает время срабатывания таймера, а DMA передает эти времена таймерам. В этом варианте есть проблема с задержкой от сигнала включения ноты до того, как DMA дойдет до этого сигнала. Хотя, может, получится в тупую пересчитывать, нужно провести эксперимент.
4. Перейти на другой контроллер (типа stm32l151rb). Оказалось, что я зря пропустил low power контроллеры, в них а разы больше таймеров, чем в том, что я использую сейчас, и по цене они даже дешевле. Этот вариант самый хороший для решения задачи, но самый плохой для меня, потому, как моя текущая плата теперь ни на что не годится

Как-то так
