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

 
 
> Проблема с UART, выводит несуразицу
Zelepuk
сообщение Jul 13 2011, 05:34
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 634
Регистрация: 27-10-10
Пользователь №: 60 464



Вот код
CODE
#include "msp430x471x7.h"

void main(void)
{
volatile unsigned int i;
P5DIR |= BIT7;

WDTCTL = WDTPW+WDTHOLD; // Stop WDT
FLL_CTL0 |= XCAP14PF; // Configure load caps

do
{
IFG1 &= ~OFIFG; // Clear OSCFault flag
for (i = 0x47FF; i > 0; i--); // Time for flag to set
}
while ((IFG1 & OFIFG)); // OSCFault flag still set?

P1SEL |= BIT6+BIT7; // P2.4,5 = USCI_A0 RXD/TXD
UCA1CTL1 |= UCSSEL_1; // CLK = ACLK
UCA1BR0 = 0x03; // 32k/9600 - 3.41
UCA1BR1 = 0x00; //
UCA1MCTL = 0x06; // Modulation
UCA1CTL1 &= ~UCSWRST; // **Initialize USCI state machine**
// IE2 |= UCA1RXIE; // Enable USCI_A0 RX interrupt
char c = 'A';
// _BIS_SR(LPM3_bits + GIE); // Enter LPM3, interrupts enabled
while(1)
{

while(!(IFG2&UCA1TXIFG));
UCA1TXBUF = c;
P5OUT ^= BIT7;
for(i=2500;i>0;i--);
}

}


Пытаюсь просто выводить в терминал символ 'A' и зажигать светодиод. Светодиод горит, на терминал выводится сами видите что (см. приложенное фото).
В чём может быть дело?
Ещё когда пробую проект "эхо"(посылаем символ с клавиатуры компьютера - MSP430 принимает его и кидает в компорт компьютера), то он работает со сбоями (сначала всё хорошо, потом символы не передаются, потом передаётся чепуха...)

Нужна помощь, всю голову сломал((
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
rezident
сообщение Jul 13 2011, 12:23
Сообщение #2


Гуру
******

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



Модуль тактирования проинициализируйте полностью!
Go to the top of the page
 
+Quote Post
Zelepuk
сообщение Jul 14 2011, 05:40
Сообщение #3


Знающий
****

Группа: Участник
Сообщений: 634
Регистрация: 27-10-10
Пользователь №: 60 464



Цитата(rezident @ Jul 13 2011, 16:23) *
Модуль тактирования проинициализируйте полностью!


У меня MSP430F47197 подклюен часовой кварц(32768) и кварцевый резонатор(16 мегагерц).
Если я правильно понял, то можно тактировать USCI модуль от разных источников:
DCO, SMCLK, ACLK. Я предпочёл ACLK (см. код выше).
Я делаю так

CODE
FLL_CTL0 |= XCAP0PF; // Set load capacitance
FLL_CTL1 &= ~XT2OFF; // Turn on XT2
FLL_CTL1 = SELS; // Select SMCLK source as XT2CLK
FLL_CTL2 |= XT2S_2;


По-моему у серии MSP430F47XX несколько сложнее, чем у других, система тактирования (так как есть FLL).

Кто знает поправьте если что-то не так.




Сообщение отредактировал Zelepuk - Jul 14 2011, 05:57
Go to the top of the page
 
+Quote Post
rezident
сообщение Jul 14 2011, 15:51
Сообщение #4


Гуру
******

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



Цитата(Zelepuk @ Jul 14 2011, 10:40) *
Кто знает поправьте если что-то не так.

Я же вам сказал полностью нужно проинициализировать! Т.е. прописать явными значениями все регистры модуля тактирования, а не накладывать маски на дефолтные (после POR) состояния. То же самое касается в отношении регистров USCI.
Еще возникает вопрос зачем использовать 32768 для UART? Да еще и при неверном значении регистра модуляции, на что вам MrYuran указал. Подстройте DCO по часовому кварцу к какой-либо типизированной частоте, которая нацело делиться для выбранной скорости UART. Например, 1,152МГц (9600*120=115200*10) или 1,8432МГц (9600*192=115200*16). И потом используйте DCO как источник SMCLK, а тот в свою очередь для тактирования USCI. Либо подключите кварц на XT2 с тем же критерием выбора частоты (нацело делится для стандартного ряда скоростей UART).
Go to the top of the page
 
+Quote Post
Zelepuk
сообщение Jul 15 2011, 14:17
Сообщение #5


Знающий
****

Группа: Участник
Сообщений: 634
Регистрация: 27-10-10
Пользователь №: 60 464



Цитата(rezident @ Jul 14 2011, 19:51) *
Еще возникает вопрос зачем использовать 32768 для UART? Да еще и при неверном значении регистра модуляции, на что вам MrYuran указал. Подстройте DCO по часовому кварцу к какой-либо типизированной частоте, которая нацело делиться для выбранной скорости UART. Например, 1,152МГц (9600*120=115200*10) или 1,8432МГц (9600*192=115200*16). И потом используйте DCO как источник SMCLK, а тот в свою очередь для тактирования USCI. Либо подключите кварц на XT2 с тем же критерием выбора частоты (нацело делится для стандартного ряда скоростей UART).


Я подключаю кварц на XT2 (16000кГц) и делю его частоту на скорость UART(115200) получается 138 целых, а дробную часть просто не учитываю (именно так делают TI в своих примерах).


Цитата(rezident @ Jul 14 2011, 19:51) *
Я же вам сказал полностью нужно проинициализировать! Т.е. прописать явными значениями все регистры модуля тактирования, а не накладывать маски на дефолтные (после POR) состояния. То же самое касается в отношении регистров USCI.


Вы имеете ввиду, что нужно проинициализировать все регистры (см. приложенный рисунок) и каждый бит определить требуемым значением (если даже оно и не особо надо)???

Просто у меня есть большая апликуха от TI и там такой подход не практикуется.



Цитата(rezident @ Jul 14 2011, 22:50) *
DCO нужен всегда! По крайней мере для тактирования MCLK нужен.


MCLK: основное тактирование. Модуль MCLK программно выбирается как LFXT1CLK, XT2CLK (если доступен) или DCOCLK. MCLK делится на 1, 2, 4 или 8. MCLK используется ЦПУ и системой.

Это прочитано из русского руководства. Получается, если есть два кварца на плате, можно вообще без DCO обойтись.

Сообщение отредактировал Zelepuk - Jul 15 2011, 14:26
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Zelepuk   Проблема с UART   Jul 13 2011, 05:34
|- - MrYuran   Цитата(Zelepuk @ Jul 14 2011, 09:40) Кто ...   Jul 14 2011, 07:40
|- - Zelepuk   Цитата(rezident @ Jul 14 2011, 19:51) Я ж...   Jul 14 2011, 17:12
||- - rezident   Цитата(Zelepuk @ Jul 14 2011, 22:12) нуже...   Jul 14 2011, 18:50
|- - rezident   Цитата(Zelepuk @ Jul 15 2011, 19:10) Я по...   Jul 15 2011, 14:20
|- - zltigo   QUOTE (Zelepuk @ Jul 15 2011, 16:17) полу...   Jul 15 2011, 17:34
- - Zelepuk   Цитата(rezident @ Jul 14 2011, 19:51) Я ж...   Jul 16 2011, 12:22
- - Zelepuk   Теперь пробую инициализировать явно все регистры м...   Jul 16 2011, 13:36
- - rezident   Есть несколько вариантов организации тактирования ...   Jul 17 2011, 00:26
|- - Zelepuk   Цитата(rezident @ Jul 17 2011, 04:26) Ест...   Jul 17 2011, 19:00
|- - rezident   Цитата(Zelepuk @ Jul 18 2011, 00:00) А мо...   Jul 17 2011, 21:16
- - Zelepuk   Цитата(rezident @ Jul 18 2011, 01:16) А к...   Jul 18 2011, 07:27
- - rezident   Блин! В этой строке ошибка. Я забыл проинверти...   Jul 18 2011, 10:05
- - Zelepuk   Да, теперь светодиод мигает с нужным интервалом......   Jul 18 2011, 14:47
|- - rezident   Цитата(Zelepuk @ Jul 18 2011, 19:47) проб...   Jul 18 2011, 19:09
- - Zelepuk   Да, простите, в основном цикле вообще не трогаю та...   Jul 18 2011, 19:56
- - rezident   Ну вот, так сразу видно где у вас ошибки. Готовнос...   Jul 18 2011, 20:03
- - Zelepuk   Вот. исправил код. Светодиод горит всё время. В по...   Jul 19 2011, 06:25
- - rezident   Как вы определяете, что ничего не выводится? Осцил...   Jul 19 2011, 22:54
- - Zelepuk   rezident Попробовал последний вариант вашего кода ...   Jul 20 2011, 11:07
- - rezident   Я так и не понял, осциллограф у вас есть? Если ест...   Jul 20 2011, 20:14
- - Zelepuk   Пока осциллографа под рукой нет (завтра планирую п...   Jul 21 2011, 14:25
|- - rezident   Цитата(Zelepuk @ Jul 21 2011, 19:25) И ещ...   Jul 21 2011, 15:20
|- - Zelepuk   Цитата(rezident @ Jul 21 2011, 19:20) Я п...   Jul 21 2011, 16:54
|- - Zelepuk   Цитата(rezident @ Jul 21 2011, 19:20) А л...   Jul 23 2011, 15:20
- - Zelepuk   Вот что получаю в окне терминала (см. фото). В тер...   Jul 24 2011, 06:56
- - Zelepuk   Что примечательно, заменив преобразователь уровней...   Jul 25 2011, 08:49
- - rezident   Эх-ма. Основная проблема большинства начинающих в...   Jul 25 2011, 18:54
- - Zelepuk   Схемотехника используется из slaa409 (апликейшн сч...   Jul 25 2011, 19:08
|- - Dog Pawlowa   Цитата(Zelepuk @ Jul 25 2011, 22:08) Код,...   Jul 26 2011, 02:33
|- - Zelepuk   Цитата(Dog Pawlowa @ Jul 26 2011, 06:33) ...   Jul 26 2011, 08:25
||- - Dog Pawlowa   Цитата(Zelepuk @ Jul 26 2011, 11:25) Да, ...   Jul 26 2011, 09:28
|- - rezident   Цитата(Dog Pawlowa @ Jul 26 2011, 07:33) ...   Jul 26 2011, 10:15
- - rezident   "Дьявол кроется в мелочах". Не ссылайт...   Jul 25 2011, 20:42
- - Zelepuk   Цитата(Dog Pawlowa @ Jul 26 2011, 13:28) ...   Jul 26 2011, 12:52
|- - Dog Pawlowa   Цитата(Zelepuk @ Jul 26 2011, 15:52) Цель...   Jul 26 2011, 20:31
- - Zelepuk   Теперь можно и putchar писать, теперь видно что св...   Jul 27 2011, 11:32
- - Zelepuk   Всем спасибо! Тема закрыта!   Jul 28 2011, 13:50


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

 


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


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