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

 
 
> MSP430F2618 и SPI
IBRO25
сообщение Oct 28 2011, 16:32
Сообщение #1





Группа: Новичок
Сообщений: 6
Регистрация: 28-10-11
Пользователь №: 68 021



Здравствуйте товарищи!!! возникла проблемка с SPI (вроде ничего сложного в интерфейсе, но всё же)... написал код:
Код
#include  "msp430f2618.h"
#include <stdio.h>
#include <math.h>

unsigned char MST_Data,SLV_Data;

void main(void)
{
  volatile unsigned int i;

  WDTCTL = WDTPW+WDTHOLD;                   // Stop watchdog timer
  if (CALBC1_1MHZ ==0xFF || CALDCO_1MHZ == 0xFF)                                    
  {  
    while(1);                              
                                          
  }    
  BCSCTL1 = CALBC1_1MHZ;                    
  DCOCTL = CALDCO_1MHZ;
  for(i=2100;i>0;i--);                    

  
  P3SEL = 0x3E;                            // порты и вторые ф-ции:SPI-B0 и UART
  P3DIR = 0x5B;                            // SPI-B0 & UART-A1 выбрано в соответствии с направлениями
  P3OUT = 0x31;                               // в соответствии

  UCB0CTL0 |= UCMSB+UCMST+UCSYNC;           // для ЦАП, по заднему и вниз, Mode_1  
  UCB0CTL1 |= UCSSEL_2;                     // SMCLK
  UCB0BR0 = 0x01;                           // /2
  UCB0BR1 = 0;                              //
  UCB0CTL1 &= ~UCSWRST;                     // **Initialize USCI state machine**
  IE2 |= UCB0RXIE;                        

  for(i=50;i>0;i--);                        

  MST_Data = 0x001;                        
  SLV_Data = 0x000;                      

  UCB0TXBUF = MST_Data;                    

  _BIS_SR(LPM0_bits + GIE);                


while(1)
{
  volatile unsigned int i;
  for (i=0xFFFF; i>0; i--);
  while (!(IFG2 & UCB0TXIFG));
  P3OUT &= -0x01;
  P3OUT |= 0x01;
  UCB0TXBUF = UCB0RXBUF;
}
}


вроде компилится, ошибок никаких... но к сожалению, данные не пересылает... пытаюсь разобраться... и дописать очистку мастерского буфера... подскажите, что не так и что я неправильно делаю? и... ещё вопросик: "если у меня приходят сигналы с двух различных источников в проц, как сделать флаги на эти сигналы на выход (чтобы понять, где первый сигнал, а где второй)?"

P.S. видел код по SPI для MSP430F149... но со своим кодом хотелось бы разобраться...

заранее благодарю за все советы и за всю полезную информацию...

Сообщение отредактировал IBRO25 - Oct 28 2011, 16:32
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
rezident
сообщение Nov 1 2011, 21:53
Сообщение #2


Гуру
******

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



IBRO25, у вас ошибка. Регистры PxSEL определяют функцию пина, подключая к нему какой-нибудь периферийный модуль. Направление же работы пина (вход или выход) задается конфигурацией регистров PxDIR. См. внимательно раздел Digital I/O в User's Guide, а справку по определению конфигурации пинов с помощью PxSEL и PxDIR см. в конце datasheet конкретного кристалла. Там обычно приводится блок-схема выходного каскада для каждого пина и таблица для конфигурации.
Для вашего случая конфигурация должна быть задана так.
Код
P2SEL &= ~(BIT6 | BIT7); //P2.6 и P2.7 функционируют как пины GPIO
P2DIR &= ~(BIT6 | BIT7); //P2.6 и P2.7 как входы GPIO
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 24th August 2025 - 06:45
Рейтинг@Mail.ru


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