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

 
 
> 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
Ответов
rezident
сообщение Nov 24 2008, 19:28
Сообщение #2


Гуру
******

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



Зачем обязательно придумывать что-то свое? Используйте стандартные и рекомендуемые производителем TI символьные обозначения регистров и битов. Найти их можно в хедере конкретного кристалла. Для вашего случая это msp430x21x1.h. В аттачменте его содержимое из среды IAR EW430 4.11B. В частности альтернативные названия битов и групп битов таймера А выглядят вот так
CODE
/* Alternate register names */
#define CCTL0 TACCTL0 /* Timer A Capture/Compare Control 0 */
#define CCTL1 TACCTL1 /* Timer A Capture/Compare Control 1 */
#define CCTL2 TACCTL2 /* Timer A Capture/Compare Control 2 */
#define CCR0 TACCR0 /* Timer A Capture/Compare 0 */
#define CCR1 TACCR1 /* Timer A Capture/Compare 1 */
#define CCR2 TACCR2 /* Timer A Capture/Compare 2 */
#define CCTL0_ TACCTL0_ /* Timer A Capture/Compare Control 0 */
#define CCTL1_ TACCTL1_ /* Timer A Capture/Compare Control 1 */
#define CCTL2_ TACCTL2_ /* Timer A Capture/Compare Control 2 */
#define CCR0_ TACCR0_ /* Timer A Capture/Compare 0 */
#define CCR1_ TACCR1_ /* Timer A Capture/Compare 1 */
#define CCR2_ TACCR2_ /* Timer A Capture/Compare 2 */

#define TASSEL1 (0x0200) /* Timer A clock source select 0 */
#define TASSEL0 (0x0100) /* Timer A clock source select 1 */
#define ID1 (0x0080) /* Timer A clock input divider 1 */
#define ID0 (0x0040) /* Timer A clock input divider 0 */
#define MC1 (0x0020) /* Timer A mode control 1 */
#define MC0 (0x0010) /* Timer A mode control 0 */
#define TACLR (0x0004) /* Timer A counter clear */
#define TAIE (0x0002) /* Timer A counter interrupt enable */
#define TAIFG (0x0001) /* Timer A counter interrupt flag */

#define MC_0 (0*0x10u) /* Timer A mode control: 0 - Stop */
#define MC_1 (1*0x10u) /* Timer A mode control: 1 - Up to CCR0 */
#define MC_2 (2*0x10u) /* Timer A mode control: 2 - Continous up */
#define MC_3 (3*0x10u) /* Timer A mode control: 3 - Up/Down */
#define ID_0 (0*0x40u) /* Timer A input divider: 0 - /1 */
#define ID_1 (1*0x40u) /* Timer A input divider: 1 - /2 */
#define ID_2 (2*0x40u) /* Timer A input divider: 2 - /4 */
#define ID_3 (3*0x40u) /* Timer A input divider: 3 - /8 */
#define TASSEL_0 (0*0x100u) /* Timer A clock source select: 0 - TACLK */
#define TASSEL_1 (1*0x100u) /* Timer A clock source select: 1 - ACLK */
#define TASSEL_2 (2*0x100u) /* Timer A clock source select: 2 - SMCLK */
#define TASSEL_3 (3*0x100u) /* Timer A clock source select: 3 - INCLK */

#define CM1 (0x8000) /* Capture mode 1 */
#define CM0 (0x4000) /* Capture mode 0 */
#define CCIS1 (0x2000) /* Capture input select 1 */
#define CCIS0 (0x1000) /* Capture input select 0 */
#define SCS (0x0800) /* Capture sychronize */
#define SCCI (0x0400) /* Latched capture signal (read) */
#define CAP (0x0100) /* Capture mode: 1 /Compare mode : 0 */
#define OUTMOD2 (0x0080) /* Output mode 2 */
#define OUTMOD1 (0x0040) /* Output mode 1 */
#define OUTMOD0 (0x0020) /* Output mode 0 */
#define CCIE (0x0010) /* Capture/compare interrupt enable */
#define CCI (0x0008) /* Capture input signal (read) */
#define OUT (0x0004) /* PWM Output signal if output mode 0 */
#define COV (0x0002) /* Capture/compare overflow flag */
#define CCIFG (0x0001) /* Capture/compare interrupt flag */

#define OUTMOD_0 (0*0x20u) /* PWM output mode: 0 - output only */
#define OUTMOD_1 (1*0x20u) /* PWM output mode: 1 - set */
#define OUTMOD_2 (2*0x20u) /* PWM output mode: 2 - PWM toggle/reset */
#define OUTMOD_3 (3*0x20u) /* PWM output mode: 3 - PWM set/reset */
#define OUTMOD_4 (4*0x20u) /* PWM output mode: 4 - toggle */
#define OUTMOD_5 (5*0x20u) /* PWM output mode: 5 - Reset */
#define OUTMOD_6 (6*0x20u) /* PWM output mode: 6 - PWM toggle/set */
#define OUTMOD_7 (7*0x20u) /* PWM output mode: 7 - PWM reset/set */
#define CCIS_0 (0*0x1000u) /* Capture input select: 0 - CCIxA */
#define CCIS_1 (1*0x1000u) /* Capture input select: 1 - CCIxB */
#define CCIS_2 (2*0x1000u) /* Capture input select: 2 - GND */
#define CCIS_3 (3*0x1000u) /* Capture input select: 3 - Vcc */
#define CM_0 (0*0x4000u) /* Capture mode: 0 - disabled */
#define CM_1 (1*0x4000u) /* Capture mode: 1 - pos. edge */
#define CM_2 (2*0x4000u) /* Capture mode: 1 - neg. edge */
#define CM_3 (3*0x4000u) /* Capture mode: 1 - both edges */

Для вашего же случая (вы видимо хотите запустить таймер в режиме Up/Down?) строка будет выглядеть таким образом
Код
TACTL|=MC_3;

что эквивалентно
Код
TACTL|=MC1|MC0;

или
Код
TACTL|=0x30;

Прикрепленные файлы
Прикрепленный файл  msp430x21x1.zip ( 5.47 килобайт ) Кол-во скачиваний: 115
 
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
- - Slash   Спасибо всем за советы, продолжаю работу Работаю ...   Nov 24 2008, 14:02
|- - Сергей Борщ   Цитата(Slash @ Nov 24 2008, 16:02) 1 вари...   Nov 24 2008, 14:40
- - 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 Текстовая версия Сейчас: 28th July 2025 - 14:11
Рейтинг@Mail.ru


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