Я же вам писал, что при смене адреса выходы ШИМ, подключенные к текущей паре ключей "меняются местами", первый шим занимает место второго, а второй подключается к следующему выводу!
То есть в тот момент, когда у вас ШИМ А на 0, а ШИМ Б на 100% и вы переключаете адрес (и смените обмотки ШД - шаг 31 на 32) нужно "поменять местами" уставки ШИМ, первому ШИМу дать 100%, а второму, который теперь на следующей обмотке - 0% и далее по синусу. И так до бесконечности!
Вообще-то ваши значения в коде неверны и далее. Нужно примерно так:
case 1:
A=0; B=0; OCR1A=0; OCR1B=255; //25% - начало
break;
case 28:
A=0; B=0; OCR1A=32; OCR1B=255; //25%
где-то в середине A=0; B=0; OCR1A=255; OCR1B=255 по 100% обеих сторон (по формуле не 100% но потом поправите)
case 31:
A=0; B=0; OCR1A=16; OCR1B=255; //25%
break;
case 32:
A=0; B=0; OCR1A=0; OCR1B=255; //25%
break;
--вот момент переключения, меняем адрес на 1 и уровни ШИМ (двигатель при этом не провернётся, вернее следовало бы сразу добавить второй ШИМ на следующий шаг)
case 33:
A=0; B=1; OCR1A=255; OCR1B=0; //25% --- ШИМ Б =16
break;
case 34:
A=0; B=1; OCR1A=255; OCR1B=16; //25% -отсюда ШИМ Б - нарастает!!!
где-то в середине A=0; B=0; OCR1A=255; OCR1B=255 по 100% обеих сторон (по формуле не 100% но потом поправите)
---- далее ШИМ А уменьшается до 0
case 47:
A=0; B=1; OCR1A=255; OCR1B=100; //25%
break;
case 48:
A=0; B=1; OCR1A=128; OCR1B=100; //25%
break;
case 49:
A=0; B=1; OCR1A=0; OCR1B=100; //75%
--------- следующий адрес ------- опять меняем уровни ШИМ.
И где обещанная формула?!
Кстати там в разделе "Предложения по работе" нужен нестандартный контроллер ШД!