Olegovich 0 20 апреля, 2005 Опубликовано 20 апреля, 2005 · Жалоба Такая ерудна творится, я недавно на MSP пересел... Надо настроить UART, сам UART вроде настраиваю нормально, всё по методе, а частота получается раз в 10 меньше, чем надо. Дело, видимо, в том что надо на него подать сигнал SMCLK, и как настроить уже вот этот сигнал, чтоб он шел от MCLK, да и сам MCLK надо ли перед этим как-то настраивать??? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rezident 0 20 апреля, 2005 Опубликовано 20 апреля, 2005 · Жалоба Выбор частоты тактирование SMCLK настраивается при инициализации основного модуля тактирования (регистр BCSCTL2). Процедура инициализации модуля тактирования описана в User's Manual или см. перевод на gaw.ru. Там же и про настройку UART описано. Кстати, какой именно кристалл используете? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Olegovich 0 20 апреля, 2005 Опубликовано 20 апреля, 2005 · Жалоба Выбор частоты тактирование SMCLK настраивается при инициализации основного модуля тактирования (регистр BCSCTL2). Процедура инициализации модуля тактирования описана в User's Manual или см. перевод на gaw.ru. Там же и про настройку UART описано. Кстати, какой именно кристалл используете? <{POST_SNAPBACK}> MSP430F149 пока не получается... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VAI 0 20 апреля, 2005 Опубликовано 20 апреля, 2005 · Жалоба Гляньте здесь. Я прикладывал свои исходники для UART в файле 1.rar Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Olegovich 0 20 апреля, 2005 Опубликовано 20 апреля, 2005 · Жалоба Если быть конкретнее - у меня 8 МГц кварц подключен на XIN:CLK, надо установить битрейт 38400, что делать?.... :smile3046: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rezident 0 20 апреля, 2005 Опубликовано 20 апреля, 2005 · Жалоба Если быть конкретнее - у меня 8 МГц кварц подключен на XIN:CLK, надо установить битрейт 38400, что делать?.... <{POST_SNAPBACK}> Если хочется получить точные частоты для UART, то рекомендую использовать кварц 7372,8кГц вместо 8МГц. Значится инициализация модуля тактирования будет такая. #include <msp430x14x.h> #pragma vector=NMI_VECTOR __interrupt void OSC_Fault(void) { // ======= Инициализация источников тактирования ACLK, MCLK, SMCLK ==== BCSCTL2 = SELM_0 + DIVM_0 + DIVS_0; // сначала перейдем на внутреннее тактирование BCSCTL1 = DIVA_0+RSEL2+RSEL1+RSEL0; // ACLK=LFXT/1=32768Гц DCOCTL = DCO1 + DCO2; // DCO около 4МГц while ((IFG1 & OFIFG) != 0) IFG1 &=~OFIFG; // Ожидаем пока стабилизируются колебания кварца BCSCTL2 = SELM_2 + DIVM_0 + SELS + DIVS_0; // MCLK=XT2/1=7.3728МГц, SMCLK=XT2/1=7.3728МГц IE1 |= OFIE; // разрешить прерывание от детектора ошибки резонатора } void main(void) { WDTCTL = WDTPW + WDTHOLD; // Останов сторожевого таймера IE1 |= OFIE + WDTIE; // разрешить прерывание от детектора ошибки резонатора IFG1 |= OFIFG; // установка бита прерывания ошибки осциллятора, для вызова процедуры //*********** // тут будет ваш код main //*********** } Процедура инициализации UART такая: для кварца 7372,8кГц; baud 38400; четность используется; проверка на четность; 8-ми битные данные; void _init_uart0(void) { U0CTL = SWRST; // уст.бит прогр. сброса модуля UART0 U0CTL |= PENA+PEV+CHAR; // уст.режим UART-четн.,1стоп-бит, 8бит данные U0TCTL = SSEL0 + SSEL1; // U0CLK = SMCLK U0BR1 = 0x00; // уст.старший байт предделителя BITCLK U0BR0 = 0xC0; // уст.младший байт предделителя BITCLK U0MCTL = 0x00; // установка регистра модуляции // для кварца 8МГц // U0BR1 = 0x00; // уст.старший байт предделителя BITCLK // U0BR0 = 0xD0; // уст.младший байт предделителя BITCLK // U0MCTL = 0x92; // установка регистра модуляции ME1 |= UTXE0 + URXE0; // разрешаем работу модуля UART0 U0RCTL = URXEIE; // разр.прерыв. для ош. прин.символов U0CTL &=~ SWRST; // очистим бит программного сброса IE1 |= URXIE0 + UTXIE0; // разрешить прерывания для UART0 //******************** // здесь можно добавать инициализацию Port3 // точнее тех пинов которые относятся к UTXD и URXD //********************* } Премопередача будет вестись по прерываниями от модуля UART. Их можете сами оформить. Успехов! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VAI 0 21 апреля, 2005 Опубликовано 21 апреля, 2005 · Жалоба Я в сообщении выше ссылку забыл http://forum.electronix.ru/index.php?showtopic=3794&hl=# Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Olegovich 0 21 апреля, 2005 Опубликовано 21 апреля, 2005 · Жалоба thanks! Разобрался. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться