MSP430F2013 SPI mit Arduino

OP #4423880
Lesenswert?
• ▲
▼
Hi,
ich suche nach einer Möglichkeit um mit dem MSP430F2013 über SPI daten 
an ein Arduino Uno zu senden. Leider habe ich es noch nicht hin 
bekommen.

MSP430F2013 Beispiel Code:
SPI full-Duplex 3-wire Master
1
*******************************************************************************
2
 * 
3
 *                       MSP430 CODE EXAMPLE DISCLAIMER
4
 *
5
 * MSP430 code examples are self-contained low-level programs that typically
6
 * demonstrate a single peripheral function or device feature in a highly
7
 * concise manner. For this the code may rely on the device's power-on default
8
 * register values and settings such as the clock configuration and care must
9
 * be taken when combining code from several examples to avoid potential side
10
 * effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
11
 * for an API functional library-approach to peripheral configuration.
12
 *
13
 * --/COPYRIGHT--*/
14
//******************************************************************************
15
//  MSP430F20x2/3 Demo - SPI full-Duplex 3-wire Master
16
//
17
//  Description: SPI Master communicates full-duplex with SPI Slave using
18
//  3-wire mode. The level on P1.4 is TX'ed and RX'ed to P1.0.
19
//  Master will pulse slave reset for synch start.
20
//  ACLK = n/a, MCLK = SMCLK = Default DCO
21
//
22
//                Slave                      Master
23
//               MSP430F20x2/3              MSP430F20x2/3
24
//             -----------------          -----------------
25
//            |              XIN|-    /|\|              XIN|-
26
//            |                 |      | |                 |
27
//            |             XOUT|-     --|RST          XOUT|-
28
//            |                 | /|\    |                 |
29
//            |          RST/NMI|--+<----|P1.2             |
30
//      LED <-|P1.0             |        |             P1.4|<-
31
//          ->|P1.4             |        |             P1.0|-> LED
32
//            |         SDI/P1.7|<-------|P1.6/SDO         |
33
//            |         SDO/P1.6|------->|P1.7/SDI         |
34
//            |        SCLK/P1.5|<-------|P1.5/SCLK        |
35
//
36
//  M. Buccini / L. Westlund
37
//  Texas Instruments Inc.
38
//  October 2005
39
//  Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.40A
40
//******************************************************************************
41

42
#include <msp430.h>
43

44
int main(void)
45
{
46
  volatile unsigned int i;
47

48
  WDTCTL = WDTPW + WDTHOLD;             // Stop watchdog timer
49
  P1OUT =  0x10;                        // P1.4 set, else reset
50
  P1REN |= 0x10;                        // P1.4 pullup
51
  P1DIR = 0x01;                         // P1.0 output, else input
52
  USICTL0 |= USIPE7 +  USIPE6 + USIPE5 + USIMST + USIOE; // Port, SPI master
53
  USICTL1 |= USIIE;                     // Counter interrupt, flag remains set
54
  USICKCTL = USIDIV_4 + USISSEL_2;      // /16 SMCLK
55
  USICTL0 &= ~USISWRST;                 // USI released for operation
56
  USISRL = P1IN;                        // init-load data
57

58
  P1DIR |= 0x04;                        // Reset Slave
59
  P1DIR &= ~0x04;
60
  for (i = 0xFFF; i > 0; i--);          // Time for slave to ready
61
  USICNT = 8;                           // init-load counter
62
  __bis_SR_register(LPM0_bits + GIE);   // Enter LPM0 w/ interrupt
63
}
64

65
// USI interrupt service routine
66
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
67
#pragma vector=USI_VECTOR
68
__interrupt void universal_serial_interface(void)
69
#elif defined(__GNUC__)
70
void __attribute__ ((interrupt(USI_VECTOR))) universal_serial_interface (void)
71
#else
72
#error Compiler not supported!
73
#endif
74
{
75
  if (0x10 & USISRL)
76
    P1OUT |= 0x01;
77
  else
78
    P1OUT &= ~0x01;
79
  USISRL = P1IN;
80
  USICNT = 8;                           // re-load counter
81
}

SPI full-Duplex 3-wire Slave
1
//******************************************************************************
2
//  MSP430F20x2/3 Demo - SPI full-Duplex 3-wire Slave
3
//
4
//  Description: SPI Master communicates full-duplex with SPI Slave using
5
//  3-wire mode. The level on P1.4 is TX'ed and RX'ed to P1.0.
6
//  Master will pulse slave reset for synch start.
7
//  ACLK = n/a, MCLK = SMCLK = Default DCO
8
//
9
//                Slave                      Master
10
//               MSP430F20x2/3              MSP430F20x2/3
11
//             -----------------          -----------------
12
//            |              XIN|-    /|\|              XIN|-
13
//            |                 |      | |                 |
14
//            |             XOUT|-     --|RST          XOUT|-
15
//            |                 | /|\    |                 |
16
//            |          RST/NMI|--+<----|P1.2             |
17
//      LED <-|P1.0             |        |             P1.4|<-
18
//          ->|P1.4             |        |             P1.0|-> LED
19
//            |         SDI/P1.7|<-------|P1.6/SDO         |
20
//            |         SDO/P1.6|------->|P1.7/SDI         |
21
//            |        SCLK/P1.5|<-------|P1.5/SCLK        |
22
//
23
//  M. Buccini / L. Westlund
24
//  Texas Instruments Inc.
25
//  October 2005
26
//  Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.40A
27
//******************************************************************************
28

29
#include <msp430.h>
30

31
int main(void)
32
{
33
  WDTCTL = WDTPW + WDTHOLD;             // Stop watchdog timer
34
  P1OUT =  0x10;                        // P1.4 set, else reset
35
  P1REN |= 0x10;                        // P1.4 pullup
36
  P1DIR = 0x01;                         // P1.0 output, else input
37
  USICTL0 |= USIPE7 + USIPE6 + USIPE5 + USIOE; // Port, SPI slave
38
  USICTL1 |= USIIE;                     // Counter interrupt, flag remains set
39
  USICTL0 &= ~USISWRST;                 // USI released for operation
40
  USISRL = P1IN;                        // init-load data
41
  USICNT = 8;                           // init-load counter
42

43
  __bis_SR_register(LPM0_bits + GIE);   // Enter LPM0 w/ interrupt
44
}
45

46
// USI interrupt service routine
47
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
48
#pragma vector=USI_VECTOR
49
__interrupt void universal_serial_interface(void)
50
#elif defined(__GNUC__)
51
void __attribute__ ((interrupt(USI_VECTOR))) universal_serial_interface (void)
52
#else
53
#error Compiler not supported!
54
#endif
55
{
56
  if (0x10 & USISRL)
57
    P1OUT |= 0x01;
58
  else
59
    P1OUT &= ~0x01;
60
  USISRL = P1IN;
61
  USICNT = 8;                           // re-load counter
62
}

Bei Arduino weis ich nicht wie ich nun die MSP430F2013 werte 
auslesen/schreiben kann.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren