msp430f5435A модуль тактирования настройка

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
dzrkot
Открыл глаза
Сообщения: 75
Зарегистрирован: Чт авг 29, 2013 08:02:24

msp430f5435A модуль тактирования настройка

Сообщение dzrkot »

Добрый день, столкнулся с серьёзной проблемой, в данном микроконтроллере.
Вообщем надо настроить UCS (модуль тактирования микрухи), а если точнее то непонятно с внутренним цифровым генератором DCO.
После прочтения Guida с сайта TI, понял следующее :
Сам модуль настраивается регистрами UCSCTL0....UCSCTL8.
В регистрах UCSCTL0 и UCSCTL1 , есть биты,отвечающие за настройку DCO :
DCORSEL - отвечает за выбор диапазона частоты
DCO(биты)- отвечают как написано за разделение диапазона на 32 части
MOD - отвечает за переход от частоты выбранной с помощью бит DCO к следующему DCO+1

на стр 52 самого Dataseet на этот микроконтроллер есть таблица, в которой описывается влияние этих бит на выбор частоты работы DCO, но я не понимаю как вообщем мне настроить её...
Если кому-то бдет не лень открыть этот Guide и Datasheet и помочь мне разобраться, или если кто-то уже сталкивался с семействами 5,6 msp430и знает как это делается, то очень прошу вашей помощи. По больешй части у меня трудности с переводом, т.к. получается очень противоречиво...
Реклама
Аватара пользователя
Ser60
Друг Кота
Сообщения: 3784
Зарегистрирован: Ср дек 24, 2008 09:58:58

Re: msp430f5435A модуль тактирования настройка

Сообщение Ser60 »

Все правильно Вы поняли. Если FLL не используется, то настроить генератор на определенную частоту можно с помощью DCORSEL и DCOx при MOD=0 (модулятор отключен). Например, для настройки на 1 мгц по Fig 11 в ДШ на F5435A определяем что DCORSEL может быть 0, 1, или 2. Положим DCORSEL=1, тогда по тому-же графику определяем DCOx=20 (примерно). Точнее частоту можно подогнать измерив ее на выходном пине и варьируя DCOx (грубо) и MOD (плавно).
Реклама
dzrkot
Открыл глаза
Сообщения: 75
Зарегистрирован: Чт авг 29, 2013 08:02:24

Re: msp430f5435A модуль тактирования настройка

Сообщение dzrkot »

Ser60 писал(а):Все правильно Вы поняли. Если FLL не используется, то настроить генератор на определенную частоту можно с помощью DCORSEL и DCOx при MOD=0 (модулятор отключен). Например, для настройки на 1 мгц по Fig 11 в ДШ на F5435A определяем что DCORSEL может быть 0, 1, или 2. Положим DCORSEL=1, тогда по тому-же графику определяем DCOx=20 (примерно). Точнее частоту можно подогнать измерив ее на выходном пине и варьируя DCOx (грубо) и MOD (плавно).
Спасибо, как раз сейчас в Guide прочитал про то, что FLL (плохо понял что это) от кварца 32kHz корректирует частоту DCOCLK на 2.097152 MHz, меня это устраивает)
Вот только не понял, если я отключу модулятор, будет ли данная калибровка проходить, ну это уже опытным путём буду узнавать)
Аватара пользователя
Ser60
Друг Кота
Сообщения: 3784
Зарегистрирован: Ср дек 24, 2008 09:58:58

Re: msp430f5435A модуль тактирования настройка

Сообщение Ser60 »

Только учтите, что хотя FLL дефолтно и настроен на работу с кварцем, соответствующие пины корпуса сконфигурированы дефолтно как I/O и для работы с кварцем должны быть переконфигурированы. В таком случае FLL понимает, что кварцевый генератор не запускается и заменяет его на RFO, который калиброван изготовителем на работу на около-кварцевой частоте. При работе с FLL модулятор управляется непосредственно от FLL, который дефолтно активизирован по подаче питания.
Реклама
Эиком - электронные компоненты и радиодетали
dzrkot
Открыл глаза
Сообщения: 75
Зарегистрирован: Чт авг 29, 2013 08:02:24

Re: msp430f5435A модуль тактирования настройка

Сообщение dzrkot »

Спасибо, это я учёл, у меня на тех пинах уже висит часовой кварц, так что переконфигурировать их мне необязательно.

У меня возникла проблема с прерыванием по переполнению таймера
я делаю следующее:

Код: Выделить всё

 __enable_interrupt();  // разрешаю маскируемые прерывания
    
UCSCTL4|=SELM_3|SELS_3;                                      // настраиваю модуль синх частот
                                                                                //SELM_3 - MCLK работает от DCOCLK , fDCOCLK = 2.097152 MHz. 
                                                                                //SELS_3 - SMCLK работает от DCOCLK; 
    
TA0CCR0|=0x51EC;                                                  // TA0CCR0 - регистр сравнения 51EC = 20972 = 10мс для 2.097МГц
    
TA0CTL|=TASSEL1|MC0|TAIE;                                   // TA0CTL|=TASSEL1|MC0|TAIE;        TA0CTL - регистр настройки таймера А
                                                                                // TASSEL1 - тактирование от SMCLK
                                                                                // MC0 - счет от 0000h до TAxCCR0
                                                                                // TAIE - включаем прерывание
вот собственно что-то ещё по идее должно быть...
+ как выглядит само описание прерывания...в примерах написано что-то типа

Код: Выделить всё

/*  Обработчики прерываний  */
#pragma vector = TIMERA0_VECTOR  
__interrupt void CCR0_ISR(void) {
        if (++i == 120) {
                P1OUT ^= RLY1;
                i=0;
        }
} // CCR0_ISR
Но это для другого семейства, а как он выглядит для этого контера я не понимаю...вообще где откуда это взять, облазил уже и даташит, и Guide, и хедеры в которых по идее они должны быть....
Просто хочу понять откуда это всё берётся.....
Реклама
dzrkot
Открыл глаза
Сообщения: 75
Зарегистрирован: Чт авг 29, 2013 08:02:24

Re: msp430f5435A модуль тактирования настройка

Сообщение dzrkot »

хм...кажется нашел...хотя не понимаю как так получается, что имя TIMER_A0 вообще произвольное...и препроцессор #pragma vector вызывает недоумение..)

Код: Выделить всё

#pragma vector = TIMER1_A0_VECTOR
__interrupt void TIMER_A0(void)                                                 // прерывание по флагу TA0CCR0 CCIFG0
        {

        }
я прав, в IAR обработчик прерываний выглядит так?)
Реклама
Аватара пользователя
Ser60
Друг Кота
Сообщения: 3784
Зарегистрирован: Ср дек 24, 2008 09:58:58

Re: msp430f5435A модуль тактирования настройка

Сообщение Ser60 »

Организация прерывания таймета в main() выполнена верно. Касательно имен обработчила прерываний, в ДШ на девайс на стр. 16 имеется таблица векторов прерываний. Зчая какой именно вектор нужен, для нахождения его имени в IAR открываем header МК в фолдере inc установки системы. В самом конце файла смотрил под каким именем обработчик известен IAR. В Вашем случае это будет TIMER0_A0_VECTOR или TIMER0_A1_VECTOR в зависимости от желаемого адреса прерывания (см. ДШ).
dzrkot
Открыл глаза
Сообщения: 75
Зарегистрирован: Чт авг 29, 2013 08:02:24

Re: msp430f5435A модуль тактирования настройка

Сообщение dzrkot »

Ser60 писал(а):Организация прерывания таймета в main() выполнена верно. Касательно имен обработчила прерываний, в ДШ на девайс на стр. 16 имеется таблица векторов прерываний. Зчая какой именно вектор нужен, для нахождения его имени в IAR открываем header МК в фолдере inc установки системы. В самом конце файла смотрил под каким именем обработчик известен IAR. В Вашем случае это будет TIMER0_A0_VECTOR или TIMER0_A1_VECTOR в зависимости от желаемого адреса прерывания (см. ДШ).
да я именно так и сделал) спасибо за ответы)
Аватара пользователя
BCluster
Собутыльник Кота
Сообщения: 2512
Зарегистрирован: Пн апр 06, 2009 19:33:29
Откуда: Молдова, Кишинев
Контактная информация:

Re: msp430f5435A модуль тактирования настройка

Сообщение BCluster »

Чтоб много об этом не думать в будущем, можно использовать хорошую библиотечку www.ti.com/tool/msp430ware, там и таймеры и много чего интересного есть.

Также есть hal_UCS модуль, который тоже предоставляет абстракции для инициализации клока для msp430
dzrkot
Открыл глаза
Сообщения: 75
Зарегистрирован: Чт авг 29, 2013 08:02:24

Re: msp430f5435A модуль тактирования настройка

Сообщение dzrkot »

BCluster писал(а):Чтоб много об этом не думать в будущем, можно использовать хорошую библиотечку http://www.ti.com/tool/msp430ware, там и таймеры и много чего интересного есть.

Также есть hal_UCS модуль, который тоже предоставляет абстракции для инициализации клока для msp430
сначала лучше понять всё это, у меня достаточно пробелов в знаниях и их надо восполнять, готовыми библиотеками конечно пользоваться проще, но вообщем пока что не мой вариант) но спасибо)
Аватара пользователя
BCluster
Собутыльник Кота
Сообщения: 2512
Зарегистрирован: Пн апр 06, 2009 19:33:29
Откуда: Молдова, Кишинев
Контактная информация:

Re: msp430f5435A модуль тактирования настройка

Сообщение BCluster »

Я для будущего и дал :) На мой взгляд у мсп430 вообще система тактирования не сильно для людей сделана )
dzrkot
Открыл глаза
Сообщения: 75
Зарегистрирован: Чт авг 29, 2013 08:02:24

Re: msp430f5435A модуль тактирования настройка

Сообщение dzrkot »

взялся за освоение MSP430WARE
слепил следующий код в IARe (CCS только буду осваивать, кстате что вы про него можете сказать?)
И всё бы ничего, да только вместо необходимых 10мс генерируется что-то другое...Диоды моргают, но частота не та...пришёл к выводу что сигналы SMCLK и MCLK не настраиваются на частоту 2МГц ...
вроде должны сами, вообщем опять непонятки...
Кстати пробовал XIN и XOUT (на нем внешний 32кГц) вкли откл в том проекте, который четко выдавал мне 10мс, разницы не было, т.е. там есть внутренний кварц (мб я и читал об этом но видимо забыл)

Код: Выделить всё

#include "driverlib.h"

//******************************************************************************
//!
//!   Empty Project that includes driverlib
//!
//******************************************************************************
int i=0;

#pragma vector=TIMER0_A0_VECTOR
__interrupt void TIMERA0 (void)
{
i++;
//GPIO_setOutputLowOnPin(GPIO_PORT_P1,GPIO_PIN5);
//GPIO_setOutputLowOnPin(GPIO_PORT_P1,GPIO_PIN7);
    if (i==100)
    {
    GPIO_setOutputLowOnPin(GPIO_PORT_P1,GPIO_PIN5);
    GPIO_setOutputLowOnPin(GPIO_PORT_P1,GPIO_PIN7);
    }
    if (i==200)
    {
    GPIO_setOutputHighOnPin(GPIO_PORT_P1,GPIO_PIN5);
    GPIO_setOutputHighOnPin(GPIO_PORT_P1,GPIO_PIN7);
    i=0;
    }
    
}
  
void main(void)
{
  WDT_A_hold(WDT_A_BASE); //WDT_A_BASE          0x015C
  // base adress UCS: 0x160
  // UCS_SMCLKOn(0x160);
  UCS_clockSignalInit(0x160,UCS_MCLK,UCS_DCOCLK_SELECT,UCS_CLOCK_DIVIDER_1);
  UCS_clockSignalInit(0x160,UCS_SMCLK,UCS_DCOCLK_SELECT,UCS_CLOCK_DIVIDER_1);
          
 // base adress TimerA0: 0x0340
          TIMER_A_configureContinuousMode(0x0340,
                                         TIMER_A_CLOCKSOURCE_SMCLK,
                                         TIMER_A_CLOCKSOURCE_DIVIDER_1,
                                         TIMER_A_TAIE_INTERRUPT_DISABLE,
                                         TIMER_A_DO_CLEAR
                                         );
          TIMER_A_clearCaptureCompareInterruptFlag(0x0340,
                                         TIMER_A_CAPTURECOMPARE_REGISTER_0
                                         );
          TIMER_A_initCompare(0x0340,
                            TIMER_A_CAPTURECOMPARE_REGISTER_0,
                            TIMER_A_CAPTURECOMPARE_INTERRUPT_ENABLE,
                            TIMER_A_OUTPUTMODE_OUTBITVALUE,
                            0x51EC
                            );
   TIMER_A_startCounter(0x0340,TIMER_A_CONTINUOUS_MODE);
 
  GPIO_setAsOutputPin(GPIO_PORT_P1,GPIO_PIN5);
  GPIO_setAsOutputPin(GPIO_PORT_P1,GPIO_PIN7);
   
  GPIO_setOutputHighOnPin(GPIO_PORT_P1,GPIO_PIN5);
  GPIO_setOutputHighOnPin(GPIO_PORT_P1,GPIO_PIN7);
  
 //  __bis_SR_register(LPM0_bits + GIE);
 //  __no_operation();
  __enable_interrupt();   
  while(1)
  {
 
  }
}
dzrkot
Открыл глаза
Сообщения: 75
Зарегистрирован: Чт авг 29, 2013 08:02:24

Re: msp430f5435A модуль тактирования настройка

Сообщение dzrkot »

поменял TIMER_A_startCounter(0x0340,TIMER_A_UP_MODE); и всё заработало

..как всегда сидишь часа 2 ломаешь голову, потом за 5 минут приходит озарение)
Аватара пользователя
BCluster
Собутыльник Кота
Сообщения: 2512
Зарегистрирован: Пн апр 06, 2009 19:33:29
Откуда: Молдова, Кишинев
Контактная информация:

Re: msp430f5435A модуль тактирования настройка

Сообщение BCluster »

Про CCS ничего плохого не скажу. Но основная масса проф. кода написана именно на IAR. Почему - не знаю. Код на IAR в общем случае компактнее и быстрее.
dzrkot
Открыл глаза
Сообщения: 75
Зарегистрирован: Чт авг 29, 2013 08:02:24

Re: msp430f5435A модуль тактирования настройка

Сообщение dzrkot »

на работе от гуру я услышал про то, что можно писать под несколько ядер на CCS дл продукции TI, но я в этом ещё 0 и вообще как-то видимо не так понял его слова или запомнил неправильно...
Ответить

Вернуться в «Разные вопросы по МК»