Добрый вечер!
Плата. Попробовал работать с PWM. наткнулся на непонятку. При запуске МК PWM не работает - светодиод не светит.(осциллографом посмотреть нету возможности), но если пройти пошаговую отладку и запустить на цикле на выполнение(кнопка GO)
![Шокирован](images/smilies/icon_eek.gif)
, то все работает и яркость меняется. Выключаю отладку опять не работает
![Расстроен](images/smilies/icon_sad.gif)
.Опять включаю отладку сразу GO без результата.
Работает только если пройти пошагово а потом нажать GO.
В чем проблема подскажите пожалуйста.
Код:
PHP код:
|
#include "stm8l15x.h"
#include "iostm8l152c6.h"
int main()
{
CLK_CKDIVR = 0;
CLK_ICKCR_HSION=1;
CLK-›SWR = 0x01;
PD_DDR_bit.DDR2=1;
PD_CR1_bit.C12=1;
PD_CR2_bit.C22=1;
CLK_PCKENR2_bit.PCKEN21 = 1; //Включаем тактирование таймера 1
TIM1_CCMR1_bit.OC1M=6; //Режим работы
TIM1_BKR_bit.MOE=1;
TIM1_BKR_bit.OSSR=0;
TIM1_PSCRH = 0;
TIM1_PSCRL = 7; //Делитель на 8
TIM1_ARRH =(1000)››8; //Частота переполнений = 16М / 8 / 1000 = 2000 Гц
TIM1_ARRL =(1000)&0x00ff;
TIM1_CCR1H=(1000)››8;
TIM1_CCR1L=(1000)&0x00ff; // Заполнение 50%
TIM1_CCER1_bit.CC1NE=0;
TIM1_CCER1_bit.CC1E=1; // разрешение канала
TIM1_CR1_bit.URS = 1; //Прерывание только по переполнению счетчика
TIM1_EGR_bit.UG = 1; //Вызываем Update Event
TIM1_IER_bit.UIE = 1; //Разрешаем прерывание
TIM1_CR1_bit.CEN=1;
while(1)
{
//PD_ODR_bit.ODR2 = 1;
}
}
|