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

Как получить точно интервал 1ms?

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

 

железо MSP430F149.

 

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

какой кварц лучше подцепить?

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


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

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

...

какой кварц лучше подцепить?

Тот, который обеспечит "высокую" точность.

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


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

"Высоту" точности обозначьте и какие-либо еще дополнительные критерии для выбора. В противном случае можно и внешний кварцевый генератор (рубидиевый :biggrin: ) присоветовать.

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


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

прикинул достаточно будет 8Мгц для моих целей. какие поставить конденсаторы?

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


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

Если CL для кварца имеет типовое значение 16пФ, то конденсаторы по 15пФ ставьте. Можно 13пФ, если заземленный полигончик вокруг кварца (выводов кварцедержателя и кондеров) нарисуете и этим емкость монтажа чуть увеличите.

Только, если вы все же планируете побороться за энергосбережение, то я бы на вашем месте брал кварц с минимально возможной частотой. Типа 500кГц, 600кГц или 1МГц. А если допустим джиттер величиной около 0,7%, то можно вообще часовым кварцем обойтись.

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


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

прикинул достаточно будет 8Мгц для моих целей. какие поставить конденсаторы?

Все они сильно разные.

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

Изменено пользователем O.L.

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


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

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

 

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

 

-поставил кварц на 4Мгц, конденсаторы на 22pF

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

-MCLK тактируется от DCO

Изменено пользователем sunset

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


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

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

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


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

Будет менять состояние каждые 200нс.
Не будет. По трем причинам. Причины я могу пояснить, если вы в свою очередь поясните, как у куда вы кварц 5МГц подключили?

 

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


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

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

 

Подключаю внешний кварц (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 МГц.

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


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

Учитывая, что 1 такт кварца равен 200нс, несложно высчитать любое необходимое время импульса.
Это утверждение является для меня банальностью и поэтому поskipано вкупе с предыдущими банальными (опять же для меня лично) пояснениями. А интересовала меня следующая информация

++ внешний кварц подключал вместо встроенного в отладочную плату. Не забудьте, что максимальная частота кварца для 149-ого равна 8 МГц.
которая опять оказалась бесполезной. Т.к. я не вижу и не знаю, что у вас там за отладочная плата и куда именно там был "встроен" кварц? Посему повторяю вопрос: как и куда (к каким выводам МК) у вас подключен кварц 5МГц?

 

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


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

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

User's Guide

Изменено пользователем fiatlux37

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


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

Туда и подключается кварц. Потому что больше просто некуда.
Дык куда "туда"??? :maniac: К какой именно паре из двух перечисленных?

Далее в коде программы выбирается именно этот кварц (читай начало юзер гайда - какие именно биты необходимо включить (конкретно Basic Clock Module Introduction и картинка 4-1).
А вот это уже форменное нахальство! :biggrin: Право выборочного цитирования MSP430x1xx Family User's Guide я застолбил за собой уже лет 7 или 8 как :biggrin:

 

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


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

Мы с вами явно недопонимаем друг друга.

Цитата из гайда: 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

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


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

Ок. Я все понял. Вам не нужна помощь, т.к. вы не хотите отвечать на конкретные вопросы, но желаете продемонстрировать способности к цитированию. Правда без особого осмысления прочитанного :( Не люблю кормить троллей. Извините.

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


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

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...