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

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> Как получить точно интервал 1ms?
sunset
сообщение Nov 8 2010, 09:43
Сообщение #1


Знающий
****

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



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

железо MSP430F149.

не так давно занимаюсь электроникой. думаю надо цеплять внешний кварц, потому как внутренний будет плавать больше от температуры и других факторов.
какой кварц лучше подцепить?
Go to the top of the page
 
+Quote Post
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

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

 


RSS Текстовая версия Сейчас: 8th July 2025 - 14:08
Рейтинг@Mail.ru


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