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

 
 
> подскажите по uart
yung
сообщение Mar 25 2005, 12:43
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 207
Регистрация: 25-03-05
Из: Рязань
Пользователь №: 3 669



только начал работать с msp430f149. Что-то после AVR и 51-х грустно. Если не трудно, бросьте что-нибудь из примеров использования UART (на Си).
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
-=Space=-
сообщение Jun 9 2005, 07:45
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 105
Регистрация: 14-01-05
Из: Москва Зеленоград
Пользователь №: 1 962



Чтоб не создавать новую тему, решил залать вопрос здесь

Есть сеть микроконтроллеров, канал связи - RS485
т.к. это полудуплекс, то необходимо управление трансмитером - прием/передача.

однако сложность в том чт опрерывание по передачи выставляется не когда передатчик пуст а раньше - когда пуст буфер передатчика.
Соответственно это прерывание мне бесполезно (я не могу здесь перевести трансмиттре на режим приема - еще передача идет)

я конечно выкрутился
вот даже пример
Код
#pragma vector=UART0TX_VECTOR
__interrupt void usart0_tx (void)
{
if(tx_count==0)
   {
   _BIC_SR_IRQ(LPM0_bits);  // Clear LPM0, выполняем ожидание конца передачи
   return;
   }
else{
  .........
  // передача посылки из N байт
  tx_count--;
   }
}

//это в main
 for (;;)
   {
   _BIS_SR(LPM0_bits);         // Enter and stay in LPM0
   _NOP();
   while (!(UTCTL0 & TXEPT));  // ждем пока буфер передатчика UART0 не будет пуст
   P1OUT &= ~0x0C;             // запрет передачи
   }


криво это выглядит
может я чего упустил и можно было сделать проще?
как , например в AVR, там есть флаги прывания по передачи как от "буфер пуст", так и от "передатчик пуст"
Go to the top of the page
 
+Quote Post
rezident
сообщение Jun 9 2005, 09:36
Сообщение #3


Гуру
******

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



Цитата(-=Space=- @ Jun 9 2005, 13:45)
Чтоб не создавать новую тему, решил залать вопрос здесь

Это не есть хорошо. Лучше создавать свою тему со своим описанием.
Цитата(-=Space=- @ Jun 9 2005, 13:45)
Есть сеть микроконтроллеров, канал связи - RS485
т.к. это полудуплекс, то необходимо управление трансмитером - прием/передача.

однако сложность в том чт опрерывание по передачи выставляется не когда передатчик пуст а раньше - когда пуст буфер передатчика.
Соответственно это прерывание мне бесполезно (я не могу здесь перевести трансмиттре на режим приема - еще передача идет)

я конечно выкрутился
вот даже пример
криво это выглядит
может я чего упустил и можно было сделать проще?
как , например в AVR, там есть флаги прывания по передачи как от "буфер пуст", так и от "передатчик пуст"
*

Это не то чтобы криво, а просто неправильно. Нужно не только дождаться окончания передачи символа, но еще и выждать паузу, чтобы возможные помехи от переключения линии (при выключении передатчика) не были восприняты принимающим устройством как начало следующего символа. Пауза эта конечно же зависит от примененного протокола и линии связи. Какие-то протоколу чувствительны к этому, какие-то нет. "Растяжка" линии тоже очень способствует улучшению связи.
А паузы формируйте таймерами, как минимум один таймер есть в любом кристалле MSP430. Посчитайте требуемую паузу, необходимую для передачи символа на данной скорости и паузу достаточную для удержания линии после передачи и сразу же после записи в UxTXBUF последнего байта установите CCRx какого-нибудь таймера. Когда пауза окончится, то при возникновении прерывания от CCRx переключайте линию RS485 на прием. Прерывание от CCRx конечно же должно быть заранее разрешено.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- yung   подскажите по uart   Mar 25 2005, 12:43
- - VAI   Посмотрите на сайте TI "Code Examples" h...   Mar 25 2005, 13:12
|- - kpv   не грусти, даже програмка есть, которая все пересч...   Mar 25 2005, 13:18
- - VAI   Более точно можно посчитать значения регистров исп...   Mar 26 2005, 05:17
- - -=Space=-   Цитата(rezident @ Jun 9 2005, 13:36)Нужно не ...   Jun 9 2005, 10:44
|- - rezident   Цитата(-=Space=- @ Jun 9 2005, 16:4...   Jun 9 2005, 13:36
- - -=Space=-   Интерфейс RS485 протокол "Многопроцессорный ф...   Jun 9 2005, 17:00
- - rezident   Я не совсем про это спрашивал. Меня интересовал пр...   Jun 9 2005, 17:40
- - -=Space=-   Если про протокол верхнего уровня, то он у нас сво...   Jun 9 2005, 18:31
|- - Alex2172   Цитата(-=Space=- @ Jun 9 2005, 21:3...   Jun 10 2005, 06:43
|- - rezident   Цитата(-=Space=- @ Jun 10 2005, 00:...   Jun 10 2005, 09:42
- - -=Space=-   Цитата(Alex2172 @ Jun 10 2005, 10:43)Простите...   Jun 10 2005, 07:14
- - KaeMZer   Пытаюсь реализовать обмен данными контроллера MSP4...   Aug 22 2005, 00:21
|- - Dimka84   Цитата(KaeMZer @ Aug 22 2005, 04:21)Пытаюсь р...   Aug 23 2005, 23:02
|- - KaeMZer   Цитата(Dimka84 @ Aug 24 2005, 02:02)Может ежл...   Aug 23 2005, 23:36
|- - Dimka84   Цитата(KaeMZer @ Aug 24 2005, 03:36)а что за ...   Aug 24 2005, 08:45
- - arttab   Извините если что то упустил, но.. Но если есть с...   Aug 22 2005, 01:31
- - KaeMZer   подскажите по uart подскажите пожалуйста, какие у...   Aug 22 2005, 15:25
- - VAI   лог.1 близка к питанию, лог.0 - к 0(Vss) Более под...   Aug 23 2005, 04:09
- - aal   По RS485: что мешает принимать передоваемое и для ...   Aug 23 2005, 06:20
- - KaeMZer   VAI, спасибо. никак не мог найти.   Aug 23 2005, 10:54
- - Dimka84   Может ежли не секрет скажешь на каком форуме. Анал...   Aug 23 2005, 22:58
- - KaeMZer   не секрет - http://forum.sources.ru/   Aug 23 2005, 23:28
- - KaeMZer   ЦитатаСо стороны PC прогу для работы с COM нормаль...   Aug 24 2005, 11:50
- - Dimka84   Основная проблема, это COM. А именно приём. Я обра...   Aug 24 2005, 12:06
- - KaeMZer   мне видится вот какое решение: создать отдельный п...   Aug 24 2005, 12:33
- - Dimka84   Наверное так и придётся делать. Статья есть здесь:...   Aug 24 2005, 14:40
- - vvvvv   Все это ботва, ребята, на самом деле WaitCommEven...   Aug 24 2005, 20:56
- - vvvvv   Прошу прощения за выражение "ботва", это...   Aug 25 2005, 06:22
- - KaeMZer   да никак по-другому это не назовёшь! я рад ч...   Aug 25 2005, 07:27


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

 


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


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