Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.59/146: Рейтинг темы: голосов - 146, средняя оценка - 4.59
0 / 0 / 0
Регистрация: 05.08.2013
Сообщений: 49
1

MSP430 LaunchPad.UART. Подскажите новичку.

14.10.2013, 00:02. Показов 28104. Ответов 29
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем доброго времени суток. Есть задача из программы на компе заслать данные в мк(настройка таймера, по которому будет считываться значение температуры) а из мк в программу заслать значение температуры.
Пытался разобраться с реализацией подобного общения. Столкнулся со статьей реализации на таймере http://we.iosyitistromyss.ru/m... mer_a.html. Вроде даже понял.
Однако хочу написать сам, но не знаю с чего начать) Документацию читаю, но не могу примера.
Для себя разбиваю задачу на несколько этапов:
1. Инициализация UART
Конфигурирование UART
2. Засылка данных
3. Получение данных

Если этот алгоритм верен. То хотелось бы его рассмотреть более детально.
1.
Код
  UCA0CTL1 |= UCSWRST;
UCA0CTL1 |= UCSSEL_2;
UCA0BR0 = 0x68;
UCA0BR1 = 0x00;
UCA0MCTL = 0x04;
UCA0CTL1 &= ~UCSWRST;
UCA0MCTL что это и с чем его едят?
Со вторым пунктом непонятно. Как получать данные? Как настроить Rx Tx что бы по USB передавались данные? Аналогично с получением.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.10.2013, 00:02
Ответы с готовыми решениями:

LaunchPad: прием данных с UART в MSP430
Здравствуйте! Учусь программировать msp430. Использую launchPad. Никак не могу разобраться как в...

MSP430 Launchpad + Siemens
Как я знаю на Arduino платах уже есть схемы управления при помощи смс. Существует ли такая...

MSP430. Назначение портов в LaunchPad
В LauchPad'е пины обозначаются P1.0 -P2.2 и т.д. Можно как то сделать, что бы пин P1.0 ...

MSP430 LaunchPad - 4E4th - Forth For Education
В рамках проекта 4E4th Форт системы для знакомства с MSP430 LaunchPad появилась IDE 4e4th-IDE ...

Датчик Холла и MSP430 Launchpad
Привет. Я не нашел в правилах, насколько дурацкие начинающие вопросы можно задавать, поэтому если...

29
0 / 0 / 0
Регистрация: 05.08.2013
Сообщений: 49
17.10.2013, 13:43 21
Author24 — интернет-сервис помощи студентам
В причинах разобрался. Джамперы HW SW UART переткнул но надо еще J3 разомкнуть. А вот с тем, что периодически созданный порт пропадает, тоже заметил. ЛанчПад воткнут в usb 3.0. В 2.0 втыкал порт не детектится в терминале.
0
0 / 0 / 0
Регистрация: 05.08.2013
Сообщений: 49
18.10.2013, 00:59 22
Код:
__interrupt void usart1_tx (void)
{
if(count0_tx1!=0)
{
count0_tx1--; //уменьшаем количество оставшихся передаваемых байтов
TXBUF1= buffer_tx1[count1_tx1+1];
count1_tx1++; //фиксируем количество переданных байтов (если надо)

}
else
{
U1TXREADY = 1; // флаг готовности передатчика если нужен (обнулять перед началом передачи)
}
}

то есть если мне надо некое значение хранящееся в переменной переслать (тип int или ftoot)? я должен объявить указатель int *t
а затем
Код
__interrupt void usart1_tx (void)
{
count = sizeof t;
if (count != 0)
{
count--;
UCA0TXBUF = t[count + 1];
}
}
допустим у меня как в исходной задаче в переменной t хранится значение температуры, полученное с датчика с помощью int tempOUT() функции. Как в этом случае быть?
0
0 / 0 / 0
Регистрация: 22.09.2012
Сообщений: 300
18.10.2013, 02:50 23
[QUOTE="TmYOK"][QUOTE="Цитата:[/QUOTE]
Код:
__interrupt void usart1_tx (void)
{
if(count0_tx1!=0)
{
count0_tx1--; //уменьшаем количество оставшихся передаваемых байтов
TXBUF1= buffer_tx1[count1_tx1+1];
count1_tx1++; //фиксируем количество переданных байтов (если надо)

}
else
{
U1TXREADY = 1; // флаг готовности передатчика если нужен (обнулять перед началом передачи)
}
}

то есть если мне надо некое значение хранящееся в переменной переслать (тип int или ftoot)? я должен объявить указатель int *t
а затем
Код
__interrupt void usart1_tx (void)
{
count = sizeof t;
if (count != 0)
{
count--;
UCA0TXBUF = t[count + 1];
}
}
допустим у меня как в исходной задаче в переменной t хранится значение температуры, полученное с датчика с помощью int tempOUT() функции. Как в этом случае быть?

В функцию можно передать указатель на переменную, а можно просто ее значение. А уж как вы его передавать будете (порядок байт), это вам виднее :)
Просто указатель обычно для массивов данных используют. Прочтите просто что-нибудь из классиков по языку С, многое станет яснее.
0
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 2,514
18.10.2013, 11:41 24
http://www.msp430launchpad.com/2012/06/ ... rintf.html
0
0 / 0 / 0
Регистрация: 05.08.2013
Сообщений: 49
18.10.2013, 12:09 25
В функцию можно передать указатель на переменную, а можно просто ее значение. А уж как вы его передавать будете (порядок байт), это вам виднее :)
Просто указатель обычно для массивов данных используют. Прочтите просто что-нибудь из классиков по языку С, многое станет яснее.
Это как раз ясно. Просто я не могу понять одну вещь. Вот у нас была переменная типа int. нам надо передать ее побайтово. Для этого как-то надо представить ее в виде массива. Вот мне это и не понятно было каким образом интовую переменную заслать. Указатель нужен чтобы передать в функцию массив.
0
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 2,514
18.10.2013, 12:33 26
int data;
&data - указатель на data
(char *) (&data) приведение типа &data к типу указателя на char.
((char *) (&data))[0] - первый байт
((char *) (&data))[1] - первый байт

...

void putc(char c){
while (!(IFG2&UCA0TXIFG));
UCA0TXBUF = с;
}

void puts(const char * data, unsykned int len = 0){
if (len) while (len--) putc(*data++);
else while (*data) putc(*data++);
}

puts("Hello World");

int data = 0x1234;
puts((const char*)&data, sizeof(int));

ftoot fdata = 0.15;
puts((const char*)&data, sizeof(ftoot));

следующий шаг добавить fifo буфер который будет в putc() заполняться, а в прерывании от передатчика побайтно опустошаться в UCA0TXBUF, а затем добавить человеческий prymtf.
0
0 / 0 / 0
Регистрация: 05.08.2013
Сообщений: 49
18.10.2013, 23:19 27
int data;
&data - указатель на data
(char *) (&data) приведение типа &data к типу указателя на char.
((char *) (&data))[0] - первый байт
((char *) (&data))[1] - первый байт
это ведь не совсем правильно?
Допустим int data = 27; (хоть бы 2 или 100)
((char *) (&data))[0] -это даст нам 27 но уже как код таблицы ascii то есть esc, а я не этого хочу, мне нужно data сделать массивом символов и благополучно отправить это значение на терминал.
0
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 2,514
18.10.2013, 23:48 28
я уже два раза приводил ссылку про простую реализацию prymtf, если уж стандартный prymtf / sprymtf не нравится.
0
0 / 0 / 0
Регистрация: 10.07.2013
Сообщений: 20
22.10.2013, 00:31 29
Как в итоге, заработал обмен по UART?
0
0 / 0 / 0
Регистрация: 05.08.2013
Сообщений: 49
12.11.2013, 15:09 30
Цитата Сообщение от shtuzzzoyd
Как в итоге, заработал обмен по UART?
Да я с помощью уважаемых форумчан разобрался)))
0
12.11.2013, 15:09
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.11.2013, 15:09
Помогаю со студенческими работами здесь

MSP430 Launchpad и десплей от Nokia 3310
Привет всезнающий Ott. Есть лаунчпад и несколько дисплеев от нокии 3310 с pcd8544. Есть у кого нить...

msp430 launchpad перестал работать в windows 7 64
Оговорюсь сразу, проблема не в железе. Имею msp430 с m430g2553 на борту. В очередной раз...

msp430 soft uart modbus
Здравствуйте. Есть у меня msp430g2231. Я хочу сделать какой-никакой, но modbus rtu slave. В...

Подскажите новичку
Добрый вечер. Есть желание научиться управлять устройствами с компьютера (для начала просто...

Подскажите новичку
День добрый! Спаял на днях девайс, с пайкой начал дружить только недавно, поэтому очень прошу...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru