Итак, привел это дело к относительно жизнеспособному варианту.
Что есть:
ШИМ 9 кГц.
Энкодер с кнопкой ОК, кнопка СТОП, кнопка СТАРТ
Менюшка 0 с отображением текущей частоты и амплитуды и режима работы ШИМ (STOP - ШИМа нет, STRT - идет запуск ШИМ, ZERO - чередование нулевых векторов - верхние откр, нижние закрыты и наоборот, RUN - генерация синуса)
Меню 1 - задание частоты, по нажатию кнопки энкодера входим, при редактировании параметра добавляется буква Е. Энкодером устанавливаем частоту и кнопкой энкодера её подтверждаем. Если нажать кратковременно кнопку стоп, то выход без изменений.
Меню 2 - задание амплитуды (имеет смысл только для независимого управления частотой и амплитудой). Редактирование аналогично.
Меню 3 - выбор з-на управления (0 - независимо выставляем частоту и амплитуду, 1 - U/f=const, 2 - U/sqrt(f) = const, 3 - U/sqr(f) = const; константа задается в 4м меню)
Меню 4 - задание константы для з-на управления. Тут всё через попу, но да ладно.
Спойлер
Определяемся с законом управления. Допустим U/sqrt(f) = const. В этому случае нам в формулу
надо вбить числитель и знаменатель (корень или квадрат частоты надо считать ручками. По входу в меню сначала крутится то, что будет в числителе, т.е. амплитуда, энкодером выкручиваем ее и кратковременно нажимаем ОК, далее выставляем знаменатель (для вышеописанного з-на корень из 50 = ~7) и зажимаем кнопку ОК на 1 сек. По отпусканию кнопки константа будет записана, а буква Е из первой строки исчезнет.
Меню 5 - время между инкрементами частоты в мс.
Т.е. стартуем с нуля и каждые X мс инкрементируем частоту до заданного в 1-м меню значения.
Меню 7 - сохранить текущие настройки. В нем будет два пункта - YES или NO.
Из любого меню можно выйти без сохранения параметров кнопкой стоп (кратковременным нажатием).
Меню 8 почти как и 0-е, но показывает текущую частоту и заданную, а также режим работы ШИМа.
Управление:
После запуска будет отображаться 0-ое меню и статус ШИМа STOP, т.е. его отсутствие.
После кратковременного нажатия START включается ШИМ (статус ШИМ STRT) и сразу же начинает переключать верхние-нижние ключи (т.е. формирование нулевых векторов) - статус ZERO.
Если при статусе ZERO снова нажать START то начинаем нарастание частоты от нуля до заданной частоты (амплитуда в зависимости от настроек либо независимая либо будет меняться в соответствии с законом и константой). Статус ШИМ измениться на RUN.
Есть нажать кнопку СТАРТ во время работы, то ШИМ перейдет в состояние ZERO (нулевые векторы), а частота будет сброшена.
Не стоит в этом случае снова нажимать кнопку запуска до останова двигателя))))
Есть зажать кнопку СТАРТ на 1 сек и отпустить, то двигатель начнет убавлять частоту от текущей до нуля, после чего перейдет в состояние ZERO.
Если зажать кнопку СТОП на 1 сек и отпустить, то ШИМ вырубается.
Нога B12 дергается с той же частотой, что генерируется в данный момент.
Фотки менюшек, осциллограммы на ногах с которых снимается ШИМ, демонстрация дедтайма.
Спойлер
меню 0

меню 1, меню 1 с активным редактированием


остальные менюшки





Замеренное с лог. анализатора:
Спойлер
При статусе PWM STOP

При PWM ZERO, tdeadtime = 1.35мкс (можно изменить в программе, при желании

При выставленных 50Гц

При выставленных 399Гц

Скоро м.б. попробую запитать двиг не 30ю Вольтами, а трехстами. Надеюсь силовая плата нормально к этому отнесется.
Исходники данной версии тут:
https://yadi.sk/d/qeRdxBQJ37Lqry