Не работает синхронный захват TIMERB в MSP430FG4619 Настройка таймера:
<c>
TBCTL |=(TBSSEL0 // Тактирование от ACLK
+ MC1); // Непрерывный режим счета
TBCCTL0 |=(CM0 // Захват по обоим фронтам (программный)
+ CM1
+ CCIS1
// + SCS // Синхронный захват (если раскоментировать - не работатет)
+ CAP); // Режим захвата
</c>
Обработчик прерывания (считаю период импульсов с помощью TIMERB):
<c>
#pragma vector = PORT1_VECTOR
__interrupt void PORT1_int(void)
{
unsigned int TBR_temp;
TBCCTL0 ^= CCIS0; // Програмный захват (TBCCR0 = TBR)
TBCTL |= (TBCLR // Очистка и перезапуск таймера
+ MC1);
TBR_temp = TBCCR0;
..................
</c>
Работает, пока не раскоментирую строку // + SCS.
В этом случае в TBCCR0 всегда или 0 или 1, когда в TBR - нормальные данные, при этом устанавливается почему-то флаг переполнения захвата COV, хотя TBR у меня никогда не переполняется
Но мне нужен именно синхронный захват. Что я делаю неправильно?
-
- На электрониксе ответил. - rezident(19.09.2007 16:03, ссылка)