0 / 0 / 0
Регистрация: 05.08.2013
Сообщений: 49
|
|
1 | |
MSP430 LaunchPad.UART. Подскажите новичку.14.10.2013, 00:02. Показов 28104. Ответов 29
Метки нет (Все метки)
Всем доброго времени суток. Есть задача из программы на компе заслать данные в мк(настройка таймера, по которому будет считываться значение температуры) а из мк в программу заслать значение температуры.
Пытался разобраться с реализацией подобного общения. Столкнулся со статьей реализации на таймере 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; Со вторым пунктом непонятно. Как получать данные? Как настроить Rx Tx что бы по USB передавались данные? Аналогично с получением.
0
|
14.10.2013, 00:02 | |
Ответы с готовыми решениями:
29
LaunchPad: прием данных с UART в MSP430 MSP430 Launchpad + Siemens MSP430. Назначение портов в LaunchPad MSP430 LaunchPad - 4E4th - Forth For Education Датчик Холла и MSP430 Launchpad |
0 / 0 / 0
Регистрация: 05.08.2013
Сообщений: 49
|
|
17.10.2013, 13:43 | 21 |
В причинах разобрался. Джамперы HW SW UART переткнул но надо еще J3 разомкнуть. А вот с тем, что периодически созданный порт пропадает, тоже заметил. ЛанчПад воткнут в usb 3.0. В 2.0 втыкал порт не детектится в терминале.
0
|
0 / 0 / 0
Регистрация: 05.08.2013
Сообщений: 49
|
|
18.10.2013, 00:59 | 22 |
{ 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]; } }
0
|
0 / 0 / 0
Регистрация: 22.09.2012
Сообщений: 300
|
|
18.10.2013, 02:50 | 23 |
[QUOTE="TmYOK"][QUOTE="Цитата:[/QUOTE]
{ 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]; } } В функцию можно передать указатель на переменную, а можно просто ее значение. А уж как вы его передавать будете (порядок байт), это вам виднее :) Просто указатель обычно для массивов данных используют. Прочтите просто что-нибудь из классиков по языку С, многое станет яснее.
0
|
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 2,514
|
|
18.10.2013, 11:41 | 24 |
0
|
0 / 0 / 0
Регистрация: 05.08.2013
Сообщений: 49
|
|
18.10.2013, 12:09 | 25 |
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 = 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
0
|
12.11.2013, 15:09 | |
12.11.2013, 15:09 | |
Помогаю со студенческими работами здесь
30
MSP430 Launchpad и десплей от Nokia 3310 msp430 launchpad перестал работать в windows 7 64 msp430 soft uart modbus Подскажите новичку Подскажите новичку Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |