Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Проблема конфигурирования PLL в rvmdk(keil) SAM64
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
SpiritDance
Обнаружилась проблема.
Как известно конфинурирование PMC и тактовой частоты в keil происходит в файле SAM7.s

Исходный кварц 16.0 Мгц
Задаю
PLL divider 10
PLL multiplier 60
PLL clock frequency range 80..160Мгц
Clock source selection PLL clock
Prescaler 2
И ожидаю получить ровно 48000000 Гц, а получаю 48800000. blink.gif (Смотрю через окно peripherals->PMC) Убейте не понимаю как при этом работает USART пусть даже на 9600.

Раньше думал что это глюк эмулятора, теперь убедился что это не так.
Как это отловилось. Надо было выдать 16 Мгц с помощью PWM.
MCK в качестве тактовой, период 3, период скважности 2 - получаем 16Мгц
Пишем вот такой код
Код
void set_PWM0(void)
{
    /* ïîäêëþ÷àåì ê PWM ñèñòåìíóþ ÷àñòîòó è âêëþ÷àåì âûâîä */
    AT91F_PMC_EnablePeriphClock(AT91C_BASE_PMC, 1 << AT91C_ID_PWMC);
    AT91F_PIO_CfgPeriph(AT91C_BASE_PIOA, 0, AT91C_PA23_PWM0);

    /* âûáèðàåì èñòî÷íèê òàêòèðîâàíèÿ è leftAligment+íóëåâàÿ ïîëÿðíîñòü */
    AT91C_BASE_PWMC_CH0->PWMC_CMR = AT91C_PWMC_CPRE_MCK;
    AT91C_BASE_PWMC_CH1->PWMC_CMR = AT91C_PWMC_CPRE_MCK;
    AT91C_BASE_PWMC_CH2->PWMC_CMR = AT91C_PWMC_CPRE_MCK;
    AT91C_BASE_PWMC_CH3->PWMC_CMR = AT91C_PWMC_CPRE_MCK;

    /* êîíôèãóðèðóåì ïåðèîä øèìà è ñâàæíîñòü */
    AT91C_BASE_PWMC_CH0->PWMC_CPRDR = 3;
    AT91C_BASE_PWMC_CH0->PWMC_CDTYR = 2;
    AT91C_BASE_PWMC_CH1->PWMC_CPRDR = 3;
    AT91C_BASE_PWMC_CH1->PWMC_CDTYR = 2;
    AT91C_BASE_PWMC_CH2->PWMC_CPRDR = 3;
    AT91C_BASE_PWMC_CH2->PWMC_CDTYR = 2;
    AT91C_BASE_PWMC_CH3->PWMC_CPRDR = 3;
    AT91C_BASE_PWMC_CH3->PWMC_CDTYR = 2;
    
    /* âêëþ÷àåì pwm0 */
    AT91C_BASE_PWMC->PWMC_IER = AT91C_PWMC_CHID0;
    AT91C_BASE_PWMC->PWMC_ENA = AT91C_PWMC_CHID0;
}

Запускаем прошивку сгенерированную IARом с проверенным иницилизационным кодом с такимиже коэффициентами. Лезем цифровым осциллографом. Получаем частоту 15.99999. Вполне годится.

Далее запускаем прошивку сгенерированную в keil. Получаем частоту 16.2665 что дает нам частоту MCK равную 48.7995. чтд.

Вопрос: какого чОрта?
Если кто работает с САМ под кейл отзовитесь. Если не испытывали проблем киньте пожалуста файл SAM7.s на почту или сюда.
aaarrr
Цитата(SpiritDance @ Jul 18 2006, 12:17) *
Исходный кварц 16.0 Мгц
Задаю
PLL divider 10
PLL multiplier 60
PLL clock frequency range 80..160Мгц
Clock source selection PLL clock
Prescaler 2
И ожидаю получить ровно 48000000 Гц, а получаю 48800000.


По-моему, все правильно получаете: 8 * 61 / 10 = 48.8
SpiritDance
aaarrr
Спасибо посмотрел в даташит и в код стартапа. Убедился что сам дурак.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.