реклама на сайте
подробности

 
 
> Как получить точно интервал 1ms?
sunset
сообщение Nov 8 2010, 09:43
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 655
Регистрация: 27-08-09
Из: Новосибирск
Пользователь №: 52 061



в общем нужно получить тиканья каждую миллисекунду с высокой точностью!

железо MSP430F149.

не так давно занимаюсь электроникой. думаю надо цеплять внешний кварц, потому как внутренний будет плавать больше от температуры и других факторов.
какой кварц лучше подцепить?
Go to the top of the page
 
+Quote Post
3 страниц V   1 2 3 >  
Start new topic
Ответов (1 - 40)
jorikdima
сообщение Nov 8 2010, 09:49
Сообщение #2


тут может быть ваша реклама
*****

Группа: Свой
Сообщений: 1 164
Регистрация: 15-03-06
Из: Санкт-Петербург/CA
Пользователь №: 15 280



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

Тот, который обеспечит "высокую" точность.
Go to the top of the page
 
+Quote Post
rezident
сообщение Nov 8 2010, 17:50
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



"Высоту" точности обозначьте и какие-либо еще дополнительные критерии для выбора. В противном случае можно и внешний кварцевый генератор (рубидиевый biggrin.gif ) присоветовать.
Go to the top of the page
 
+Quote Post
sunset
сообщение Nov 8 2010, 19:18
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 655
Регистрация: 27-08-09
Из: Новосибирск
Пользователь №: 52 061



прикинул достаточно будет 8Мгц для моих целей. какие поставить конденсаторы?
Go to the top of the page
 
+Quote Post
rezident
сообщение Nov 8 2010, 19:33
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Если CL для кварца имеет типовое значение 16пФ, то конденсаторы по 15пФ ставьте. Можно 13пФ, если заземленный полигончик вокруг кварца (выводов кварцедержателя и кондеров) нарисуете и этим емкость монтажа чуть увеличите.
Только, если вы все же планируете побороться за энергосбережение, то я бы на вашем месте брал кварц с минимально возможной частотой. Типа 500кГц, 600кГц или 1МГц. А если допустим джиттер величиной около 0,7%, то можно вообще часовым кварцем обойтись.
Go to the top of the page
 
+Quote Post
O.L.
сообщение Nov 9 2010, 05:55
Сообщение #6


Частый гость
**

Группа: Свой
Сообщений: 96
Регистрация: 10-06-05
Из: Новосибирск
Пользователь №: 5 890



Цитата(sunset @ Nov 9 2010, 01:18) *
прикинул достаточно будет 8Мгц для моих целей. какие поставить конденсаторы?

Все они сильно разные.
А величину "точности" можно озвучить. 10 в(-9ой) это ведь тоже высокая точность smile.gif.

Сообщение отредактировал O.L. - Nov 9 2010, 05:55
Go to the top of the page
 
+Quote Post
sunset
сообщение Nov 11 2010, 11:46
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 655
Регистрация: 27-08-09
Из: Новосибирск
Пользователь №: 52 061



вопрос был мною поставлен некорректно. "высокая" точность - это я перегнул. +- 0,002ms.

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

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

Сообщение отредактировал sunset - Nov 11 2010, 11:47
Go to the top of the page
 
+Quote Post
fiatlux37
сообщение Nov 13 2010, 12:20
Сообщение #8





Группа: Участник
Сообщений: 11
Регистрация: 17-04-10
Из: Томск
Пользователь №: 56 711



Короче. Кварц 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нс.

Сообщение отредактировал fiatlux37 - Nov 13 2010, 12:24
Go to the top of the page
 
+Quote Post
rezident
сообщение Nov 13 2010, 12:25
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(fiatlux37 @ Nov 13 2010, 17:20) *
Будет менять состояние каждые 200нс.
Не будет. По трем причинам. Причины я могу пояснить, если вы в свою очередь поясните, как у куда вы кварц 5МГц подключили?
Go to the top of the page
 
+Quote Post
fiatlux37
сообщение Nov 13 2010, 13:52
Сообщение #10





Группа: Участник
Сообщений: 11
Регистрация: 17-04-10
Из: Томск
Пользователь №: 56 711



Может код и неполон немного - быстро писал. Главное идея.

Подключаю внешний кварц (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 МГц.
Go to the top of the page
 
+Quote Post
rezident
сообщение Nov 13 2010, 14:06
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(fiatlux37 @ Nov 13 2010, 18:52) *
Учитывая, что 1 такт кварца равен 200нс, несложно высчитать любое необходимое время импульса.
Это утверждение является для меня банальностью и поэтому поskipано вкупе с предыдущими банальными (опять же для меня лично) пояснениями. А интересовала меня следующая информация
Цитата(fiatlux37 @ Nov 13 2010, 18:52) *
++ внешний кварц подключал вместо встроенного в отладочную плату. Не забудьте, что максимальная частота кварца для 149-ого равна 8 МГц.
которая опять оказалась бесполезной. Т.к. я не вижу и не знаю, что у вас там за отладочная плата и куда именно там был "встроен" кварц? Посему повторяю вопрос: как и куда (к каким выводам МК) у вас подключен кварц 5МГц?
Go to the top of the page
 
+Quote Post
fiatlux37
сообщение Nov 13 2010, 14:30
Сообщение #12





Группа: Участник
Сообщений: 11
Регистрация: 17-04-10
Из: Томск
Пользователь №: 56 711



У msp430f149 есть ноги, которые называются XIN и XOUT (скорее всего 8 и 9, как у 15x и 16x) и XT2IN и XT2OUT (так же 52 и 53). Туда и подключается кварц. Потому что больше просто некуда. Далее в коде программы выбирается именно этот кварц (читай начало юзер гайда - какие именно биты необходимо включить (конкретно Basic Clock Module Introduction и картинка 4-1).
User's Guide

Сообщение отредактировал fiatlux37 - Nov 13 2010, 14:33
Go to the top of the page
 
+Quote Post
rezident
сообщение Nov 13 2010, 14:41
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(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
Go to the top of the page
 
+Quote Post
fiatlux37
сообщение Nov 13 2010, 15:04
Сообщение #14





Группа: Участник
Сообщений: 11
Регистрация: 17-04-10
Из: Томск
Пользователь №: 56 711



Мы с вами явно недопонимаем друг друга.
Цитата из гайда: 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 !!! Т.к. эти ноги предназначенны для ВЧ кварца.

Сообщение отредактировал fiatlux37 - Nov 13 2010, 15:06
Go to the top of the page
 
+Quote Post
rezident
сообщение Nov 13 2010, 17:05
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Ок. Я все понял. Вам не нужна помощь, т.к. вы не хотите отвечать на конкретные вопросы, но желаете продемонстрировать способности к цитированию. Правда без особого осмысления прочитанного sad.gif Не люблю кормить троллей. Извините.
Go to the top of the page
 
+Quote Post
fiatlux37
сообщение Nov 13 2010, 17:21
Сообщение #16





Группа: Участник
Сообщений: 11
Регистрация: 17-04-10
Из: Томск
Пользователь №: 56 711



Ну а сейчас что не понятно ???
Какие способности к цитированию?
Написанно - ВЧ кварц называется XT2CLK. Смотрим даташит к msp-шнику и смотрим, что ВЧ кварц цепляется на ноги 52 и 53. Смотрим на картинку 4-2 в гиде и видим как активизировать этот ВЧ кварц как SMCLK. Прописываем SMCLK как кварц, используемый для таймера.
Так норм ?
Go to the top of the page
 
+Quote Post
rezident
сообщение Nov 14 2010, 02:54
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(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

Сообщение отредактировал rezident - Nov 14 2010, 03:18
Go to the top of the page
 
+Quote Post
fiatlux37
сообщение Nov 14 2010, 05:03
Сообщение #18





Группа: Участник
Сообщений: 11
Регистрация: 17-04-10
Из: Томск
Пользователь №: 56 711



Да что вы говорите. 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 и включить его как вы сами хотите. Я вам сказал, как припаял его я, и как я его в программе включил. У меня всё работает.

Сообщение отредактировал fiatlux37 - Nov 14 2010, 05:06
Go to the top of the page
 
+Quote Post
ih_
сообщение Nov 14 2010, 14:00
Сообщение #19


Частый гость
**

Группа: Свой
Сообщений: 77
Регистрация: 2-04-08
Из: Россия, Киров
Пользователь №: 36 422



Цитата(rezident @ Nov 14 2010, 05:54) *
...Кстати, использование ВЧ-кварца на XT2 при отсутствии часового или ВЧ-кварца на XT1 невозможно чисто аппаратно/технически. laughing.gif
Простите, но у меня пару проектов только на XT2. И работают. А почему Вы решили, что это не возможно?
Go to the top of the page
 
+Quote Post
fiatlux37
сообщение Nov 14 2010, 14:24
Сообщение #20





Группа: Участник
Сообщений: 11
Регистрация: 17-04-10
Из: Томск
Пользователь №: 56 711



ih, рассудите нас пожалуйста. Как ВЫ подключали внешний кварц ??? smile.gif


Сообщение отредактировал fiatlux37 - Nov 14 2010, 14:24
Go to the top of the page
 
+Quote Post
rezident
сообщение Nov 14 2010, 18:31
Сообщение #21


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(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). Вот там обсуждали.

Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
fiatlux37
сообщение Nov 15 2010, 04:43
Сообщение #22





Группа: Участник
Сообщений: 11
Регистрация: 17-04-10
Из: Томск
Пользователь №: 56 711



Хорошо. Думаю надо перестать спорить. У автора сей темы 149-ый msp-шник (касается серии MSP430x1xx), как его подключить, я написал. Прямые цитаты из даташита, гайда и хедера вас не устраивают. Припаяйте уже ваш кварц как сами хотите и отпишитесь о результате.

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

Цитата(fiatlux37 @ Nov 13 2010, 19:04) *
И, внимание, он подключается к ногам 52 и 53 !!!


Сообщение отредактировал fiatlux37 - Nov 15 2010, 04:44
Go to the top of the page
 
+Quote Post
ih_
сообщение Nov 15 2010, 05:58
Сообщение #23


Частый гость
**

Группа: Свой
Сообщений: 77
Регистрация: 2-04-08
Из: Россия, Киров
Пользователь №: 36 422



Цитата(fiatlux37 @ Nov 14 2010, 17:24) *
ih, рассудите нас пожалуйста. Как ВЫ подключали внешний кварц ??? smile.gif
За рассуждением обратитесь к мудрости старших коллег. smile.gif Кварц подключаю на выводы XT2.
Цитата(rezident @ Nov 14 2010, 21:31) *
Замечание касается серии MSP430x2xx и тактирования от XT2 ядра процессора (MCLK). Вот там обсуждали.
Прочитал/участвовал в этой ветке. Тактирование ядра возможно только от XT2 в обоих семействах. Есть особенности инициализации. Но возможно.

Сообщение отредактировал ih_ - Nov 15 2010, 07:22
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Nov 15 2010, 13:25
Сообщение #24


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



А никого не смутило, что нога дергается обращением к порту в прерывании? И при наличии в программе любого другого прерывания этот обработчик может быть задержан на непредсказуемое время? Для чего, интересно, разработчики заложили в таймер_A аж целых 3 Compare модуля с возможностью аппаратного дерганья ног безо всяких прерываний вообще?


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Shread
сообщение Nov 15 2010, 13:43
Сообщение #25


иногда заглядывающий
****

Группа: Свой
Сообщений: 900
Регистрация: 18-05-05
Из: Зеленоград
Пользователь №: 5 170



Цитата(Сергей Борщ @ Nov 15 2010, 16:25) *
А никого не смутило, что нога дергается обращением к порту в прерывании? И при наличии в программе любого другого прерывания этот обработчик может быть задержан на непредсказуемое время? Для чего, интересно, разработчики заложили в таймер_A аж целых 3 Compare модуля с возможностью аппаратного дерганья ног безо всяких прерываний вообще?

До обсуждения этого еще просто дело не дошло, и без того ведь знатный холиварчик получился, я, как зритель, очень высоко ценю то упорство, которое проявляет уважаемый Rezident в общении с людьми нежелающими читать даташиты... rolleyes.gif
Go to the top of the page
 
+Quote Post
rezident
сообщение Nov 15 2010, 14:16
Сообщение #26


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(ih_ @ Nov 15 2010, 10:58) *
Тактирование ядра возможно только от XT2 в обоих семействах.

Неправда! excl.gif См. вырезки блок-схем из User's Guide обоих семейств. Я там специально выделил путь сигнала от XT1 как источника тактирования MCLK.
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Nov 15 2010, 16:04
Сообщение #27


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(rezident @ Nov 15 2010, 19:16) *
Неправда! excl.gif См. вырезки блок-схем из User's Guide обоих семейств. Я там специально выделил путь сигнала от XT1 как источника тактирования MCLK.
Ну и как эти картинки соотносятся с вашим утверждением:
Цитата(rezident @ Nov 14 2010, 07:54) *
Кстати, использование ВЧ-кварца на XT2 при отсутствии часового или ВЧ-кварца на XT1 невозможно чисто аппаратно/технически. laughing.gif
?


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
rezident
сообщение Nov 15 2010, 16:08
Сообщение #28


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(AHTOXA @ Nov 15 2010, 21:04) *
Ну и как эти картинки соотносятся с вашим утверждением:?
Перечитайте. Перечитайте сообщение к которому относится мой ответ и перечитайте топик, ссылку на который я дал выше. Осмыслите прочитанное.
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Nov 15 2010, 16:12
Сообщение #29


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Я всё очень внимательно читаю. Вы сделали неверное утверждение (я его процитировал). Вам два человека указали на вашу неправоту. А вы крутитесь как уж на сковородке, вместо того, чтобы признать свою ошибку.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
rezident
сообщение Nov 15 2010, 16:33
Сообщение #30


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(AHTOXA @ Nov 15 2010, 21:12) *
вместо того, чтобы признать свою ошибку.
Моя ошибка была в том, что я когда писал про "использование ВЧ-кварца на XT2 при отсутствии часового или ВЧ-кварца на XT1 невозможно чисто аппаратно/технически" забыл, что у топикстартера МК из серии 1хх. Но я потом поправился, что это утверждение относится к серии 2xx.
Вы же привязались к сообщению, которое относится к совсем другому утверждению (не моему) о том, что "Тактирование ядра возможно только от XT2 в обоих семействах". Я на блок-схемах показал, что тактирование ядра процессора (сигнал MCLK) возможно не только от XT2, но и от XT1 тоже. В чем еще вы возжелаете меня обвинить? "Часовню тоже я разрушил?" (с) Кавказская пленница biggrin.gif
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Nov 15 2010, 16:49
Сообщение #31


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(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.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
rezident
сообщение Nov 15 2010, 17:12
Сообщение #32


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(AHTOXA @ Nov 15 2010, 21:49) *
Правильнее было сформулировать "Тактирование ядра только от XT2 возможно в обоих семействах.", но из контекста беседы и так понятно.
Кому понятно? Мне лично непонятно. Как пишут, так я и понимаю. Именно домысливание за собеседника обычно приводит к недоразумениям.
Вывод в том топике был сделан на основе главы 5.2.7 Basic Clock Module+ Fail-Safe Operation. Поясните, почему вы несогласны и если ваши доводы будут убедительными, то я признаю, что был неправ. За мной признание моих ошибок не заржевеет.
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
fiatlux37
сообщение Nov 15 2010, 17:35
Сообщение #33





Группа: Участник
Сообщений: 11
Регистрация: 17-04-10
Из: Томск
Пользователь №: 56 711



Раз уж к теме подключилось столько народу, то готов и признать свою ошибку, ежели она имеется, конечно.
Кто-нибудь из участников форума юзал внешний ВЧ кварц???
Утверждение, что припаянные к ногам XT2 кварц включается как SMCLK битами
BCSCTL2 = XT2OFF + DIVS_0 + SELS; // Enable XT2CLK
будет работать ???
Для первого семейства!
Go to the top of the page
 
+Quote Post
rezident
сообщение Nov 15 2010, 17:42
Сообщение #34


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(fiatlux37 @ Nov 15 2010, 22:35) *
будет работать ???
При определенных условиях - будет. Если к моменту выполнения этой команды а) генерация на XT2 будет уже устойчивой, б) флаг OFIFG будет уже программно очищен, в) уже будет проинициализирован какой-либо модуль, который требует тактирования именно от XT2.
Прикрепленные файлы
Прикрепленный файл  From_MSP430x1xx_Family_User_s_Manual___Compel.pdf ( 415.78 килобайт ) Кол-во скачиваний: 76
 
Go to the top of the page
 
+Quote Post
fiatlux37
сообщение Nov 15 2010, 17:50
Сообщение #35





Группа: Участник
Сообщений: 11
Регистрация: 17-04-10
Из: Томск
Пользователь №: 56 711



Цитата(rezident @ Nov 15 2010, 21:42) *
Если к моменту выполнения этой команды а) генерация на XT2 будет уже устойчивой, б) флаг OFIFG будет уже программно очищен, в) уже будет проинициализирован какой-либо модуль, который требует тактирования именно от XT2.


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

Go to the top of the page
 
+Quote Post
rezident
сообщение Nov 15 2010, 18:05
Сообщение #36


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(fiatlux37 @ Nov 15 2010, 22:50) *
Но сама-то мысль, которую я хотел донести своим первым сообщением в теме об SMCLK и таймере, получается, является правильной? yeah.gif
Еще раз хочу повторить: как пишете, так и понимают написанное! В исходное вашем посте и приведенном в нем исходном коде выполняется только условие "в".
Go to the top of the page
 
+Quote Post
ih_
сообщение Nov 16 2010, 05:54
Сообщение #37


Частый гость
**

Группа: Свой
Сообщений: 77
Регистрация: 2-04-08
Из: Россия, Киров
Пользователь №: 36 422



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

Сообщение отредактировал ih_ - Nov 16 2010, 06:49
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Nov 16 2010, 06:45
Сообщение #38


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Если
Цитата(ih_ @ Nov 16 2010, 08:54) *
- инициализировать вывод (пин) как функциональный вывод от таймера (это не сложно);

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

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


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

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


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Nov 16 2010, 06:59
Сообщение #39


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Кажется, об этом речь?

Код
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
}


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
ih_
сообщение Nov 16 2010, 08:10
Сообщение #40


Частый гость
**

Группа: Свой
Сообщений: 77
Регистрация: 2-04-08
Из: Россия, Киров
Пользователь №: 36 422



Цитата
...но не означает автоматическую необходимость вызова и обработки этого прерывания
И rezident призывает - давайте выражаться яснее и четче. Что Вы имели ввиду под: "...автоматическую необходимость..."?

Сообщение отредактировал ih_ - Nov 16 2010, 08:10
Go to the top of the page
 
+Quote Post
msalov
сообщение Nov 16 2010, 08:16
Сообщение #41


Знающий
****

Группа: Свой
Сообщений: 526
Регистрация: 24-08-07
Из: Беларусь, Минск
Пользователь №: 30 045



Цитата(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
Go to the top of the page
 
+Quote Post

3 страниц V   1 2 3 >
Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 19:48
Рейтинг@Mail.ru


Страница сгенерированна за 0.06258 секунд с 7
ELECTRONIX ©2004-2016