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

 
 
> UART на MSP430F2131
Slash
сообщение Nov 20 2008, 13:46
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 202
Регистрация: 10-04-05
Из: Санкт-Петербург
Пользователь №: 4 011



Мне нужно реализовать UART на MSP430F2131. У этого МК нет аппаратного UART, а есть Timer UART с 3-мя Capture/Compare Registers.
Я пока развожу плату, поэтому мне пока нужно разобраться в функциях ног МК.

Расскажите, пожалуйста, на пальцах назначение выходов, предназначеных для ССRx.

Вот часть таблицы из даташита, оставил только непонятное:

P1.1/TA0 Timer_A, capture: CCI0A input, compare: Out0 output
P1.2/TA1 Timer_A, capture: CCI1A input, compare: Out1 output
P1.3/TA2 Timer_A, capture: CCI2A input, compare: Out2 output
P1.5/TA0 Timer_A, compare: Out0 output
P1.6/TA1 Timer_A, compare: Out1 output
P1.7/TA2 Timer_A, compare: Out2 output
P2.2TA0 Timer_A, capture: CCI0B input
P2.3/TA1 Timer_A, compare: Out1 output
P2.4/TA2 Timer_A, compare: Out2 output

В чем разница этих функций? В общем, ничего пока не понятно...

Спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Slash
сообщение Nov 24 2008, 14:02
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 202
Регистрация: 10-04-05
Из: Санкт-Петербург
Пользователь №: 4 011



Спасибо всем за советы, продолжаю работу smile.gif Работаю с IAR 4.11B и MSP430f2131.

IAR дает несколько способов обращения к битам. Мне нужно присвоить битам TAMC регистра TACTL значение "3".

1 вариант:
Код
TACTL_bit.TAMC = 3;


Должен быть второй вариант, какой он? (По аналогии с BCSCTL1 = RSEL0 + RSEL1 + RSEL2;)
Ведь TAMC 2-х битовое поле.

Почему TAMC константа со значением 0х20, как с этим работать?

Вот фрагмент "io430x21x1.h" :
Код
__no_init volatile union
{
  unsigned short TACTL;  /* Timer A Control */
  
  struct
  {
    unsigned short TAIFG         : 1;  /* Timer A counter interrupt flag */
    unsigned short TAIE          : 1;  /* Timer A counter interrupt enable */
    unsigned short TACLR         : 1;  /* Timer A counter clear */
    unsigned short               : 1;
    unsigned short TAMC          : 2;  /* Timer A mode control 0 */
    unsigned short TAID          : 2;  /* Timer A clock input divider */
    unsigned short TASSEL        : 2;  /* Timer A clock source select */
    unsigned short               : 6;
  } TACTL_bit;  
} @ 0x0160;


enum {
  TAIFG               = 0x0001,
  TAIE                = 0x0002,
  TACLR               = 0x0004,
  TAMC                = 0x0020,
  TAID                = 0x0080,
  TASSEL              = 0x0200,
};


Сообщение отредактировал Slash - Nov 24 2008, 14:05
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Nov 24 2008, 14:40
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(Slash @ Nov 24 2008, 16:02) *
1 вариант:
Код
TACTL_bit.TAMC = 3;
Это выливается в чтение, наложение маски по "И", наложение маски по "ИЛИ", запись. И так для каждого поля, которое вы хотите прописать. Если в регистре три поля, и вам нужно прописать все три, то вместо записи одной константы получите минимум 12 команд.
Цитата(Slash @ Nov 24 2008, 16:02) *
Должен быть второй вариант, какой он? (По аналогии с BCSCTL1 = RSEL0 + RSEL1 + RSEL2;)
Ведь TAMC 2-х битовое поле.
Код
TACTL = (0*TAIFG) | (1*TAIE) | (1*TACLR) | (2*TAMC) и т.д.

Цитата(Slash @ Nov 24 2008, 16:02) *
Почему TAMC константа со значением 0х20, как с этим работать?
Эта константа описывает положение младшего бита в поле. Умножаете на значение поля - получаете значение нужных битов.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Slash   UART на MSP430F2131   Nov 20 2008, 13:46
- - Dog Pawlowa   Цитата(Slash @ Nov 20 2008, 17:46) В чем ...   Nov 20 2008, 14:24
- - IgorKossak   Slash, выделил Ваш вопрос в отдельную тему. Не сле...   Nov 20 2008, 16:55
- - rezident   Цитата(Slash @ Nov 20 2008, 18:46) Мне ну...   Nov 20 2008, 17:09
|- - Slash   Цитата(rezident @ Nov 20 2008, 20:09) sla...   Nov 20 2008, 17:56
|- - rezident   Цитата(Slash @ Nov 20 2008, 22:56) Всего ...   Nov 20 2008, 18:26
- - rezident   Зачем обязательно придумывать что-то свое? Использ...   Nov 24 2008, 19:28
- - Slash   Сергей Борщ, rezident, спасибо, стало понятнее. В...   Nov 25 2008, 08:19
|- - rezident   Цитата(Slash @ Nov 25 2008, 13:19) Вот то...   Nov 25 2008, 14:06
- - Slash   Подскажите, пожалуйста, в чем может быть ошибка? О...   Dec 24 2008, 18:26
- - rezident   Slash, вы наверное считаете, что телепатические сп...   Dec 24 2008, 19:51
- - Slash   Отладчик MSP-FET430UIF, схему приложил. Может еще ...   Dec 25 2008, 06:57
|- - rezident   Цитата(Slash @ Dec 25 2008, 11:57) Отладч...   Dec 25 2008, 13:14
|- - Slash   Цитата(rezident @ Dec 25 2008, 16:14) Вы ...   Dec 25 2008, 18:12
- - rezident   Тогда скорее всего проблема с величиной тока нагру...   Dec 25 2008, 18:30
- - Slash   Еще подключены: ADUM5401 ADM3312 HEF4051 - 3шт. А...   Dec 26 2008, 10:21
|- - rezident   Цитата(Slash @ Dec 26 2008, 15:21) А кака...   Dec 26 2008, 13:50
- - Slash   Ясно, спасибо. Пока у меня не прошел период детск...   Dec 26 2008, 14:46
- - Slash   Здравствуйте! Вопрос больше по принципам про...   Jan 8 2009, 10:43
- - chert_kol   Меня смущают такие конструкции Кодk->bdcNumber...   Jan 24 2009, 15:56


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

 


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


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