Страница 1 из 1

Не выставляется регистр

Добавлено: Вт апр 08, 2014 00:27:01
Aviator_93
Доброго времени суток. В своем проекте использую 16-битный таймер счетчик. Настройку таймера провожу вот так:

Код: Выделить всё

TCCR1A |= (1 << WGM11);
	TCCR1A &= ~(1 << WGM10);
	
	TCCR1B |= (1 << WGM13);
	TCCR1B |= (1 << WGM12);
			
	ICR1 = 0xFFFF;	
			
	OCR1A = 0xAA10;
									
	TIMSK |= (1 << OCIE1A);

        TCCR1B &= ~(1 << CS12);
	TCCR1B |= (1 << CS11);
	TCCR1B &= ~(1 << CS10);
Провожу отладку микроконтроллера пошагово, и никак не могу понять, почему в регистр OCR1A не заносится мое число?

Re: Не выставляется регистр

Добавлено: Вт апр 08, 2014 08:44:05
ibiza11
The OCR1x Register is double buffered when using any of the twelve Pulse Width Modulation (PWM) modes. For the normal and Clear Timer on Compare(CTC) modes of operation, the double buffering is disabled. The double buffering synchronizes the update of the OCR1x Compare Register to either TOP or BOTTOM of the counting sequence. The synchronization prevents the occurrence of odd-length, non-symmetrical PWM pulses, thereby making the output glitch-free.

Вы используете режим Fast PWM, поэтому включается двойная буферизация для регистра OCR1A. Устанавливайте значение OCR1A до установки режима работы таймера.

Re: Не выставляется регистр

Добавлено: Вт апр 08, 2014 10:32:49
Aviator_93
Устанавливайте значение OCR1A до установки режима работы таймера
Хорошо, при первоначальной настройке, я так и сделаю. А вот допустим, во время работы таймера, мне необходимо изменять скважность ШИМ сигнала, соответственно, менять регистр OCR1A. Тогда как быть в этом случае?

Re: Не выставляется регистр

Добавлено: Вт апр 08, 2014 10:34:59
ARV
в этом случае пишите в регистр, когда хотите, обновится он сам, когда сможет :)

Re: Не выставляется регистр

Добавлено: Вт апр 08, 2014 16:37:53
Aviator_93
обновится он сам, когда сможет
А обновиться, когда счетный регистр будет в TOP или BOTTOM?

Re: Не выставляется регистр

Добавлено: Вт апр 08, 2014 16:50:01
ИС-пытатель
Даташит посмотрите. TOP, если не изменяет память