Добрый вечер! Разбираюсь с таймером в BF533. Делаю программу мигания светодиодом по прерыванию таймера 0. По теории после включения таймера в режиме ШИМ (PWMOUT) в регист TIMERx_COUNTER должен записаться 0 и счетчиком инкрементироваться до значения в регистре TIMERX_PERIOD. В моем же случае в регистр TIMERx_COUNTER после включения таймера записывается рандомное число и с каждым новым тактом значение в данном регистре увеличивается на рандомное число (причем с каждым разом это число разное), соответсвенно и прерывание срабатывает почти сразу после начала выполнения программы(программа входит в обработчик прерываний, устанавливается нулевой бит в регистре TIMER_STATUS). В регистре TIMER_CONFIG устанавливаю биты: 1)PWM_OUT - включение режима ШИМ 2)OUT_DIS - запрещение сигнала на выходе TMRx 3)PERIOD_CNT - генерируется ШИМ сигнал 4)IRQ_EN - разрешение прерывания 5)EMU_RUN - при эмуляции таймер работает
Может быть кто-нибудь сталкивался с данной проблемой?
|