Jump to content
    

22 minutes ago, visht said:

. . . В чем я ошибаюсь ?

1. FLL работает на базе генератора DCO. Соответственно, кроме настройки FLL надо настроить DCO на эту частоту (выбрать диапазон).

2. Не внимательно читаете (или вообще не читаете) рекомендации выше, а именно MSP430F51x2_UCS_04.c в данном случае.

ps

https://dev.ti.com/tirex/explore/. . . MSP430

 

Share this post


Link to post
Share on other sites

может неверно понял, но вроде FLL сама должна DCO и MOD менять, если ей передано управление.

Share this post


Link to post
Share on other sites

1 minute ago, visht said:

может неверно понял, но вроде FLL сама должна DCO и MOD менять, если ей передано управление.

ОНО не знает, какую частоту Вы хотите получить "на выходе". Также как незнает и какой кварц, на какую частоту, подключен. Знает только коэффицент деления FLL. Так что RC-ГУН (онже DCO) надо "выставить" вручную на требуемый диапазон (тк у него нет сквозной электронной перестройки во всем рабочем диапазоне).

Так что на "сама" можете не расчитывать в данном случае. Может есть какой-то "построитель-вычислеитель" наподобие CubeMX для вычисления-прописи этих настроек. 

Share this post


Link to post
Share on other sites

Ок, понял. тогда так:

#define DCORSEL 6
    PMM_setVCore(PMM_CORE_LEVEL_3);     // Vcore setting of at max 3 for 24MHz MCLK
    UCSCTL1 = (DCORSEL << 4);
    UCSCTL3 = SELREF_2 | FLLREFDIV__1;  // FLLref = REFO
    UCSCTL2 = FLLD__32 | 0x17;
    UCSCTL4 = SELM__DCOCLK | SELS__DCOCLKDIV;

Поправьте меня, если я снова ... мимо.

Выбираем частоту. D = 32, N = 23 , n = 1, REF0SC = 32768Hz

Fdco = 32*(23+1)*(32768/1) = 25.165824 MHz

выбираю диапазон чтобы моя частота Fdco была между MAX MIN для соответствующего диапазона DCORSEL

Spoiler

DCO.thumb.jpg.e04f2f5343272387668af025e34a9417.jpg

для выбранной 25.165824 MHz это режим 6, от 10.7 до 39.0.

управление DCO и MOD отдано FLL и установка частоты в моем случае заняла примерно 144728 циклов и 8.5ms

в описании заявлено что не более чем n*32*32 циклов Fref = а это 31.25 ms а значит все верно.

Видимо для получения точного значения частоты нужно просто подождать 30 ms.

 

Проблема с DCOFFG остается, флаг не сбрасывается, хотя значения DCO в  UCSCTL0 никак не 31 и не 0.

    do {
        UCSCTL7 &= ~DCOFFG;   
    } while (UCSCTL7 & DCOFFG);   // forever

Видимо с системой флагов, у данного экземпляра что то пошло не так. Хотя как может не работать часть логики ... загадка.

Пока нечем проверить точность частоты, LA семплит на 200 MHz, значит ошибка 8% (+/- 2 MHz), остается верить TI.

 

А можно подробнее по поводу вышеупомянутого  MSP430F51x2_UCS_04.c

В закачанном msp430_driverlib_2_91_13_01 такого нет, есть другие, но если есть еще какие то примеры прошу ссылочку.

 

k155la3, Спасибо за помощь.

 

 

Share this post


Link to post
Share on other sites

MSP430F51x2_UCS_04.c это файл из блока примеров 

On 4/19/2022 at 4:23 PM, k155la3 said:

. . .

Вот блок примеров на семейство F51xx, это оттуда.  

. . . .

slac452d.zip 248.62 kB · 2 downloads

Использовать LA как частотомер не очень феншуй. Очень большая вероятность наступить на грабли. Уж лучше аналоговый осциллограф. 

А что, время старта для DCO/FLL так критично ? Если тактовая нужна постоянно, то экономии батареи уж точно не получится.

Если отлаживать работу FLL/DCO с осциллографом, обратите внимание, что скорее всего будет дрожание фазы тактового сигнала или нечто похожее на ШИМ. Это нормальное явление.

>> Спасибо за помощь.

Удачи !

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...