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

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
> 16Mhz на XT1 для 2618
Сергей Борщ
сообщение Mar 26 2008, 07:19
Сообщение #16


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(CAHTA_1939 @ Mar 26 2008, 01:34) *
как вы думаете. DCO оставить или с лучше кварц?
Для UART конечно кварц. Только тактировать от кварца нужно не MCLK, а, как заметил rezident, SMCLK


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
CAHTA_1939
сообщение Mar 27 2008, 21:07
Сообщение #17


Частый гость
**

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



сегодня на работе просидел пол дня за осциллографом и вот что хочу узнать.

1. мог ли я спалить XT1 замкнув Xin и Xout ?

2. я настроил DCO на 16Мгц и настроил SEL'ом пины на вывод MCLK и SMCLK...
выводятся импульсы частотой 16мгц. это норм
но когда я в цикле начинаю дергать ножкой, то она дергается с частотой ~2.7Мгц
хотя при инициализации DCO я прописал, что MCLK и SMCLK должны тактироваться от него.

3. подключив к XT1 часовой кварц, я щупом посмотрел сигнал. на Xin почти ничего нет, а на Xout напряжение около 0.4вольта.
менял кварцы, конденсаторы. Одна фигня везде =(
Go to the top of the page
 
+Quote Post
rezident
сообщение Mar 27 2008, 21:25
Сообщение #18


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(CAHTA_1939 @ Mar 28 2008, 02:07) *
1. мог ли я спалить XT1 замкнув Xin и Xout ?
Маловероятно. Если только статикой или подали на XIN "криминальное" по величине напряжение.
Цитата(CAHTA_1939 @ Mar 28 2008, 02:07) *
2. я настроил DCO на 16Мгц и настроил SEL'ом пины на вывод MCLK и SMCLK...
выводятся импульсы частотой 16мгц. это норм
но когда я в цикле начинаю дергать ножкой, то она дергается с частотой ~2.7Мгц
хотя при инициализации DCO я прописал, что MCLK и SMCLK должны тактироваться от него.
Это даже чуть больше "положенного" smile.gif 16Мгц/7тактов=2,286МГц получается.
Цитата(CAHTA_1939 @ Mar 28 2008, 02:07) *
3. подключив к XT1 часовой кварц, я щупом посмотрел сигнал. на Xin почти ничего нет, а на Xout напряжение около 0.4вольта.
менял кварцы, конденсаторы. Одна фигня везде =(
А код инициализации меняли соответственно?
Go to the top of the page
 
+Quote Post
CAHTA_1939
сообщение Mar 27 2008, 21:36
Сообщение #19


Частый гость
**

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



Цитата(rezident @ Mar 28 2008, 00:25) *
Это даже чуть больше "положенного" smile.gif 16Мгц/7тактов=2,286МГц получается.

А код инициализации меняли соответственно?


как это 7 тактов? 2 всегда ж было. вроде как.
т.е. из порта ввода\вывода я смогу данные слать максимум на частоте 2,286МГц ?

код инициализации? дык. сначала без кода. он же должен автоматом тактироваться от XT1 .
но потом я начал настраивать программно. перебрал все значения. безрезультатно... =(

посоветуйте что ни будь. горю!
Go to the top of the page
 
+Quote Post
rezident
сообщение Mar 27 2008, 21:47
Сообщение #20


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(CAHTA_1939 @ Mar 28 2008, 02:36) *
как это 7 тактов? 2 всегда ж было. вроде как.
2 такта это только команда перехода. Запись в порт 4 такта, а модификация (чтение-накладывание маски-запись) - 5 тактов. 5+2=7, не так ли? Если не верите, запустите в IAR симулятор и шагая по асмовому (именно асмовому!) коду смотрите CYCLECOUNTER.
Цитата(CAHTA_1939 @ Mar 28 2008, 02:36) *
т.е. из порта ввода\вывода я смогу данные слать максимум на частоте 2,286МГц ?
Не-а, еще меньше. Посчитайте затраты на синхронизацию. Даже заранее подготовленный результат вывода с линейным кодом дает время стробированного вывода одного байта 4+4=8 тактов на байт/слово. Причем это только для 80-и пинового кристалла, имеющего 16-ти разрядный порт. Для обычных 8-ми битных портов еще меньше получится. Либо выводить придется полубайтами, чтобы сигнал строба на выводах этого же порта был. А зачем такие "извращения", если не секрет?
Цитата(CAHTA_1939 @ Mar 28 2008, 02:36) *
посоветуйте что ни будь. горю!
В такой ситуации остается только один совет - заменить кристалл sad.gif
Go to the top of the page
 
+Quote Post
CAHTA_1939
сообщение Mar 27 2008, 21:55
Сообщение #21


Частый гость
**

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



Цитата(rezident @ Mar 28 2008, 00:47) *
А зачем такие "извращения", если не секрет?


вы имеете ввиду макс. частоту вывода? просто интересно.

а кристал и правда прийдется заменить. вотт только это вреня. ибо я сам менять его не буду, а придется в монтажку отдавать.
Go to the top of the page
 
+Quote Post
rezident
сообщение Mar 27 2008, 22:08
Сообщение #22


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(CAHTA_1939 @ Mar 28 2008, 02:55) *
вы имеете ввиду макс. частоту вывода? просто интересно.
К сожалению, особой скоростью "ногодрыжества" MSP430 похвалиться не может.
Go to the top of the page
 
+Quote Post
CAHTA_1939
сообщение Mar 27 2008, 22:11
Сообщение #23


Частый гость
**

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



Цитата(rezident @ Mar 28 2008, 01:08) *
К сожалению, особой скоростью "ногодрыжества" MSP430 похвалиться не может.

2Мгц тоже нормально.
Go to the top of the page
 
+Quote Post
CAHTA_1939
сообщение Mar 27 2008, 23:51
Сообщение #24


Частый гость
**

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



Цитата(rezident @ Mar 28 2008, 00:47) *
2 такта это только команда перехода. Запись в порт 4 такта, а модификация (чтение-накладывание маски-запись) - 5 тактов. 5+2=7, не так ли? Если не верите, запустите в IAR симулятор и шагая по асмовому (именно асмовому!) коду смотрите CYCLECOUNTER.


посмотрел. у меня получилось 6 тактов. и тем самым 2,6Мгц ...
Go to the top of the page
 
+Quote Post
CAHTA_1939
сообщение Mar 28 2008, 22:06
Сообщение #25


Частый гость
**

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



по странным обстоятельствам, сегодня часовой кварц запустился. на Xin и Xout хороший сигнал частотой 32кгц и имеет напряжение 1вольт.(у 149 поболее )
настроил вывод на вывод частоты ACLK, все нормально. необходимые 32кГц.

но возник вопрос. у меня почемуто не хочет MCLK и SMCLK тактироваться от Xin...

вот настройка.
Код
   BCSCTL1 &= ~XTS +DIVA_0;
   BCSCTL3 |= LFXT1S_0+LFXT1S_1+XCAP_3;
   while ((BCSCTL3&LFXT1OF)!=0);
   BCSCTL2 = SELM_3+SELS;


В BCSCTL2 задаю источник тактирования.
но на выводах MCLK и SMCLK не частота в 32 кгц
на MCLK постоянный лог.1. (напряжение в 3.3вольта)
а на SMCLK ~1Мгц, т.е. частота с DCO ...

P.S. с высоко частотными кварцами таже фигня =(
Go to the top of the page
 
+Quote Post
rezident
сообщение Mar 28 2008, 23:43
Сообщение #26


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Скорее всего вы ошиблись. Нет сигнала на выходе SMCLK. Потому что SMCLK от LFXT в этом кристалле затактировать нельзя. См. внимательно блок-схему и комментарии к ней на Figure 4−1. Basic Clock Block Diagram в User's Guide. Вы установили бит SELS в BCSCTL2 тем самым, подключив SMCLK к XT2CLK, который не генерируется по причине отсутствия кварца на XT2. Ну внимательнее же читайте User's Guide!
Кстати, оператор
Код
BCSCTL1 &= ~XTS +DIVA_0;
эквивалентен
Код
BCSCTL1 = 0;
Проверьте сами wink.gif
Go to the top of the page
 
+Quote Post
CAHTA_1939
сообщение Mar 29 2008, 00:08
Сообщение #27


Частый гость
**

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



Цитата(rezident @ Mar 29 2008, 02:43) *
Скорее всего вы ошиблись. Нет сигнала на выходе SMCLK. Потому что SMCLK от LFXT в этом кристалле затактировать нельзя. См. внимательно блок-схему и комментарии к ней на Figure 4−1. Basic Clock Block Diagram в User's Guide. Вы установили бит SELS в BCSCTL2 тем самым, подключив SMCLK к XT2CLK, который не генерируется по причине отсутствия кварца на XT2. Ну внимательнее же читайте User's Guide!
Кстати, оператор
Код
BCSCTL1 &= ~XTS +DIVA_0;
эквивалентен
Код
BCSCTL1 = 0;
Проверьте сами wink.gif

согласен со всем. но тогда почему MCLK не хочет тактироваться от XT1 ?
Go to the top of the page
 
+Quote Post
rezident
сообщение Mar 29 2008, 00:47
Сообщение #28


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(CAHTA_1939 @ Mar 29 2008, 05:08) *
согласен со всем. но тогда почему MCLK не хочет тактироваться от XT1 ?

Видимо потому, что вы опять невнимательны smile.gif и пользуетесь операцией сложения вместо логического ИЛИ.
Операция
Код
BCSCTL3 |= LFXT1S_0+LFXT1S_1+XCAP_3;

эквивалентна
Код
BCSCTL3 |= LFXT1S1|XCAP_3;

При этом с учетом XTS=0 вместо
Цитата
When XTS = 0:
00 32768 Hz Crystal on LFXT1
выбирается
Цитата
01 Reserved
Go to the top of the page
 
+Quote Post
ih_
сообщение Oct 25 2010, 12:16
Сообщение #29


Частый гость
**

Группа: Свой
Сообщений: 77
Регистрация: 2-04-08
Из: Россия, Киров
Пользователь №: 36 422



Только, что танцевал с бубном целый день вокруг MSP430F2618, но с XT2.
Цитата(rezident @ Mar 26 2008, 02:44) *
Код
do
{
    IFG1 &= ~OFIFG;                         // Clear OSCFault flag
    for (i = 0xFF; i > 0; i--);             // Time for flag to set
}  while (IFG1 & OFIFG);                     // OSCFault flag still set?
не эквивалентен этому по логике работы:
Код
while(BCSCTL3&XT2OF);
Второй работает, первый нет (ждет бесконечно). Т.к. логика формирования флага OFIFG изменилась. Во втором семействе из нее исключены сигналы включения соответсвующих модулей. Т.е. даже если XT1 выключен (флагом XT1off), а XT2 включен (и работает нормально), то OFIFG все равно будет сформирован.
Кто нибудь может объяснить такое развитие семейства?

Еще немного танцев, но для XT2 вслед за строчкой
Код
while(BCSCTL3&XT2OF);
нужно добавить
Код
IFG1&=~OFIFG;                    //clear fault flag
Хотя флаг и устанавливается обратно. Без его сброса переключение MCLK на XT2 не происходит. Странно.
ps:Модераторов прошу поправить заголовок темы, почти вся ветка справедлива и для XT2.
Благодарю.

Сообщение отредактировал ih_ - Oct 25 2010, 14:00
Go to the top of the page
 
+Quote Post
Pavel V.
сообщение Oct 26 2010, 05:26
Сообщение #30


Местный
***

Группа: Свой
Сообщений: 211
Регистрация: 3-06-06
Пользователь №: 17 742



У меня такой же процессор и тоже странности с тактированием, писал в соседней ветке: http://electronix.ru/forum/index.php?showtopic=81678
Уж не закономерность ли это?

Я вот такой код для ВЧ кварца использовал. Пока не перешел на калибруемый DCO.
Код
#ifndef CLOCK_H_
#define CLOCK_H_

#include <stdint.h>
#include "hardware.h"

/*
* OSCFAULT interrupt
*/

#pragma vector=NMI_VECTOR
__interrupt void OSCFAULT_ISR(void) {
    volatile uint16_t i;
    BCSCTL1 &= ~XT2OFF;                    // Activate XT2 high freq xtal
    BCSCTL3 |= XT2S_2 + XCAP_3;            // 3 - 16MHz crystal or resonator, 12,5 pF
    do {
        IFG1 &= ~OFIFG;                    // Clear OSCFault flag
        for (i = 0xFF; i > 0; i--);        // Time for flag to set
    } while (IFG1 & OFIFG);                // OSCFault flag still set?

    BCSCTL2 |= SELM_2 + SELS;            // MCLK, SMCLK = XT2 HF XTAL (safe)
    IE1 |= OFIE;                        // IRQ from detector
}

#endif /* CLOCK_H_ */

Код
int main( void )
{
    WDTCTL = WDTPW + WDTHOLD;                         // Stop WDT
    IFG1 |= OFIFG;                                    // Set flag OFIFG
    IE1 = OFIE;                                       // Enable IRQ from OSC fault
}


--------------------
Good News Everyone!
Go to the top of the page
 
+Quote Post

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

 


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


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