Перейти к содержанию
    

глюкавый msp430f2234

столкнулся с тем,что при выборе альтернативной моды для любого пина

на порту P2, вырубается альтернативная мода в порту P3 - тоесть на 3 порту работает UART, при выводе ШИМ на порт 2 -> UART перестает работать. В errate данный случай не описан.

 

кто нибудь пользовал их? или такие глюки только у моих процев?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Любая запись в P2SEL даже 0 приводит к полному колапсу в процессоре. таймеры тоже перестают работать.

 

P2DIR=LED_2;

// P2OUT=0;

// P2SEL=0; <----если эту строку включить то все перестает работать

 

P3DIR= LED_3 | LED_4 | Tx_EN | Rx_EN;

P3OUT= 0;

P3SEL= TxD | RxD;

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Любая запись в P2SEL даже 0 приводит к полному колапсу в процессоре. таймеры тоже перестают работать.

...

// P2SEL=0; <----если эту строку включить то все перестает работать

...

Ты выключаешь кварц, попробуй записать 0xC0.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ты выключаешь кварц, попробуй записать 0xC0.

:07: :cranky:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

P2.6 and P2.7 functions have been added to 20- and 28- pin

devices. These are shared functions with XIN and XOUT.

Software must not clear the P2SELx bits for these pins if crystal

operation is required.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Во дурдом, не заметил. Всегда использовал "большие" MSP где кварц висел на отдельных ногах.

Мужики спасибо !!!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Начал работать с процессором F2013 и никак не могу понять, как активировать выход TA1, который находится на ноге 2.6 (XIN). У автора исходного поста была проблема с тем, что он случайно отключал кварц, записывая "0" в порт. У меня же, наоборот, не получается его отключить!

 

Если я записываю "0" в P2SEL &= ~0x40; то вывод начинает работать как General I/O. Несмотря на то, что активизирован Таймер А в режиме ШИМ. Если оставить P2SEL |= 0x40; то вывод работает как вход для кварца, также вне зависимости от настроек Таймера.

 

Тактирование от DCO:

BCSCTL1 = CALBC1_1MHZ,

DCOCTL = CALDCO_1MHZ,

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Начал работать с процессором F2013 и никак не могу понять, как активировать выход TA1, который находится на ноге 2.6 (XIN).

У меня так работает:

  P2DIR = BIT6;                            // P2.6 output
  P2SEL = BIT6;                            // P2.6 TA1 options
  P2REN=0;

Иногда забывают DIR на выход включить :rolleyes:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

8.2.5 Function Select Registers PxSEL and PxSEL2

Port pins are often multiplexed with other peripheral module functions. See the

device-specific data sheet to determine pin functions. Each PxSEL and

PxSEL2 bit is used to select the pin function − I/O port or peripheral module

function.

PxSEL2 PxSEL Pin Function

0 0 I/O function is selected.

0 1 Primary peripheral module function is selected.

1 0 Reserved. See device-specific data sheet.

1 1 Secondary peripheral module function is selected.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Мануал я читал, примеры смотрел.. Но не работает :(

void ClockInit() {
  BCSCTL1 = CALBC1_1MHZ;
  DCOCTL = CALDCO_1MHZ;
}

void TAInit() {
  P2DIR |= 0x40;                            // P2.6 output
  P2SEL |= 0x40;                            // P2.6 TA1/2 options
  
  CCR0 = 512-1;                             // PWM Period
  CCTL1 = OUTMOD_7;                         // CCR1 reset/set
  CCR1 = 384;                               // CCR1 PWM duty cycle
  TACTL = TASSEL_2 + MC_1;                  // SMCLK, up mode
}

int main( void )
{
  // Stop watchdog timer to prevent time out reset
  WDTCTL = WDTPW + WDTHOLD;
  
  ClockInit();
  SD16Init();
  TAInit();
  
  while(1) {}
}

 

В результате P2.6 в воздухе, т.е. как выход не работает.

 

Если убрать бит P2SEL.6, можно управлять пином как простым выходом.

 

Ничего не понимаю..

 

Если заменить строчки:

  P2DIR |= 0x40;                            // P2.6 output
  P2SEL |= 0x40;                            // P2.6 TA1/2 options

 

На:

  P1DIR |= 0x40;                            // P1.6 output
  P1SEL |= 0x40;                            // P1.6 TA1/2 options

 

То все работает. На P1.6, естественно.

 

У меня запас идей закончился :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Мануал я читал, примеры смотрел.. Но не работает :(

...

У меня запас идей закончился :)

Вам два человека намекнули, что нужно смотреть не только мануал, но и datasheet. Посмотрите внимательно в datasheet схемотехнику пинов P2.6 и P2.7 и логики управления их функциями.

post-3882-1270758787_thumb.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, действительно, не заметил. Спасибо.

void ClockInit() {
  BCSCTL1 = CALBC1_1MHZ;
  BCSCTL3 = LFXT1S_3;
  DCOCTL = CALDCO_1MHZ;
}

Теперь работает.

Извините за мои глупые вопросы, больше не буду надоедать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...