roboforum.ruТехнический форум по робототехнике. |
|
|
else
{
cntval = (CCPR1H << 8) + CCPR1L;
TMR1L -= CCPR1L;
TMR1H -= CCPR1H;
}
{
TMR1L = 0;
TMR1H = 0;
cntval = 0;
}
{
cntval = (CCPR1H << 8) + CCPR1L;
TMR1L -= CCPR1L;
TMR1H -= CCPR1H;
}
TMR1H = 0;
TMR1L = 0;
11.5 Чтение и запись таймера в 16-разрядном режиме
TMR1 может быть настроен для работы в режиме 16-разрядного чтения/записи (смотрите рисунок 11-2). Когда бит
RD16(T1CON<7>) установлен в ‘1’, обращение по адресу TMR1H вызовет действие с буферным регистром. При чтении
TMR1L значение старшего байта TMR1 будет загружено в буфер. Это позволяет читать 16-разрядное значение
полностью без необходимости проверки возможного переполнения младшего байта.
Запись старшего байта TMR1 должна выполняться через буферный регистр TMR1H. В старший байт TMR1
переписывается значение из TMR1H при записи в регистр TMR1L. Это позволяет сразу записывать 16-разрядное
значение.
В этом режиме старший байт TMR1 не доступен для непосредственного чтения или записи. Любая запись или
чтение должно выполняться через буферный регистр TMR1. Запись в TMR1H не сбрасывает предделитель.
Предделитель сбрасывается только при записи в TMR1L.
dccharacter писал(а):TMR1L = 0;
TMR1H = 0;
А писал я так, потому, что если делать наоборот, то возможна ситуация, когда TMR1L == 0xFF.
dccharacter писал(а):А это ты для какого МК цитируешь? В pic16f1827, к примеру, нет такой фигни.
For writes, it is recommended that the user simply stop
the timer and write the desired values. A write
contention may occur by writing to the timer registers,
while the register is incrementing. This may produce an
unpredictable value in the TMR1H:TMR1L register pair.
tmpL = TMR0L;
tmpH = TMR0H;
if (tmpH != TMR0H)
{
tmpL = TMR0L;
tmpH += 1;
}
У тебя есть прерывание по переполнению таймера/счетчика. Заведи еще одну переменную и инкрементируй ее в прерывании. Так ты будешь знать сколько раз счетчик переполнился за нужный тебе промежуток времени.
Вернуться в Новичкам или основы основ роботостроения.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8