Код
#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;
}
}
#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... но со своим кодом хотелось бы разобраться...
заранее благодарю за все советы и за всю полезную информацию...