|
|
  |
16Mhz на XT1 для 2618 |
|
|
|
Mar 26 2008, 07:19
|

Гуру
     
Группа: Модераторы
Сообщений: 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)
|
|
|
|
|
Mar 27 2008, 21:25
|
Гуру
     
Группа: Свой
Сообщений: 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 должны тактироваться от него. Это даже чуть больше "положенного"  16Мгц/7тактов=2,286МГц получается. Цитата(CAHTA_1939 @ Mar 28 2008, 02:07)  3. подключив к XT1 часовой кварц, я щупом посмотрел сигнал. на Xin почти ничего нет, а на Xout напряжение около 0.4вольта. менял кварцы, конденсаторы. Одна фигня везде =( А код инициализации меняли соответственно?
|
|
|
|
|
Mar 27 2008, 21:36
|

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

|
Цитата(rezident @ Mar 28 2008, 00:25)  Это даже чуть больше "положенного"  16Мгц/7тактов=2,286МГц получается. А код инициализации меняли соответственно? как это 7 тактов? 2 всегда ж было. вроде как. т.е. из порта ввода\вывода я смогу данные слать максимум на частоте 2,286МГц ? код инициализации? дык. сначала без кода. он же должен автоматом тактироваться от XT1 . но потом я начал настраивать программно. перебрал все значения. безрезультатно... =( посоветуйте что ни будь. горю!
|
|
|
|
|
Mar 27 2008, 21:47
|
Гуру
     
Группа: Свой
Сообщений: 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)  посоветуйте что ни будь. горю! В такой ситуации остается только один совет - заменить кристалл
|
|
|
|
|
Mar 27 2008, 21:55
|

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

|
Цитата(rezident @ Mar 28 2008, 00:47)  А зачем такие "извращения", если не секрет? вы имеете ввиду макс. частоту вывода? просто интересно. а кристал и правда прийдется заменить. вотт только это вреня. ибо я сам менять его не буду, а придется в монтажку отдавать.
|
|
|
|
|
Mar 27 2008, 22:11
|

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

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

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

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

Частый гость
 
Группа: Участник
Сообщений: 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. с высоко частотными кварцами таже фигня =(
|
|
|
|
|
Mar 28 2008, 23:43
|
Гуру
     
Группа: Свой
Сообщений: 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; Проверьте сами
|
|
|
|
|
Mar 29 2008, 00:08
|

Частый гость
 
Группа: Участник
Сообщений: 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; Проверьте сами  согласен со всем. но тогда почему MCLK не хочет тактироваться от XT1 ?
|
|
|
|
|
Mar 29 2008, 00:47
|
Гуру
     
Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882

|
Цитата(CAHTA_1939 @ Mar 29 2008, 05:08)  согласен со всем. но тогда почему MCLK не хочет тактироваться от XT1 ? Видимо потому, что вы опять невнимательны  и пользуетесь операцией сложения вместо логического ИЛИ. Операция Код BCSCTL3 |= LFXT1S_0+LFXT1S_1+XCAP_3; эквивалентна Код BCSCTL3 |= LFXT1S1|XCAP_3; При этом с учетом XTS=0 вместо Цитата When XTS = 0: 00 32768 Hz Crystal on LFXT1 выбирается Цитата 01 Reserved
|
|
|
|
|
Oct 25 2010, 12:16
|
Частый гость
 
Группа: Свой
Сообщений: 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
|
|
|
|
|
Oct 26 2010, 05:26
|

Местный
  
Группа: Свой
Сообщений: 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!
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|