реклама на сайте
подробности

 
 
> LPC2366, при записи в CCLKCFG все ломается.
meister
сообщение Apr 15 2008, 10:49
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 219
Регистрация: 20-11-07
Пользователь №: 32 484



Никак не пойму, что я делаю не так: при записи 199 (и при записи 1 тоже) в CCLKCFG все ломается. Кварц у меня 3.686МГц.

На МК написано следующее:
Код
LPC2366FBD100
SH3959.1          01
ZSD0743BY


Код
    void init_system_controls_and_status_register(void)
    {
        PCONP = 0;

        // 6.14 PLL setup sequence
        PLLCON_bit.PLLC = 0;
        PLLFEED = hw::PLLFEED_DATA1;
        PLLFEED = hw::PLLFEED_DATA2;
        
        PLLCON_bit.PLLE = 0;
        PLLFEED = hw::PLLFEED_DATA1;
        PLLFEED = hw::PLLFEED_DATA2;

        SCS = BIT_(hw::SCS_GPIOM) | BIT_(hw::SCS_OSCEN);
        while (!SCS_bit.OSCSTAT) {}
        
        CLKSRCSEL = hw::CS_MAIN_OSCILLATOR;
        
        PLLCFG_bit.MSEL = PLL_REGISTER_M - 1;
        PLLCFG_bit.NSEL = PLL_REGISTER_N - 1;
        PLLCON_bit.PLLE = 1;
        PLLFEED = hw::PLLFEED_DATA1;
        PLLFEED = hw::PLLFEED_DATA2;
        
        while (!PLLSTAT_bit.PLOCK) {}
        
        CCLKCFG = 0;        
        CCLKCFG = 199; // до этой строчки стабильно доходит, а через нее - нет

        PLLCON_bit.PLLC = 1;
        PLLFEED = hw::PLLFEED_DATA1;
        PLLFEED = hw::PLLFEED_DATA2;
    }
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
amw
сообщение Apr 15 2008, 10:57
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847



Цитата(meister @ Apr 15 2008, 13:49) *
Никак не пойму, что я делаю не так: при записи 199 (и при записи 1 тоже) в CCLKCFG все ломается. Кварц у меня 3.686МГц.

На МК написано следующее:
Код
LPC2366FBD100
SH3959.1          01
ZSD0743BY


Код
    void init_system_controls_and_status_register(void)
    {
..............
        PLLCFG_bit.MSEL = PLL_REGISTER_M - 1;
        PLLCFG_bit.NSEL = PLL_REGISTER_N - 1;
        PLLCON_bit.PLLE = 1;
        PLLFEED = hw::PLLFEED_DATA1;
        PLLFEED = hw::PLLFEED_DATA2;
..............
    }

Почемуто в в мануале написано (а кто его читает?) что это нужно делать одной командой а не тремя.


--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть.
© Lewis Carroll. Alice's adventures in wonderland.
Go to the top of the page
 
+Quote Post
meister
сообщение Apr 15 2008, 10:59
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 219
Регистрация: 20-11-07
Пользователь №: 32 484



Цитата(amw @ Apr 15 2008, 14:57) *
Почемуто в в мануале написано (а кто его читает?) что это нужно делать одной командой а не тремя.


Я читаю мануал.

It's very important not to merge any steps above. For example, don't update the PLLCFG and enable the PLL simultaneously with the same feed sequence.
Go to the top of the page
 
+Quote Post
HARMHARM
сообщение Apr 15 2008, 11:17
Сообщение #4


читатель даташитов
****

Группа: Свой
Сообщений: 853
Регистрация: 5-11-06
Из: Днепропетровск
Пользователь №: 21 999



Цитата(meister @ Apr 15 2008, 13:59) *
Я читаю мануал.


Читайте еще smile.gif
Вот так - работает:
Цитата
PLLCFG = PLL_MValue | (PLL_NValue << 16);
PLLFEED = 0xaa;
PLLFEED = 0x55;

PLLCON = 1; /* Enable PLL, disconnected */
PLLFEED = 0xaa;
PLLFEED = 0x55;
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th June 2025 - 02:40
Рейтинг@Mail.ru


Страница сгенерированна за 0.01746 секунд с 7
ELECTRONIX ©2004-2016