Ребятки а что не понятного-то?
есть частота 60 герц
это значит что 60 раз в секунду надо сделать полную синусоиду от нуля вверх потом сверху вниз до нуля от нуля вниз и снизу вверх....имеем 2 четверть синусоиды для двух каналов по очереди 120 раз в секунду....теперь нам надо сделать этот красивый изгиб плавного подъёма вверх синусоиды и потом последовательно вывести его в прямом порядке на первый канал, потом задом-наперед в первый канад потом в прямом порядке во второй канал и наконец задомнаперед во второй канал....
теперь этот плавный переход от нуля до максимума - четвертесинусоида так сказать.....нужно сделать массив-табличку....в которой чем больше значений будет тем лучше но на глаз и 128 штук хватит вот и записать в неё последовательно значения регистра для соответствующего синусоиде процента PWM а дальше если у нас например 128 значений в таблице то частоту второго таймера ставим примерно равной - 60*4*128 = 30 килогерц и 30 тыщ раз в секунду выполняем прерывание которое будет иметь 4 режима -
1) _--`` для первого канала
2) ``--_ для первого канала
3) аналог первого только на второй канал
4) аналог второго на второй канал
и теперь при старте ставим переменную режима = 1, переменную текущего значения = 0 и запускаем таймер
в прерывании таймера:
Если переменная режима =
1) инкрементируем переменную текущее значение, вычитываем и записываем в регистр PWM а первого канала значение таблицы, проверяем переменную на предмет выхода за 128 и если вышли - ставим режим 2
2) декрементируем переменную текущее значение, читаем содержимое таблицы и пишем его в регистр PWM а первого канала, проверяем не пришли ли мы к 1 в переменной текущее значение если пришли - ставим режим 3
3) инкрементируем переменную текущее значение, вычитываем и записываем в регистр PWM а второго канала значение таблицы, проверяем переменную на предмет выхода за 128 и если вышли - ставим режим 4
4) декрементируем переменную текущее значение, читаем содержимое таблицы и пишем его в регистр PWM а второго канала, проверяем не пришли ли мы к 1 в переменной текущее значение если пришли - ставим режим 1
вот и весь алгоритм....если взять таблицу из 10-ти значений то получится гораздо меньшие частоты - 60*4*10 = 2400 раз в секунду нужно будет вызывать эту процедурку ну и пределы изменить со 128 на 10 но тогда синус ступенчатым получится
и драйверы в любом случае надо ставить и причем не просто а мостовые у которых на выходе 2 транзюка, тогда не будет потерь на диоде
да и частоту самого PWM таймера тогда можно будет задрать хоть до 2 мегагерц

- чем выше частоты тем ближе мы к аналогу
ХОТЯ! МОЁ ЛИЧНОЕ ИМХО!!!
это всё бред!
где стабилизация по напряжению? где обратная связь? таблицу надо коректировать на предмет размаха..тоесть делить её значения на некий индекс-процент нагруженности
ибо транс без нагрузки выдаст пару тыщ вольт поубивает нахрен силовые транзюки и спалит микроконтроллер - знаю по своему опыту ибо брал транс из УПС и подключал к ЛАТРу на котором было намотано 12 витков медной шины сварочной....результаты были просто супер

такой ДУГИ во вторичке (которая на 220) я давно не видовал

в общем это ужос.

Вам нужно делать это дело на аналоговой вещи - ТЛ494
просто на одном операционнике сделать генератор синуса, но втором инвертор ещё на одном - повторитель напряжения первого и подавать эти синусы через ещё пару операционников на входы двух ТЛ494 у которых на входе + будет напряжение с выходного фильтра(дроссель и кандер) а на минус подавать синус - тогда это будет просто песня...транс не будет петь песни не будет пробиваться высоким без нагрузки и вообще...одни плюсы будут
