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

 
 
> Keil 4. Ньюансы отладки с помощью MT-LINK, LPC23XX/LPC24XX
yurmala
сообщение Mar 4 2011, 06:32
Сообщение #1


Участник
*

Группа: Свой
Сообщений: 65
Регистрация: 9-02-11
Из: Трехгорный
Пользователь №: 62 814



Приветствую!
Беру любой мелкий рабочий проект из примеров Keil для LPC23XX/LPC24XX где в коде идет конфигурация PLL.
Проекты рабочие - проверял заливая их на отладочные платы Olimex 2378/Olimex 2478. светодиоды мигают, все работает...
Есть JTAG адаптер MT-LINK.
Он настроен в Keil как J-link. В опциях установлен режим сброса "Hardware, halt after reset (normal)".

Если запускаю пошаговую отладку, то проект зависает в функции инициализации PLL.
Вот функция:
Код
void InitPLL(void)
{
    unsigned int MValue;
    unsigned int NValue;

    #define PLL_MVALUE          11                   // (12-1)
    #define PLL_NVALUE           0                   // (1-1)
    #define CCLK_DIV_VALUE       4

    
    if(rPLLSTAT & (1 << 25))                      // Если PLL подключен, отключаем его
     {
         rPLLCON  = 1;                            // PLLE(bit 0)= 1, PLLC(bit1) = 0  // Enable PLL, disconnected
         rPLLFEED = 0xaa; rPLLFEED = 0x55;        // Применение настроек регистров
     }
    rPLLCON    = 0;                               // Отключаем и запрещаем PLL
    rPLLFEED   = 0xaa; rPLLFEED = 0x55;              // Применение настроек регистров
    rSCS |= (1 << 5);                             // Активация main OSC
    while( !(rSCS & 0x40) );                      // Wait until main OSC is usable
    rCLKSRCSEL = 0x01;                            // Выбор главного кварца - 12Мгц в качестве источника для PLL

    rPLLCFG    = PLL_MVALUE | (PLL_NVALUE << 16); // Конфигурация кварца
    rPLLFEED   = 0xAA; rPLLFEED = 0x55;           // Применение изменений
    
    rPLLCON    = 1;                               // Отключаем но разрешаем PLL
    rPLLFEED   = 0xaa; rPLLFEED = 0x55;              // Применение настроек регистров

    rCCLKCFG   = CCLK_DIV_VALUE;                  // Set clock divider
    
    while ( ((rPLLSTAT & (1 << 26)) == 0) );       // Check lock bit status

    MValue     = rPLLSTAT & 0x00007FFF;
    NValue     = (rPLLSTAT & 0x00FF0000) >> 16;
    while((MValue != PLL_MVALUE) && ( NValue != PLL_NVALUE));
    rPLLCON    = 3;                               // Enable PLL and connect
    rPLLFEED   = 0xAA; rPLLFEED = 0x55;           // Применение изменений
    while(((rPLLSTAT & (1<<25)) == 0)) {;}        // Check connect bit status

    return;
}


При пошаговом хождении по функции вижу (в окне с данными PLL) что команды PLLFEED не имеют эффекта (в регистре PLLSTAT остается 0 и выходные частоты не меняются)

И в конечном итоге отладка зависает на цикле
Код
    while ( ((rPLLSTAT & (1 << 26)) == 0) );       // Check lock bit status


Может как-то нужно хитро настроить JTAG?

добавлю, что в остальном работа с MT-LINK идет без проблем - отлаживал таймеры, GPIO. Заливал HEX-файлы на демо-платы...
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


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

 


RSS Текстовая версия Сейчас: 3rd August 2025 - 08:27
Рейтинг@Mail.ru


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