Jump to content

    
Sign in to follow this  
servol

глюкавый msp430f2234

Recommended Posts

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

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

 

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

Share this post


Link to post
Share on other sites

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

 

P2DIR=LED_2;

// P2OUT=0;

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

 

P3DIR= LED_3 | LED_4 | Tx_EN | Rx_EN;

P3OUT= 0;

P3SEL= TxD | RxD;

Share this post


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

...

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

...

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

Share this post


Link to post
Share on other sites

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

 

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

 

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

BCSCTL1 = CALBC1_1MHZ,

DCOCTL = CALDCO_1MHZ,

Share this post


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

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

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

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

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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

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, естественно.

 

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

Share this post


Link to post
Share on other sites
Мануал я читал, примеры смотрел.. Но не работает :(

...

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

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

post-3882-1270758787_thumb.png

Share this post


Link to post
Share on other sites

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

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

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

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this