Врядли он к этому сейчас готов.B@R5uk писал(а):Корректное или нет, это вопрошающему решать, ...
То есть, Вы не согласны с тем, что нажатия, начавшиеся и закончившиеся внутри интервала таймера, полностью выпадут из подсчета?
Врядли он к этому сейчас готов.B@R5uk писал(а):Корректное или нет, это вопрошающему решать, ...
Да. Но только переподключением таймера к другому выходу предделителя. А ещё можно тактировать таймер от внешнего источника управляемой частоты (он же может быть выход другого таймера МК).prw07 писал(а):Можно ли изменять длительность импульсов (или частоту) в этом режиме.
Как запись байта в регистр ввода-вывода. Применять в режиме Normal у меня не возникало необходимости.prw07 писал(а):Как это выглядит на практике?
Не совсем "только". Насколько я помню, в доке атмеля отмечают, что можно это делать программно - повесившись на прерывание по переполнению - и тут же сообщают, что этот способ не рекомендуется, так как он отнимает много процессорного времени. Но если очень хочется, то - можно.B@R5uk писал(а):Но только переподключением таймера к другому выходу предделителя.
Код: Выделить всё
TCCR0=(1<<FOC0) | (0<<WGM00) | (1<<COM01) | (0<<COM00) | (0<<WGM01) | (0<<CS02) | (0<<CS01) | (1<<CS00); установился FOC0 в 1
TCNT0=0x00; по выполнению этого FOC0 сбросился в 0Код: Выделить всё
TCCR0|=(1<<FOC0);
TCCR0=A1;
TCCR0=0b10100001;Значение этих битов всегда читается как ноль, поскольку они реализованы не как обычные биты регистра данных, и даже не как регистр в который можно только записать данные для хранения. Они реализованы как стробы модуля формирования волны (Waveform Generation Unit). Это в точности как тактовый С-вход D-триггера микросхемы К155ТМ2. Внимательнее читайте документацию:prw07 писал(а):Осталось разобраться с битом FOC0. Не устанавливается он в 1. Вернее сбрасывается в 0 как только в TNT0 что-либо записывается.
The FOC1A/FOC1B bits are only active when the WGM13:0 bits specifies a non-PWM mode.
However, for ensuring compatibility with future devices, these bits must be set to zero when
TCCR1A is written when operating in a PWM mode. When writing a logical one to the
FOC1A/FOC1B bit, an immediate compare match is forced on the Waveform Generation unit.
The OC1A/OC1B output is changed according to its COM1x1:0 bits setting. Note that the
FOC1A/FOC1B bits are implemented as strobes. Therefore it is the value present in the
COM1x1:0 bits that determine the effect of the forced compare.
A FOC1A/FOC1B strobe will not generate any interrupt nor will it clear the timer in Clear Timer
on Compare match (CTC) mode using OCR1A as TOP.
The FOC1A/FOC1B bits are always read as zero.
ARV писал(а):gavrasio, вы метете пургу
когда вы уже прочтете книжку, чтобы пользоваться ПРАВИЛЬНОЙ ТЕРМИНОЛОГИЕЙ, а не выдумывать свою собственную, не соприкасающуюся с истиной?!
нетgavrasio писал(а):Нормальную книжку я прочитал?
ARV писал(а):нетgavrasio писал(а):Нормальную книжку я прочитал?
Код: Выделить всё
ldi r16, 160
out OCR0A, r16 ;160 тиков при 16МГц для 10мкс
ldi r16, (1<<TOIE0)
sts TIMSK0, r16 ;прерывание по переполнению (максимальное значение снижено с 255 до OCR0A)
ldi r16, (0<<WGM02)|(1<<WGM01)|(0<<WGM00)
out TCCR0A, r16 ;Clear Timer on Compare Match (CTC) Mode
seiКод: Выделить всё
ldi r16, (0<<CS02)|(0<<CS01)|(1<<CS00) ;запускаем счетчик
out TCCR0B, r16 ;тактирование без предделителяДа и не должен контроллер заходить в этот обработчик. Для ATtiny13, примерно, будет выглядеть так.НАПАЛМ писал(а):Обработчик пишу по вектору переполнения таймера.
Код: Выделить всё
.org 6
T0_COMPA:
NOP
reti
;************************
ldi r16, 160-1 ;ldi r16, 160
out OCR0A, r16 ;160 тиков при 16МГц для 10мкс
ldi r16, (1<<OCIE0) ; ldi r16, (1<<TOIE0)
OUT TIMSK0, r16 ;прерывание по совпадению OCR0A
OUT TIFR0,R16
ldi r16, (0<<WGM02)|(1<<WGM01)|(0<<WGM00)
out TCCR0A, r16 ;Clear Timer on Compare Match (CTC) Mode
ldi r16, (0<<CS02)|(0<<CS01)|(1<<CS00) ;запускаем счетчик
out TCCR0B, r16 ;тактирование без предделителя
sei
RJMP PC+0Что ж вы хотите, когда у вас таймер остановлен? Перепроверьте все настройки ещё раз, сверив их с даташитом. Какой МК, кстати, используете, про это, пожалуй, в первую очередь надо было написать.xcoma писал(а):TCCR1B=(0<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (0<<WGM12) | (0<<CS12) | (0<<CS11) | (0<<CS10);
Код: Выделить всё
ASSR=(0<<EXCLK) | (1<<AS2);
TCCR2A=(0<<COM2A1) | (0<<COM2A0) | (0<<COM2B1) | (0<<COM2B0) | (0<<WGM21) | (0<<WGM20);
TCCR2B=(0<<WGM22) | (1<<CS22) | (0<<CS21) | (1<<CS20);