Перейти к содержанию

как по срабатыванию компаратора

Джентельмены, проясните или дайте пример кода,
Нужно по переднему фронту срабатывания компаратора вычитать данные из таймера А. У меня получился такой код:

// настройка компаратора
CACTL1 = CARSEL+CAREF1+CAON+CAIE;
CACTL2 = P2CA0+CAF;
// настройка таймера
TACTL = TASSEL1 + TACLR+ID0+ID1; // SMCK, clear TAR, devider=8
TACCTL1 = CCIE + CCIS0 + CM0 + CAP; /* прерывание, подключить вход capture к выходу таймера, захват по переднему фронту, capture mode
TACCR1 = 1000; /* регистр, в который по моей мысли должен сохраняться ТАR при срабатывании capture*/
flagCF=1; // флаг
TACTL |= MC0; // пуск таймера, и заряда ёмкости через резюк
while(flagCF); //ждём, пока что-нибудь не сработает
temp2 = TACCR1; // сохраняём
return (temp2);
}
// а вот и прерывания:
#pragma vector=TIMERA0_VECTOR
__interrupt void TA0_timer_ISR (void)
{
TACTL &= ~(MC0+MC1);
flagCF=0; // stop timer
}

#pragma vector=COMPARATORA_VECTOR
__interrupt void TA0_capture_ISR (void)
{
TACTL &= ~(MC0+MC1);
flagCF=0; // stop timer
}

Собственно, как это сделать чудесно расписано, но примера кода нигде нет. И я вроде как всё делаю правильно, таймер запускается, но в регистр не сохраняется. Что бы это могло быть?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Неправильно мыслите. Читайте внимательно Руководство пользователя.
1. В регистр TACCRx при захвате записывается текущее значение TAR.
2. Чтобы по сигналу от компаратора срабатывал регистр захвата нужно соответствующим (программным) образом эти сигналы скоммутировать (CAOUT назначить сигналом для входа CCI1B регистра CCR1). См. таблицу в разделе timer_A3 (стр.18) даташита MSP430F149.
3. В вашем примере описаны обработчики векторов прерываний от компаратора и от одного регистра таймера. Но у таймера ведь не один вектор прерывания! По необозначенному вами вектору TIMERA1_VECTOR происходит переход при прерывании от CCR1, CCR2 и установке TAIFG.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Вот Тексасовский пример в котором используется требуемые вам функции компаратора и таймера. Правда он для MSP430F1121, но это не суть важно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Большое пасибо! попали прямо в точку.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Цитата(rezident @ Mar 28 2006, 20:23) <{POST_SNAPBACK}>
Вот Тексасовский пример в котором используется требуемые вам функции компаратора и таймера. Правда он для MSP430F1121, но это не суть важно.



Добрый день, а где можно найти этот пример?

А также как реализовать этот пункт: Чтобы по сигналу от компаратора срабатывал регистр захвата нужно соответствующим (программным) образом эти сигналы скоммутировать (CAOUT назначить сигналом для входа CCI1B регистра CCR1).

Заранее спасибо!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
QUOTE (Terminator_2017 @ Apr 18 2017, 12:52) <{POST_SNAPBACK}>
как реализовать этот пункт: Чтобы по сигналу от компаратора срабатывал регистр захвата нужно соответствующим (программным) образом эти сигналы скоммутировать (CAOUT назначить сигналом для входа CCI1B регистра CCR1)
"Чтение документации из интернета вслух - 100 евро в час". Если уж вам лень самостоятельно прочитать указанный пункт документации:

QUOTE (rezident @ Mar 28 2006, 19:08) <{POST_SNAPBACK}>
(CAOUT назначить сигналом для входа CCI1B регистра CCR1). См. таблицу в разделе timer_A3 (стр.18) даташита MSP430F149.



Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Цитата(Сергей Борщ @ Apr 18 2017, 11:14) <{POST_SNAPBACK}>
"Чтение документации из интернета вслух - 100 евро в час". Если уж вам лень самостоятельно прочитать указанный пункт документации:


Я спрашивал как в коде это реализовать. Пишу на С++.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
QUOTE (Terminator_2017 @ Apr 18 2017, 14:56) <{POST_SNAPBACK}>
Я спрашивал как в коде это реализовать. Пишу на С++.
То есть вы пишете на С++, но при этом не знаете, как записать число в регистр управления таймером? Какое число писать и в какой регистр - указано в упомянутой документации.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация