-то иногда на выходе на ноге А3 иногда плюс остается,иногда ноль. Что-то делал в авр для того,чтобы на ноль падал всегда, не могу вспомнить. Посоветуйте.
Как скучно вы живете со своими готовыми функциями.
Предположу что мк STM8S103.
Вы устанавливаете режим PWM1, т.е. записываете в биты OC1M[2:0] 0b110.
Установив в эти биты 0b001 или 0b010 выход порта принудительно установится 1 или 0 соответственно. Таймер останавливать для этого не надо, если конечно другой нет причины для остановки.
Можно использовать вот такие конструкции (структура с битовыми полями). TIM2_CCMR1_OC1M=0x1; //принудительно в 1. TIM2_CCMR1_OC1M=0x6;//режим PWM1
Второй вариант, с компилироваться должно короче.
OC1M установлен режим 0b110, т.е. pwm1.
Вам надо принудительно на выходе установить 0. Т.е. режим 0b010 или всего лишь погасить бит OC1M2. TIM2_CCMR1_OC1M&=0x3;
Вернуть обратно TIM2_CCMR1_OC1M|=0x4;
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Ну как скучно..пришлось проездом написать для STM8 прогу, с синтаксисом для IAR запутался, для STM32 побитово писать я пробовал,а тут что то затупил. STM8S003. Какой бит для чего я понял, а вот как писать,чтоб IAR не ругался.. Хидеры конечно же смотрел. TIM2_CCMR1_OC1M&=0x3;-такое не проходит.
А вот это надо запомнить-
CLK->PCKENR1 = CLK_PCKENR1_TIM1 * 0
| CLK_PCKENR1_TIM2 * 1 ....
-биты умножать на ноль и один.
У меня в хидере таких определений нет. Вы можете сами это сделать или может у Вас уже есть такие определения.
Однако такой конструкцией Вы погасите остальные биты в регистре.
Видимо TIM2_CCMR_OCM это константа 0x70;
Чтобы выключить бит OCM2, сделайте так.
TIM2->CCMR1&= ~(TIM2_CCMR_OCM & 0x40);
Возможно у Вас определена константа TIM2_CCMR_OCM2 как 0x40. Тогда TIM2->CCMR1&= ~(TIM2_CCMR_OCM2);
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
[uquote="dm211",url="/forum/viewtopic.php?p=3269749#p3269749"]А вот это надо запомнить-
CLK->PCKENR1 = CLK_PCKENR1_TIM1 * 0
| CLK_PCKENR1_TIM2 * 1 ....
-биты умножать на ноль и один.[/uquote]
Так можно просто взять все описания битов из хедера и регулировать в процессе отладки программы.
Поэтому у меня нет функций в настройках периферии, только несколько присваиваний.