Dmitron 0 28 марта, 2006 Опубликовано 28 марта, 2006 · Жалоба Джентельмены, проясните или дайте пример кода, Нужно по переднему фронту срабатывания компаратора вычитать данные из таймера А. У меня получился такой код: // настройка компаратора 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 } Собственно, как это сделать чудесно расписано, но примера кода нигде нет. И я вроде как всё делаю правильно, таймер запускается, но в регистр не сохраняется. Что бы это могло быть? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rezident 0 28 марта, 2006 Опубликовано 28 марта, 2006 · Жалоба Неправильно мыслите. Читайте внимательно Руководство пользователя. 1. В регистр TACCRx при захвате записывается текущее значение TAR. 2. Чтобы по сигналу от компаратора срабатывал регистр захвата нужно соответствующим (программным) образом эти сигналы скоммутировать (CAOUT назначить сигналом для входа CCI1B регистра CCR1). См. таблицу в разделе timer_A3 (стр.18) даташита MSP430F149. 3. В вашем примере описаны обработчики векторов прерываний от компаратора и от одного регистра таймера. Но у таймера ведь не один вектор прерывания! По необозначенному вами вектору TIMERA1_VECTOR происходит переход при прерывании от CCR1, CCR2 и установке TAIFG. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rezident 0 28 марта, 2006 Опубликовано 28 марта, 2006 · Жалоба Вот Тексасовский пример в котором используется требуемые вам функции компаратора и таймера. Правда он для MSP430F1121, но это не суть важно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dmitron 0 29 марта, 2006 Опубликовано 29 марта, 2006 · Жалоба Большое пасибо! попали прямо в точку. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Terminator_2017 0 18 апреля, 2017 Опубликовано 18 апреля, 2017 · Жалоба Вот Тексасовский пример в котором используется требуемые вам функции компаратора и таймера. Правда он для MSP430F1121, но это не суть важно. Добрый день, а где можно найти этот пример? А также как реализовать этот пункт: Чтобы по сигналу от компаратора срабатывал регистр захвата нужно соответствующим (программным) образом эти сигналы скоммутировать (CAOUT назначить сигналом для входа CCI1B регистра CCR1). Заранее спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 136 18 апреля, 2017 Опубликовано 18 апреля, 2017 · Жалоба как реализовать этот пункт: Чтобы по сигналу от компаратора срабатывал регистр захвата нужно соответствующим (программным) образом эти сигналы скоммутировать (CAOUT назначить сигналом для входа CCI1B регистра CCR1)"Чтение документации из интернета вслух - 100 евро в час". Если уж вам лень самостоятельно прочитать указанный пункт документации: (CAOUT назначить сигналом для входа CCI1B регистра CCR1). См. таблицу в разделе timer_A3 (стр.18) даташита MSP430F149. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Terminator_2017 0 18 апреля, 2017 Опубликовано 18 апреля, 2017 · Жалоба "Чтение документации из интернета вслух - 100 евро в час". Если уж вам лень самостоятельно прочитать указанный пункт документации: Я спрашивал как в коде это реализовать. Пишу на С++. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 136 18 апреля, 2017 Опубликовано 18 апреля, 2017 · Жалоба Я спрашивал как в коде это реализовать. Пишу на С++.То есть вы пишете на С++, но при этом не знаете, как записать число в регистр управления таймером? Какое число писать и в какой регистр - указано в упомянутой документации. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться