В общем - была проблема с тем, что после изменения предделителя таймера, у меня уплывали фазы. В результате, стоило покрутить ручку регулировки частоты и... мотор тупо останавливался!
И... И я неделю мучился, как это исправить.
А ларчик то просто открывался =)
void SetPrescaler(int val)
{
DMA_Cmd(DMA1_Channel6, DISABLE);
DMA_Cmd(DMA1_Channel3, DISABLE);
DMA_Cmd(DMA1_Channel2, DISABLE);
TIM_Cmd(TIM1, DISABLE);
TIM1->PSC = val;
TIM_Cmd(TIM1, ENABLE);
DMA_Cmd(DMA1_Channel6, ENABLE);
DMA_Cmd(DMA1_Channel3, ENABLE);
DMA_Cmd(DMA1_Channel2, ENABLE);
}
Вот и всё. Сначала гасим DMA каналы, потом отключаем таймер, потом тупо прям в регистр таймера задаём новое значение предделителя и снова всё включаем в обратной последовательности. Готово! Мотор крутится, фазы как вкопанные, транзисторы ключей холодные, мотор крутится так, что аж стены трясутся ))) Всё ок.
...Так что на пока хватит. Пойду дров напилю ))))