turn ftdi driver into echo server
[goodfet] / firmware / platforms / apimote.h
1 /*! \file apimote.h\r
2   \author Ryan Speers\r
3   \brief Port descriptions for the Apimote platform.\r
4 */\r
5 \r
6 #ifndef _GNU_ASSEMBLER_\r
7 #include <msp430.h>\r
8 #endif\r
9 \r
10 //LED on P5.5 (pin 49) (LED1 red)\r
11 #define PLEDOUT P5OUT\r
12 #define PLEDDIR P5DIR\r
13 #define PLEDPIN BIT5\r
14 //LED on P5.6 (pin 50) (LED2 green)\r
15 #define PLED2OUT P5OUT\r
16 #define PLED2DIR P5DIR\r
17 #define PLED2PIN BIT6\r
18 //LED on P5.7 (pin 51) (LED3 blue)\r
19 #define PLED3OUT P5OUT\r
20 #define PLED3DIR P5DIR\r
21 #define PLED3PIN BIT7\r
22 \r
23 //SPI\r
24 //TelosB:  29/3.1=RF_SI, 30/3.2=RF_SO, 31/3.3=RF_SCLK\r
25 //ApiMote: 29/3.1=RF_SI, 30/3.2=RF_SO, 31/3.3=RF_SCLK\r
26 #define SPIOUT P3OUT\r
27 #define SPIDIR P3DIR\r
28 #define SPIIN  P3IN\r
29 #define SPIREN P3REN\r
30 \r
31 /* For the radio to be used:\r
32    2.7 (!RST) must be low\r
33    2.0 (VREF_EN) must be high (cc2420-41 rf_vreg)\r
34    3.0 (!CS) must be low for the transaction.\r
35 */\r
36 \r
37 /* INITPLATFORM         PX.7  PX.6  PX.5  PX.4  PX.3  PX.2  PX.1  PX.0\r
38                         EXP_USR NC  EINT5 EINT4 EINT3 EINT2 MTXFRX EINT1\r
39   P1DIR = 0xff 11111111 In          In    In    In    In    Out    In\r
40   P1OUT = 0x00                                              Lo\r
41   P1IE  = 0xbd 10111101 Int         Int   Int   Int   Int          Int\r
42   P1IE @ 025h (UGpg341)                                     ^BSLTX\r
43 \r
44                         R_RST R_SFD RGIO1 R_PKT RGIO0 MRXFTX G_RST R_VREG\r
45   P2DIR = 0x83 10000011 Out   In    In    In    In    In     Out   Out\r
46   P2OUT = 0x81 10000001 Hi    Lo                             Lo?   Hi\r
47                                                       ^BSLRX\r
48 \r
49                         MRXFTXMTXFRX G_RX G_TX  RSCLK R_SO  R_SI  RF_CSn\r
50   P3DIR = 0x5b 01011011 In    Out    In   Out   Out   In    Out?  Out\r
51   P3OUT = 0x            Lo    Lo     Lo?  Lo?   Lo    Lo    Lo    Hi\r
52   P3SEL = 0xff 11111111 Pri   Pri    Pri  Pri   Pri   Pri   Pri   Pri \r
53   P3SEL2= 0x00 \r
54   (SEL2=0,SEL=1: Primary Peripheral Func; 1,1: Secondary Peripheral)\r
55  \r
56                         G_TST NC    F_CSn FHold R_ANT NC    NC    NC\r
57   P4DIR = 0xff 11111111 Out         Out   Out   Out   \r
58   P4OUT = 0x30 00110000 Lo?         Hi    Hi    Lo\r
59 \r
60                         LED3  LED2  LED1  NC    GSCLK G_SD  G_SI  G_CSn\r
61   P5DIR = 0xfb 11111011 Out   Out   Out         Out   In    Out   Out\r
62   P5OUT = 0x80 10000000 Hi    Hi    Hi          Lo?         Lo?   Lo?\r
63 \r
64                         ADC5  ADC4  ADC3  ADC2  ADC1  NC    BADC2 BADC1\r
65   P6DIR = 0xc7 11000111 Out   Out   In    In    In          Out   Out\r
66   P6OUT = 0x00          Lo    Lo                            Lo    Lo\r
67 */\r
68 \r
69 #define INITPLATFORM \\r
70   P2DIR |= BIT0+BIT7; \\r
71   P2OUT &= ~BIT7; \\r
72   P2OUT |= BIT0; \\r
73   P3DIR |= BIT0;\r
74 \r
75   /*\r
76   P1DIR = 0xe0;\\r
77   P1OUT = 0x00;\\r
78   P2DIR = 0x7b;\\r
79   P2OUT = 0x10;\\r
80   P3DIR = 0xf1;\\r
81   P3OUT = 0x00;\\r
82   P4DIR = 0xfd;\\r
83   P4OUT = 0xFd;\\r
84   P5DIR = 0xff;\\r
85   P5OUT = 0xff;\\r
86   P6DIR = 0xff;\\r
87   P6OUT = 0x00;\r
88   */\r
89 \r
90 \r
91 //RF Control\r
92 //TelosB:  Radio CS is 38/P4.2 (to CC2420 pin31)\r
93 //ApiMote: Radio CS is 28/P3.0\r
94 #define SETSS P3OUT|=BIT0\r
95 #define CLRSS P3OUT&=~BIT0\r
96 #define DIRSS P3DIR|=BIT0\r
97 \r
98 //CC2420 Chip Enable\r
99 //TelosB:  Radio RESETn is 42/P4.6 (to CC2420 pin21)\r
100 //ApiMote: Radio RESETn is 27/P2.7 (to CC2420 pin21)\r
101 #define SETCE P2OUT|=BIT7\r
102 #define CLRCE P2OUT&=~BIT7\r
103 #define DIRCE P2DIR|=BIT7\r
104 \r
105 //CC2420 signals\r
106 #define SFD   (P2IN&BIT6) //TelosB 37/P4.1 -> ApiMote 26/P2.6\r
107 #define FIFOP (P2IN&BIT4) //TelosB 12/P1.0 -> ApiMote 24/P2.4 (rf_pkt cc2420-29)\r
108 #define FIFO  (P2IN&BIT3) //TelosB 15/P1.3 -> ApiMote 23/P2.3 (rf_gio0 cc2420-30)\r
109 \r
110 // network byte order converters\r
111 #define htons(x) ((((uint16_t)(x) & 0xFF00) >> 8) | \\r
112                                  (((uint16_t)(x) & 0x00FF) << 8))\r
113 #define htonl(x) ((((uint32_t)(x) & 0xFF000000) >> 24) | \\r
114                                   (((uint32_t)(x) & 0x00FF0000) >> 8) | \\r
115                                   (((uint32_t)(x) & 0x0000FF00) << 8) | \\r
116                                   (((uint32_t)(x) & 0x000000FF) << 24))\r
117 \r
118 #define ntohs htons\r
119 #define ntohl htonl\r
120 \r