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

 
 
> XT2 в MSP430F5, не получается затактировать что-либо в системе
controller_m30
сообщение Apr 14 2015, 15:27
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 356
Регистрация: 24-02-09
Пользователь №: 45 309



Есть два контроллера: MSP430F5510 и F5340. В обеих поставил на XT2 кварц 26мГц, выставил источник для MCLK от XT2CLK с делителем на 2, и предполагая, что теперь CPU тактируется 13мГц, пишу программу под такую сумасшедшую скорость...
Каково-же было моё удивление, когда я попробовал подключить к сигналу XT2CLK ещё и периферию (UART, настроенный для источника тактовой 13мГц), и получил скорость в бодах в разы меньшую (расчётно, как будто от источника 1мГц). Появилось подозрение, что и CPU работает от 1мГц...

Проверил настройки SELM и SELS в регистре UCSCTL4 - нормально, источник "5", т.е. XT2CLK.
Проверил осциллографом на ножках кварца - есть синусоида 26 мГц, с размахом 0,5В.
Настройки самого XT2: XT2DRIVE=3, XT2BYPASS=0, XT2OFF=0
Настройка Vcore в регистре PMMCTL0=3, для максимального диапазона частот CPU.
Флаг XT2OFFG=0, т.е. XT2 работает без ошибок.
Менял кварцы: 16, 12, 8 мГц - тоже никакого эффекта. С конденсаторами 15pf, и без них - и тоже без изменений.

В даташите на 5ю серию пишут, что если XT2 не работает, то автоматически выбирается источник "4", т.е. DCOCLKDIV, по дефолту равный 1мГц.
Проверил эту возможность - и действительно: частота процессора и периферии меняется пропорционально установкам генератора FLL в модуле DCO, и получается, что на самом деле всё работает от DCO... А вот почему?

Прикол ещё в том, что в одном из контроллеров от этого кварца тактируется модуль USB (в другом USB нету), и работает он прекрасно! При установке других кварцев, USB модуль также хорошо работает (само-собой, после изменения настроек под новый кварц). Получается, что кварц и настройки XT2 правильные (раз от него USB работает), а ошибка в настройках подключения MCLK и SMCLK к сигналу XT2...

Что я упускаю из виду??? help.gif

Сообщение отредактировал controller_m30 - Apr 14 2015, 16:56
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
controller_m30
сообщение Apr 15 2015, 08:57
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 356
Регистрация: 24-02-09
Пользователь №: 45 309



Вывел сигнал MCLK на внешний пин контроллера, в соответствии с примером от ТI. Картина в общем та-же.
Делитель DIVM в конце-концов выставил в "0", чтоб точнее мерить частоту на внешнем пине.

Сигнал MCLK = 1,05 мГц (т.е. берётся от DCOCLKDIV), при этом в регистре UCSCTL4 выставлено SELM=5 (XT2), а XT2OFFG=0 (XT2 работает). Если выставить SELM=4 (честно указать что DCOCLKDIV) то тоже будет 1,05 мГц.
Если оставить SELM=5, но менять в DCO частоту, то и MCLK на внешнем пине меняет частоту.

К сожалению, среди функций PORTMAP нет вывода XT2CLK на внешний пин, чтоб убедиться что он работает прямым наблюдением...

Сообщение отредактировал controller_m30 - Apr 15 2015, 09:20
Go to the top of the page
 
+Quote Post
mcheb
сообщение Apr 15 2015, 09:26
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 326
Регистрация: 30-05-06
Пользователь №: 17 602



Цитата(controller_m30 @ Apr 15 2015, 12:57) *
bit #08h,UCSCTL7 ; контроль флага XT2OFFG

Так у Вас
У Техаса (и надо)
// Loop until XT1,XT2 & DCO stabilizes
do
{
UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + DCOFFG); // Clear XT2,DCO fault flags
SFRIFG1 &= ~OFIFG; // Clear fault flags
}while (SFRIFG1&OFIFG); // Test oscillator fault flag
Раз уж любите ассемблер
Код
// Loop until XT1,XT2 & DCO stabilizes - In this case loop until XT1 and DCo settle
    do
    {
        UCSCTL7 &= ~(XT2OFFG | XT1LFOFFG | DCOFFG);    // Clear XT2,XT1,DCO fault flags
    846e:    1f 42 6e 01     mov    &0x016e,r15    
    8472:    3f f0 f4 ff     and    #-12,    r15;#0xfff4
    8476:    82 4f 6e 01     mov    r15,    &0x016e    
        SFRIFG1 &= ~OFIFG;                      // Clear fault flags
    847a:    1f 42 02 01     mov    &0x0102,r15    
    847e:    3f f0 fd ff     and    #-3,    r15;#0xfffd
    8482:    82 4f 02 01     mov    r15,    &0x0102    
    }
    while (SFRIFG1&OFIFG);                    // Test oscillator fault flag
    8486:    1f 42 02 01     mov    &0x0102,r15    
    848a:    2f f3           and    #2,    r15;r3 As==10
    848c:    f0 23           jnz    $-30     ;abs 0x846e


Сообщение отредактировал mcheb - Apr 15 2015, 09:29
Go to the top of the page
 
+Quote Post



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

 


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


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