Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как получить точно интервал 1ms?
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > MSP430
sunset
в общем нужно получить тиканья каждую миллисекунду с высокой точностью!

железо MSP430F149.

не так давно занимаюсь электроникой. думаю надо цеплять внешний кварц, потому как внутренний будет плавать больше от температуры и других факторов.
какой кварц лучше подцепить?
jorikdima
Цитата(sunset @ Nov 8 2010, 12:43) *
в общем нужно получить тиканья каждую миллисекунду с высокой точностью!
...
какой кварц лучше подцепить?

Тот, который обеспечит "высокую" точность.
rezident
"Высоту" точности обозначьте и какие-либо еще дополнительные критерии для выбора. В противном случае можно и внешний кварцевый генератор (рубидиевый biggrin.gif ) присоветовать.
sunset
прикинул достаточно будет 8Мгц для моих целей. какие поставить конденсаторы?
rezident
Если CL для кварца имеет типовое значение 16пФ, то конденсаторы по 15пФ ставьте. Можно 13пФ, если заземленный полигончик вокруг кварца (выводов кварцедержателя и кондеров) нарисуете и этим емкость монтажа чуть увеличите.
Только, если вы все же планируете побороться за энергосбережение, то я бы на вашем месте брал кварц с минимально возможной частотой. Типа 500кГц, 600кГц или 1МГц. А если допустим джиттер величиной около 0,7%, то можно вообще часовым кварцем обойтись.
O.L.
Цитата(sunset @ Nov 9 2010, 01:18) *
прикинул достаточно будет 8Мгц для моих целей. какие поставить конденсаторы?

Все они сильно разные.
А величину "точности" можно озвучить. 10 в(-9ой) это ведь тоже высокая точность smile.gif.
sunset
вопрос был мною поставлен некорректно. "высокая" точность - это я перегнул. +- 0,002ms.

может кому окажется инфа полезной.

-поставил кварц на 4Мгц, конденсаторы на 22pF
-для выполнения нужных действий каждую ms использую прерывание Таймера А. он тактируется от ACLK, предделитель поставил на 4. счетчик досчитывает до 1000 и выполняется обработка прерывания
-MCLK тактируется от DCO
fiatlux37
Короче. Кварц 5 Мгц. Минимальный шаг ровно 200нс.

void Init_Sys(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT

// Port P1.0 Config.
P1IES &= ~0x01;
P1IFG &= ~0x01; // Disable flag
P1IE = 0x01; // Enable interrupt P1.0

// Init timer
CCTL0 = OUTMOD_3 + CCIE; // CCR0 toggle, interrupt enabled
CCTL1 = OUTMOD_3 + CCIE; // CCR1 toggle, interrupt enabled
CCR0 = 0; //
CCR1 = 1; // Add Offset to CCR1
TACTL = TASSEL_2 + MC_1; // SMCLK, upmode
BCSCTL2 = XT2OFF + DIVS_0 + SELS; // Enable XT2CLK

_EINT(); // Enable global interrupt
}

// Timer A0 interrupt service routine
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A0 (void)
{
P1OUT ^= 0x01;
}
//

Будет менять состояние каждые 200нс.
rezident
Цитата(fiatlux37 @ Nov 13 2010, 17:20) *
Будет менять состояние каждые 200нс.
Не будет. По трем причинам. Причины я могу пояснить, если вы в свою очередь поясните, как у куда вы кварц 5МГц подключили?
fiatlux37
Может код и неполон немного - быстро писал. Главное идея.

Подключаю внешний кварц (5МГц), строчка

BCSCTL2 = XT2OFF + DIVS_0 + SELS;

говорит, что надо юзать его. Строчка

TACTL = TASSEL_2 + MC_1;

говорит, что для таймера А импульсы берутся с этого самого внешнего кварца + таймер считает вверх (MC_1).

Задавая параметры CCR0 и CCR1 вы и задате нужный вам интервал импульса, т.к. строчка

CCTL0 = OUTMOD_3 + CCIE

говорит о том, что как только таймер досчитает до CCR1, нога поднимется в '1', а досчитав до CCR0 опустится в '0' + разрешает прерывания (CCIE).

Обработку прерывания и конфигурирование таймера на порт (бит P1DIR |= 0x01;) можно написать самому.
Я ЛИЧНО получал так на экране осциллографа картинку, что при прибавлении к CCRх единицы (1 тактового импульса кварца), полученный импульс сдвигается на 200нс (это минимальный шаг). Учитывая, что 1 такт кварца равен 200нс, несложно высчитать любое необходимое время импульса.

++ внешний кварц подключал вместо встроенного в отладочную плату. Не забудьте, что максимальная частота кварца для 149-ого равна 8 МГц.
rezident
Цитата(fiatlux37 @ Nov 13 2010, 18:52) *
Учитывая, что 1 такт кварца равен 200нс, несложно высчитать любое необходимое время импульса.
Это утверждение является для меня банальностью и поэтому поskipано вкупе с предыдущими банальными (опять же для меня лично) пояснениями. А интересовала меня следующая информация
Цитата(fiatlux37 @ Nov 13 2010, 18:52) *
++ внешний кварц подключал вместо встроенного в отладочную плату. Не забудьте, что максимальная частота кварца для 149-ого равна 8 МГц.
которая опять оказалась бесполезной. Т.к. я не вижу и не знаю, что у вас там за отладочная плата и куда именно там был "встроен" кварц? Посему повторяю вопрос: как и куда (к каким выводам МК) у вас подключен кварц 5МГц?
fiatlux37
У msp430f149 есть ноги, которые называются XIN и XOUT (скорее всего 8 и 9, как у 15x и 16x) и XT2IN и XT2OUT (так же 52 и 53). Туда и подключается кварц. Потому что больше просто некуда. Далее в коде программы выбирается именно этот кварц (читай начало юзер гайда - какие именно биты необходимо включить (конкретно Basic Clock Module Introduction и картинка 4-1).
User's Guide
rezident
Цитата(fiatlux37 @ Nov 13 2010, 19:30) *
Туда и подключается кварц. Потому что больше просто некуда.
Дык куда "туда"??? maniac.gif К какой именно паре из двух перечисленных?
Цитата(fiatlux37 @ Nov 13 2010, 19:30) *
Далее в коде программы выбирается именно этот кварц (читай начало юзер гайда - какие именно биты необходимо включить (конкретно Basic Clock Module Introduction и картинка 4-1).
А вот это уже форменное нахальство! biggrin.gif Право выборочного цитирования MSP430x1xx Family User's Guide я застолбил за собой уже лет 7 или 8 как biggrin.gif
fiatlux37
Мы с вами явно недопонимаем друг друга.
Цитата из гайда: XT2CLK: Optional high-frequency oscillator that can be used with standard crystals, resonators, or external clock sources in the 450-kHz to 8-MHz range.[/b]

Далее следуя картинке 4-2, выбираем BCSCTL2 = XT2OFF + DIVS_0 + SELS; (включение вашего кварца). Это и будет ваш Sub System Clock (SMCLK, который выбирается битами TASSEL_2 для таймера). И, внимание, он подключается к ногам 52 и 53 !!! Т.к. эти ноги предназначенны для ВЧ кварца.
rezident
Ок. Я все понял. Вам не нужна помощь, т.к. вы не хотите отвечать на конкретные вопросы, но желаете продемонстрировать способности к цитированию. Правда без особого осмысления прочитанного sad.gif Не люблю кормить троллей. Извините.
fiatlux37
Ну а сейчас что не понятно ???
Какие способности к цитированию?
Написанно - ВЧ кварц называется XT2CLK. Смотрим даташит к msp-шнику и смотрим, что ВЧ кварц цепляется на ноги 52 и 53. Смотрим на картинку 4-2 в гиде и видим как активизировать этот ВЧ кварц как SMCLK. Прописываем SMCLK как кварц, используемый для таймера.
Так норм ?
rezident
Цитата(fiatlux37 @ Nov 13 2010, 22:21) *
Ну а сейчас что не понятно ???
Какие способности к цитированию?
Написанно - ВЧ кварц называется XT2CLK. Смотрим даташит к msp-шнику и смотрим, что ВЧ кварц цепляется на ноги 52 и 53.
Вы по-прежнему троллите или просто такой .... эээ ... задумчивый в суждениях? Мне не нужно знать как написано (это я и так знаю), а нужно как у вас реально подключено? Потому, что ВЧ-кварц можно подключать к обоим генераторам, но я хочу знать, куда вы его подключили?
Намекну, почему сейчас у вас не работает кварц куда бы вы его не подключили.
Если подключать 5МГц кварц к XT2, то он не будет работать поскольку вы сами выключили генератор XT2 установкой бита XT2OFF.
Цитата
BCSCTL2 = XT2OFF + DIVS_0 + SELS;

Если подключать 5МГц кварц к XT1, то он не будет работать до тех пор, пока вы не переведете этот генератор в ВЧ-режим работы установкой бита XTS.
Цитата
BCSCTL2 = XT2OFF + XTS + DIVS_0 + SELS;

Но в любом из двух случаев, нужно провести некоторую процедуру, связанную с ожиданием готовности работы генератора до тех пор, пока он не придет в норму. Только после этого частоту генератора можно будет использовать для внутреннего тактирования. В противном случае и для MCLK и для SMCLK будет использоваться источник тактирования DCO. Описана эта процедура в разделе 4.2.6 Basic Clock Module Fail-Safe Operation документа MSP430x1xx Family User's Manual (Rev.F), который вы тут пытались мне цитировать.
Кстати, использование ВЧ-кварца на XT2 при отсутствии часового или ВЧ-кварца на XT1 невозможно чисто аппаратно/технически. laughing.gif
fiatlux37
Да что вы говорите. smile.gif
Вот вам отрывок из хедера на 169-ый:
#define XT2OFF (0x80) /* Enable XT2CLK */
С этим разобрались.

#define SELS (0x08) /* SMCLK Source Select 0:DCOCLK / 1:XT2CLK/LFXTCLK */
Видимо, SELS_1 тоже штука необходимая.

А то, что часового кварца у меня нет никто и не заявлял. Вообще-то я даже писал, что использую отладочную плату. На ней дефолтом все кварцы есть. ВЧ кварц я перепаял сам.

The LFXT1 oscillator also supports high-speed crystals or resonators when in HF mode (XTS = 1) - с этим я согласен, но я и не оспаривал это.

Думаю, вам пора уже припаять ВЧ кварц к ногам 52 и 53 и включить его как вы сами хотите. Я вам сказал, как припаял его я, и как я его в программе включил. У меня всё работает.
ih_
Цитата(rezident @ Nov 14 2010, 05:54) *
...Кстати, использование ВЧ-кварца на XT2 при отсутствии часового или ВЧ-кварца на XT1 невозможно чисто аппаратно/технически. laughing.gif
Простите, но у меня пару проектов только на XT2. И работают. А почему Вы решили, что это не возможно?
fiatlux37
ih, рассудите нас пожалуйста. Как ВЫ подключали внешний кварц ??? smile.gif
rezident
Цитата(fiatlux37 @ Nov 14 2010, 10:03) *
Да что вы говорите. smile.gif
Вот вам отрывок из хедера на 169-ый:
#define XT2OFF (0x80) /* Enable XT2CLK */
С этим разобрались.
Понятия не имею, что у вас за хедер и кто писал к нему комментарии, но вас не удивляет, что бит имеет в названии OFF, которое в английском языке имеет значение - отсутствие, удаление, прекращение, аннулирование, отмену? Я лично предпочитаю пользоваться документацией производителя. Вам видимо как детям, нужно на картинках показывать? ОК. Показываю. См. приложение, вырезка из User's Manual.
Цитата(fiatlux37 @ Nov 14 2010, 10:03) *
#define SELS (0x08) /* SMCLK Source Select 0:DCOCLK / 1:XT2CLK/LFXTCLK */
Видимо, SELS_1 тоже штука необходимая.
Это вообще "мимо кассы". К биту SELS я никаких "претензий" не "предъявлял". А что такое SELS_1 могу только догадываться.
Цитата(fiatlux37 @ Nov 14 2010, 10:03) *
А то, что часового кварца у меня нет никто и не заявлял. Вообще-то я даже писал, что использую отладочную плату. На ней дефолтом все кварцы есть. ВЧ кварц я перепаял сам.
Это абзац! "На пятый день индеец Джо обнаружил, что в тюрьме нет четвертой стены". rolleyes.gif Именно этого я и добивался от вас! Информации о том, что вы впаяли 5МГц кварц на место другого, который был подключен к XT2. Я даже знаю, почему у вас это (случайно) работает. Но когда при простой перестановке операторов и/или порядка инициализации и/или в реальном устройстве работать перестанет, то всегда можете прийти сюда и спросить, почему не работает/перестало работать? smile.gif

Цитата(ih_ @ Nov 14 2010, 19:00) *
Простите, но у меня пару проектов только на XT2. И работают. А почему Вы решили, что это не возможно?
Замечание касается серии MSP430x2xx и тактирования от XT2 ядра процессора (MCLK). Вот там обсуждали.
fiatlux37
Хорошо. Думаю надо перестать спорить. У автора сей темы 149-ый msp-шник (касается серии MSP430x1xx), как его подключить, я написал. Прямые цитаты из даташита, гайда и хедера вас не устраивают. Припаяйте уже ваш кварц как сами хотите и отпишитесь о результате.

Цитата(rezident @ Nov 14 2010, 22:31) *
Именно этого я и добивался от вас! Информации о том, что вы впаяли 5МГц кварц на место другого, который был подключен к XT2.

Цитата(fiatlux37 @ Nov 13 2010, 19:04) *
И, внимание, он подключается к ногам 52 и 53 !!!
ih_
Цитата(fiatlux37 @ Nov 14 2010, 17:24) *
ih, рассудите нас пожалуйста. Как ВЫ подключали внешний кварц ??? smile.gif
За рассуждением обратитесь к мудрости старших коллег. smile.gif Кварц подключаю на выводы XT2.
Цитата(rezident @ Nov 14 2010, 21:31) *
Замечание касается серии MSP430x2xx и тактирования от XT2 ядра процессора (MCLK). Вот там обсуждали.
Прочитал/участвовал в этой ветке. Тактирование ядра возможно только от XT2 в обоих семействах. Есть особенности инициализации. Но возможно.
Сергей Борщ
А никого не смутило, что нога дергается обращением к порту в прерывании? И при наличии в программе любого другого прерывания этот обработчик может быть задержан на непредсказуемое время? Для чего, интересно, разработчики заложили в таймер_A аж целых 3 Compare модуля с возможностью аппаратного дерганья ног безо всяких прерываний вообще?
Shread
Цитата(Сергей Борщ @ Nov 15 2010, 16:25) *
А никого не смутило, что нога дергается обращением к порту в прерывании? И при наличии в программе любого другого прерывания этот обработчик может быть задержан на непредсказуемое время? Для чего, интересно, разработчики заложили в таймер_A аж целых 3 Compare модуля с возможностью аппаратного дерганья ног безо всяких прерываний вообще?

До обсуждения этого еще просто дело не дошло, и без того ведь знатный холиварчик получился, я, как зритель, очень высоко ценю то упорство, которое проявляет уважаемый Rezident в общении с людьми нежелающими читать даташиты... rolleyes.gif
rezident
Цитата(ih_ @ Nov 15 2010, 10:58) *
Тактирование ядра возможно только от XT2 в обоих семействах.

Неправда! excl.gif См. вырезки блок-схем из User's Guide обоих семейств. Я там специально выделил путь сигнала от XT1 как источника тактирования MCLK.
AHTOXA
Цитата(rezident @ Nov 15 2010, 19:16) *
Неправда! excl.gif См. вырезки блок-схем из User's Guide обоих семейств. Я там специально выделил путь сигнала от XT1 как источника тактирования MCLK.
Ну и как эти картинки соотносятся с вашим утверждением:
Цитата(rezident @ Nov 14 2010, 07:54) *
Кстати, использование ВЧ-кварца на XT2 при отсутствии часового или ВЧ-кварца на XT1 невозможно чисто аппаратно/технически. laughing.gif
?
rezident
Цитата(AHTOXA @ Nov 15 2010, 21:04) *
Ну и как эти картинки соотносятся с вашим утверждением:?
Перечитайте. Перечитайте сообщение к которому относится мой ответ и перечитайте топик, ссылку на который я дал выше. Осмыслите прочитанное.
AHTOXA
Я всё очень внимательно читаю. Вы сделали неверное утверждение (я его процитировал). Вам два человека указали на вашу неправоту. А вы крутитесь как уж на сковородке, вместо того, чтобы признать свою ошибку.
rezident
Цитата(AHTOXA @ Nov 15 2010, 21:12) *
вместо того, чтобы признать свою ошибку.
Моя ошибка была в том, что я когда писал про "использование ВЧ-кварца на XT2 при отсутствии часового или ВЧ-кварца на XT1 невозможно чисто аппаратно/технически" забыл, что у топикстартера МК из серии 1хх. Но я потом поправился, что это утверждение относится к серии 2xx.
Вы же привязались к сообщению, которое относится к совсем другому утверждению (не моему) о том, что "Тактирование ядра возможно только от XT2 в обоих семействах". Я на блок-схемах показал, что тактирование ядра процессора (сигнал MCLK) возможно не только от XT2, но и от XT1 тоже. В чем еще вы возжелаете меня обвинить? "Часовню тоже я разрушил?" (с) Кавказская пленница biggrin.gif
AHTOXA
Цитата(rezident @ Nov 15 2010, 21:33) *
Моя ошибка была в том, что я когда писал про "использование ВЧ-кварца на XT2 при отсутствии часового или ВЧ-кварца на XT1 невозможно чисто аппаратно/технически" забыл, что у топикстартера МК из серии 1хх. Но я потом поправился, что это утверждение относится к серии 2xx.
Ага. Только и к серии 2xx это тоже не относится. О чём вам и сказал ih_ фразой:
Цитата(ih_ @ Nov 15 2010, 10:58) *
Тактирование ядра возможно только от XT2 в обоих семействах. Есть особенности инициализации. Но возможно.

Правильнее было сформулировать "Тактирование ядра только от XT2 возможно в обоих семействах.", но из контекста беседы и так понятно. Вы же предпочли интерпретировать её как очевидную глупость, и радостно начали её разоблачать.
Цитата
Я на блок-схемах показал, что тактирование ядра процессора (сигнал MCLK) возможно не только от XT2, но и от XT1 тоже.
А также то, что тактирование только от XT2 ("при отсутствии часового или ВЧ-кварца на XT1") возможно как на 1xx, так и на 2xx.
rezident
Цитата(AHTOXA @ Nov 15 2010, 21:49) *
Правильнее было сформулировать "Тактирование ядра только от XT2 возможно в обоих семействах.", но из контекста беседы и так понятно.
Кому понятно? Мне лично непонятно. Как пишут, так я и понимаю. Именно домысливание за собеседника обычно приводит к недоразумениям.
Вывод в том топике был сделан на основе главы 5.2.7 Basic Clock Module+ Fail-Safe Operation. Поясните, почему вы несогласны и если ваши доводы будут убедительными, то я признаю, что был неправ. За мной признание моих ошибок не заржевеет.
fiatlux37
Раз уж к теме подключилось столько народу, то готов и признать свою ошибку, ежели она имеется, конечно.
Кто-нибудь из участников форума юзал внешний ВЧ кварц???
Утверждение, что припаянные к ногам XT2 кварц включается как SMCLK битами
BCSCTL2 = XT2OFF + DIVS_0 + SELS; // Enable XT2CLK
будет работать ???
Для первого семейства!
rezident
Цитата(fiatlux37 @ Nov 15 2010, 22:35) *
будет работать ???
При определенных условиях - будет. Если к моменту выполнения этой команды а) генерация на XT2 будет уже устойчивой, б) флаг OFIFG будет уже программно очищен, в) уже будет проинициализирован какой-либо модуль, который требует тактирования именно от XT2.
fiatlux37
Цитата(rezident @ Nov 15 2010, 21:42) *
Если к моменту выполнения этой команды а) генерация на XT2 будет уже устойчивой, б) флаг OFIFG будет уже программно очищен, в) уже будет проинициализирован какой-либо модуль, который требует тактирования именно от XT2.


Это само собой ))) Факт неоспоримый. smile.gif Пару циклов установки и проверки флагов написать необходимо.
Но сама-то мысль, которую я хотел донести своим первым сообщением в теме об SMCLK и таймере, получается, является правильной? yeah.gif

rezident
Цитата(fiatlux37 @ Nov 15 2010, 22:50) *
Но сама-то мысль, которую я хотел донести своим первым сообщением в теме об SMCLK и таймере, получается, является правильной? yeah.gif
Еще раз хочу повторить: как пишете, так и понимают написанное! В исходное вашем посте и приведенном в нем исходном коде выполняется только условие "в".
ih_
2АНТОХА, Благодарю за потдержку. smile.gif
2rezident, Благодарю за наставления.
Цитата(Сергей Борщ @ Nov 15 2010, 16:25) *
А никого не смутило, что нога дергается обращением к порту в прерывании?...
Цитата(Shread @ Nov 15 2010, 16:43) *
До обсуждения этого еще просто дело не дошло, и без того ведь знатный холиварчик получился, ...
А вот и мудрецы пожаловали, прогнулось пространство от сечи. Вдохновляют на принятие и терпимость . smile.gif
Однако, продолжим по сути темы.
Цитата(fiatlux37 @ Nov 13 2010, 15:20) *
Короче. Кварц 5 Мгц. Минимальный шаг ровно 200нс.
...
Если у Вас еще не заработало? То Вашу задачу можно реализовать, если:
- отключить WDT (это понятно и сделано);
- запустить XT2, подождать пока стабилизируется и переключить SMCLK на него (MCLK на ваше усмотрение);
- инициализировать таймер как счетчик и запустить его на счет (частично сделано, проверьте значение CCR1 и отключите генерацию прерываний);
- инициализировать вывод (пин) как функциональный вывод от таймера (это не сложно);
- можно "усыпить" контроллер (но не глубоко). smile.gif

Лишний код:
Код
  P1IES  &=  ~0x01;
  P1IFG  &= ~0x01;                            // Disable flag
  P1IE    =  0x01;                            // Enable interrupt P1.0
...
_EINT();                                    // Enable global interrupt
...
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A0 (void)
  {    
    P1OUT ^= 0x01;
  }
Дерзайте! smile.gif

Цитата(Сергей Борщ @ Nov 15 2010, 16:25) *
...Для чего, интересно, разработчики заложили в таймер_A аж целых 3 Compare модуля с возможностью аппаратного дерганья ног безо всяких прерываний вообще?
Может я просто не понял Вас во всей вашей глубокой мудрости?
Цитата из slau144e (страница 12-11):
12.2.4 Capture/Compare Blocks
...
Capture Mode
... If a capture occurs:
- The timer value is copied into the TACCRx register;
- The interrupt flag CCIFG is set
MrYuran
Если
Цитата(ih_ @ Nov 16 2010, 08:54) *
- инициализировать вывод (пин) как функциональный вывод от таймера (это не сложно);

то это
Код
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A0 (void)
  {    
    P1OUT ^= 0x01;
  }

уже не нужно.
Это по поводу
Цитата
Может я просто не понял Вас во всей вашей глубокой мудрости?


Цитата
- The interrupt flag CCIFG is set

- означает, что флаг прерывания установится.
но не означает автоматическую необходимость вызова и обработки этого прерывания
Dog Pawlowa
Кажется, об этом речь?

Код
void ClockConfiguration(void)
{    unsigned int i;
    __disable_interrupt();

    DCOCTL= 0x56;            //    without changes
    BCSCTL1=0x07;        //    START XT2, DCO faster
    TogglePin(PulseWdt);
    OnPin(ErrorLed);
    do
    {    IFG1 &= ~OFIFG;
        for (i = 0x3FFF; i > 0; i--)
            TogglePin(PulseWdt);
        TogglePin(ErrorLed);
    }
    while (IFG1 & OFIFG);        // if OSCFault flag set => repeat(error)
    BCSCTL2=SELS;        // select SMCLK=XT2CLK
}

uint del;
    

void TimerBConfiguration(void)
{    __bic_SR_register OSCOFF;

    TBCTL = TBSSEL_2 + TBCLR + MC_0;    //    Timer B counts SMCLK clocks continuosly

    TBCCTL0 = CCIE;            //    module 0 configuration
    TBCCR0 = MaxB;            //    period of timer overflow

    TBCCTL1 = OUTMOD_3;            //    module 1 configuration for ADC, Set/reset
    TBCCR1 = (MaxB/3)*2;            //    out2=set/reset

    TBCCTL2 = OUTMOD_3;            //    module 2 configuration for valve, set/reset
    TBCCR2 = MaxB/2;            //    here 50%, setup value will be used when valve starts

    TBCCTL3 = OUTMOD_3; //+CCIE;    //    AC generation        set/reset
    TBCCR3 = MaxB/2;    
    

    TBCTL    |= MC_1;            //    timer start to "UP" mode
}
ih_
Цитата
...но не означает автоматическую необходимость вызова и обработки этого прерывания
И rezident призывает - давайте выражаться яснее и четче. Что Вы имели ввиду под: "...автоматическую необходимость..."?
msalov
Цитата(ih_ @ Nov 16 2010, 07:54) *
Может я просто не понял Вас во всей вашей глубокой мудрости?
Цитата из slau144e (страница 12-11):
12.2.4 Capture/Compare Blocks
...
Capture Mode
... If a capture occurs:
- The timer value is copied into the TACCRx register;
- The interrupt flag CCIFG is set

Только вам нужен не Capture Режим, а Compare
Цитата
Compare Mode
The compare mode is selected when CAP = 0. The compare mode is used to
generate PWM output signals or interrupts at specific time intervals. When
TAR counts to the value in a TACCRx:
 Interrupt flag CCIFG is set
 Internal signal EQUx = 1
 EQUx affects the output according to the output mode
 The input signal CCI is latched into SCC
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.