k155la3 27 21 апреля, 2022 Опубликовано 21 апреля, 2022 · Жалоба 22 minutes ago, visht said: . . . В чем я ошибаюсь ? 1. FLL работает на базе генератора DCO. Соответственно, кроме настройки FLL надо настроить DCO на эту частоту (выбрать диапазон). 2. Не внимательно читаете (или вообще не читаете) рекомендации выше, а именно MSP430F51x2_UCS_04.c в данном случае. ps https://dev.ti.com/tirex/explore/. . . MSP430 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
visht 0 21 апреля, 2022 Опубликовано 21 апреля, 2022 · Жалоба может неверно понял, но вроде FLL сама должна DCO и MOD менять, если ей передано управление. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
k155la3 27 21 апреля, 2022 Опубликовано 21 апреля, 2022 · Жалоба 1 minute ago, visht said: может неверно понял, но вроде FLL сама должна DCO и MOD менять, если ей передано управление. ОНО не знает, какую частоту Вы хотите получить "на выходе". Также как незнает и какой кварц, на какую частоту, подключен. Знает только коэффицент деления FLL. Так что RC-ГУН (онже DCO) надо "выставить" вручную на требуемый диапазон (тк у него нет сквозной электронной перестройки во всем рабочем диапазоне). Так что на "сама" можете не расчитывать в данном случае. Может есть какой-то "построитель-вычислеитель" наподобие CubeMX для вычисления-прописи этих настроек. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
visht 0 21 апреля, 2022 Опубликовано 21 апреля, 2022 · Жалоба Ок, понял. тогда так: #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 для выбранной 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, Спасибо за помощь. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
k155la3 27 21 апреля, 2022 Опубликовано 21 апреля, 2022 · Жалоба 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 с осциллографом, обратите внимание, что скорее всего будет дрожание фазы тактового сигнала или нечто похожее на ШИМ. Это нормальное явление. >> Спасибо за помощь. Удачи ! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться