Вот исходный текст
CODE
#define bitset(var,bitno) ((var) |= 1 << (bitno))
#define bitclr(var,bitno) ((var) &= ~(1 << (bitno)))
#define B1 BIT4&P4IN //B1 - P4.4
void initSPI();
void NSS_CONFIG(char SET);
void do_SPI1_start_TX();
//структуры для SPI
// структура передачи
typedef struct
{
char TXData[20];
char CurrByte;
char TotalToTX;
char TXBusy;
} __TX;
// структура приема
typedef struct
{
char RXData[20];
char CurrByte;
char TotalRXed;
} __RX;
__TX TX;
__RX RX;
#pragma vector=USART0TX_VECTOR
__interrupt void TxD()
{
if ((++TX.CurrByte < TX.TotalToTX)&&(TX.TXBusy))
{
U0TXBUF = TX.TXData[TX.CurrByte];// передача байтов из буффера
}
else
{
TX.TXBusy = 0;
TX.CurrByte = 0;
NSS_CONFIG(1); //end SPI Transaction - CS - в "1"
}
}
void initSPI()
{
P3SEL = 0x0E;
P3DIR = 0x0A;
U0CTL = SWRST + SYNC + CHAR + MM;
U0TCTL |= SSEL1 + STC + CKPH /*+ CKPL*/;
U0BR0 = 0x08;
U0BR1 = 0x00;
U0MCTL = 0x000;
ME1 = USPIE0;
U0CTL &= ~SWRST;
IE1 |= UTXIE0;
}
//setting NSS_Config Setting
void NSS_CONFIG(char SET)
{
if(SET)
bitset(P6OUT,7);
else
bitclr(P6OUT,7);
}
void do_SPI1_start_TX()
{
TX.TXBusy = 1;
TX.CurrByte=0;
RX.CurrByte=0;
NSS_CONFIG(0); //start SPI Transaction - CS - в "0"
U0TXBUF = TX.TXData[TX.CurrByte];
}
void main(void)
{
int flag = 0;
P6DIR |= 0x80;
bitset(P6OUT,7);
TX.TotalToTX = 2;
TX.TXData[0] = 0x2d; // просто для примера
TX.TXData[1] = 0x7d;
initSPI();
while(1)
{
if (((B1) == 0)&&(flag == 0)) //B1 is pressed
{
flag = 1;
do_SPI1_start_TX();
}
}
}
, все вроде предельно просто, но не работает

Вот используемая схема соединений