Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: SPI Slave vs TimerB, today at MSP430F2274 arena
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > MSP430
Salazar
Здравствуйте, имею вот такую схему:



Ноги MSP430F2274:
P3.1 - UCB0SIMO
P3.2 - UCB0SOMI
P3.3 - UCB0CLK
P4.0 - TB0

Задача - организовать связь со сторонним MCU.
Насколько я понимаю, для данной схемы существует два варианта:
1) Использовать SPI
2) Написать самому обработчик прерываний от TimerB со считыванием/записью содержимого

С SPI Slave у меня проблема - Всё вроде правильно, и прерывание приходит и битрейт CLK совпадает, но данные фактически не передаются (читает всегда нули). Подозреваю конфликты.

Остаётся пытаться написать всё самому и попробывать "побороть" конфликты в более прозрачной битве.
Загвоздка на первом же этапе:
Как получить прерывание по событию "спадающий фронт" на ноге P4.0(TB0) ?

P.S.
Я новичёк в программировании микроконтроллеров.

P.P.S
Как шрифт Courier в теме сделать чтобы отображался?
Salazar
Дурная привычка - сначала спрашивать, а затем искать ответ на форуме...

Код
void InitExternMCU()
{
  P3DIR_bit.P3DIR_1 = PORT_INPUT;
  P3DIR_bit.P3DIR_2 = PORT_INPUT;
  P3DIR_bit.P3DIR_3 = PORT_INPUT;
  P4DIR_bit.P4DIR_0 = PORT_INPUT;
  
  P4SEL_bit.P4SEL_0 = 1;
  
  while (P3IN_bit.P3IN_3); // Just for check the extMCU sends CLK
  while (!P3IN_bit.P3IN_3);

  TBCTL = TBSSEL_1 + MC_2 + TBCLR;
  TBCCTL0 = CM_2 + SCS + CAP + CCIE;
  
  __bis_SR_register(GIE);
}

unsigned long tickCnt;
#pragma vector = TIMERB0_VECTOR
__interrupt void TIMERB0_VECTOR_code()
{
  tickCnt++;
}


И всё-же если кто заметит в коде неточности - пожалуйста сообщите.
CAHTA_1939
хм. а обязательно полу дуплекс делать? не проще использовать 4-ware соединение?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.