Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Конфигурирование CCLKCFG (CCLKSEL)
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
toweroff
Столкнулся с таким непонятным для меня моментом
Использую system_LPC17xx.c. Задал множители (мне нужно 100МГц при 12МГц кварце. Получаю M=25, N=2, PLLclk=300 (в диапазоне), CCLKSEL=2)
Отсюда:

CCLK = ((2*12*25)/2)/3 = 100МГц

По даташиту CCLKSEL может принимать нечетные значения. Однако system_LPC17xx.c ругается:
Цитата
Startup\system_LPC17xx.c(352): error: #35: #error directive: "CCLKCFG: CCLKSEL field does not contain only odd values or 0!"

проверка там такая:
Код
#if ((CCLKCFG_Val != 0) && (((CCLKCFG_Val - 1) % 2)))
   #error "CCLKCFG: CCLKSEL field does not contain only odd values or 0!"
#endif

Версии:
UM10360 Rev. 2 — 19 August 2010
system_LPC17xx.c - V1.1 18th May 2009

Я понимаю, конечно, что верить нужно даташиту, но неспроста же эта проверка была введена?

UPD
Я могу изменить множители (M=50, N=3), попасть в диапазон PLL (<550MHz) и получить свой стольник, деля на 4. Интересна природа момента
esaulenka
Предлагаю пользоваться более свежей версией библиотек. Заголовок lpc17xx.h 1.1 (или что-то похожее) содержал вообще немеряное количество опечаток.

В более новых system_lpc17xx.c эту проверку убрали.


Да, ноги растут отсюда:
Цитата(LPC23xx user manual)
7:0 CCLKSEL Selects the divide value for creating the CPU clock (CCLK) from the PLL output.
Only 0 and odd values (1, 3, 5, ..., 255) are supported and can be used when programming the CCLKSEL bits.
toweroff
Да, так и есть

В версии 1.13 от 18. April 2012 уже совсем другая песня:

Код
#if (CHECK_RANGE((CCLKCFG_Val), 0, 255))
   #error "CCLKCFG: Value out of range!"
#endif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.