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

 
 
> 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
Ответов
mcheb
сообщение Apr 15 2015, 12:38
Сообщение #2


Местный
***

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



Код
UCSCTL6 &= ~XT2OFF;                       // Enable XT2
  UCSCTL3 |= SELREF_2;                      // FLLref = REFO
                                            // Since LFXT1 is not used,
                                            // sourcing FLL with LFXT1 can cause
                                            // XT1OFFG flag to set


Вроде ясно всё написано,почти по-русски. Если нет LFXT1(включён по умолчанию), то переключаем на FLLref = REFO
Go to the top of the page
 
+Quote Post
controller_m30
сообщение Apr 15 2015, 18:09
Сообщение #3


Местный
***

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



Цитата(mcheb @ Apr 15 2015, 15:38) *
Вроде ясно всё написано,почти по-русски. Если нет LFXT1(включён по умолчанию), то переключаем на FLLref = REFO

Заработало!!! 08.gif На обеих устройствах. Спасибо за идеи! beer.gif

Правда флаги XT1OFFG и OFIFG я сбросить так и не смог - переключение FLLref на REFO тоже не помогло. И частота MCLK осталась 1 мГц.

Но, задавшись целью сбросить их хоть как-то - удалось случайно запустить MCLK от XT2. Это получилось, когда в цикле опроса XT2OFFG была добавлена команда сброса глобального флага OFIFG. При таком условии, опрос флага XT2OFFG даёт искомый результат.
Почему так - хз. От сбросов сами флаги XT1OFFG и OFIFG стоят в "1" как вкопанные, но постоянная запись в них "0" позволяет каким-то волшебным образом закончить инициализацию XT2.

Теперь код инициализации XT2 выглядит так:
Код
        mov    #0c0cdH,UCSCTL6   ; XT2DRIVE=3, XT2BYPASS=0, XT2OFF=0 (XT1-не используется)
x31:    mov    #0,UCSCTL7        ; Сброс FAULT флагов
        and    #0fffdh,SFRIFG1   ; Обнуление глобального флага ошибки осцилляторов OFIFG
        bit    #08h,UCSCTL7      ; контроль флага XT2OFFG
        jnz    x31               ; повтор если XT2OFFG=1
Дальше переключаемся на XT2
        mov    #0011H,UCSCTL5    ; Делители MCLK и SMCLK = /2 чтоб из 26 мГц получить 13 мГц.
        mov    #0055h,UCSCTL4    ; MCLK и SMCLK=5 (источник XT2CLK)
.................................

Инициализация проходит успешно и при FLLref=2 (REFO), и при дефолтном =0 (XT1CLK).
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 11th August 2025 - 05:42
Рейтинг@Mail.ru


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