Subversion Repositories FlightCtrl

Rev

Rev 1180 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
827 ingob 1
// ######################## SPI - FlightCtrl ###################
2
#ifndef _SPI_H
3
#define _SPI_H
4
 
886 killagreg 5
//#include <util/delay.h>
6
#include <inttypes.h>
827 ingob 7
 
8
 
9
#define SPI_PROTOCOL_COMP   1
10
 
11
//-----------------------------------------
12
#define DDR_SPI DDRB
13
#define DD_SS   PB4
14
#define DD_SCK  PB7
15
#define DD_MOSI PB5
886 killagreg 16
#define DD_MISO PB6
827 ingob 17
 
886 killagreg 18
// for compatibility reasons gcc3.x <-> gcc4.x
19
#ifndef SPCR
827 ingob 20
#define SPCR   SPCR0
886 killagreg 21
#endif
1187 killagreg 22
#ifndef SPIE
23
#define SPIE   SPIE0
24
#endif
886 killagreg 25
#ifndef SPE
1187 killagreg 26
#define SPE    SPE0
886 killagreg 27
#endif
1187 killagreg 28
#ifdef  DORD
29
#define DORD   DORD0
30
#endif
886 killagreg 31
#ifndef MSTR
827 ingob 32
#define MSTR   MSTR0
886 killagreg 33
#endif
1187 killagreg 34
#ifndef CPOL
35
#define CPOL   CPOL0
36
#endif
37
#ifndef CPHA
38
#define CPHA   CPHA0
39
#endif
886 killagreg 40
#ifndef SPR1
827 ingob 41
#define SPR1   SPR01
886 killagreg 42
#endif
43
#ifndef SPR0
827 ingob 44
#define SPR0   SPR00
886 killagreg 45
#endif
1187 killagreg 46
 
886 killagreg 47
#ifndef SPDR
827 ingob 48
#define SPDR   SPDR0
886 killagreg 49
#endif
1187 killagreg 50
 
51
#ifndef SPSR
52
#define SPSR   SPSR0
53
#endif
886 killagreg 54
#ifndef SPIF
827 ingob 55
#define SPIF   SPIF0
886 killagreg 56
#endif
1187 killagreg 57
#ifndef WCOL
58
#define WCOL   WCOL0
886 killagreg 59
#endif
1187 killagreg 60
#ifndef SPI2X
61
#define SPI2X  SPI2X0
62
#endif
827 ingob 63
// -------------------------
64
 
65
#define SLAVE_SELECT_DDR_PORT   DDRC
66
#define SLAVE_SELECT_PORT       PORTC
67
#define SPI_SLAVE_SELECT        PC5
68
 
69
 
70
#define SPI_CMD_USER        10
71
#define SPI_CMD_STICK       11
1078 killagreg 72
#define SPI_CMD_MISC            12
936 killagreg 73
#define SPI_CMD_PARAMETER1      13
1078 killagreg 74
#define SPI_CMD_VERSION         14
886 killagreg 75
 
76
typedef struct
827 ingob 77
{
886 killagreg 78
        uint8_t Sync1;
79
        uint8_t Sync2;
80
        uint8_t Command;
911 killagreg 81
        int16_t IntegralNick;
886 killagreg 82
        int16_t IntegralRoll;
911 killagreg 83
        int16_t AccNick;
886 killagreg 84
        int16_t AccRoll;
85
        int16_t GyroHeading;
911 killagreg 86
        int16_t GyroNick;
886 killagreg 87
        int16_t GyroRoll;
88
        int16_t GyroYaw;
89
        union
90
        {
91
                int8_t  sByte[12];
92
                uint8_t Byte[12];
93
                int16_t Int[6];
94
                int32_t Long[3];
95
                float   Float[3];
96
        } Param;
97
        uint8_t Chksum;
1078 killagreg 98
} __attribute__((packed)) ToNaviCtrl_t;
827 ingob 99
 
886 killagreg 100
 
101
 
1078 killagreg 102
#define SPI_CMD_OSD_DATA        100
103
#define SPI_CMD_GPS_POS         101
104
#define SPI_CMD_GPS_TARGET      102
105
#define SPI_KALMAN                      103
886 killagreg 106
 
107
typedef struct
827 ingob 108
{
886 killagreg 109
        uint8_t Command;
1180 killagreg 110
        int16_t GPSStickNick;
111
        int16_t GPSStickRoll;
886 killagreg 112
        int16_t GPS_Yaw;
113
        int16_t CompassHeading;
114
        int16_t Status;
936 killagreg 115
        uint16_t BeepTime;
886 killagreg 116
        union
117
        {
118
                int8_t  Byte[12];
119
                int16_t Int[6];
120
                int32_t Long[3];
121
                float   Float[3];
122
        } Param;
123
        uint8_t Chksum;
1078 killagreg 124
} __attribute__((packed)) FromNaviCtrl_t;
827 ingob 125
 
126
 
1078 killagreg 127
typedef struct
128
{
129
        uint8_t Major;
130
        uint8_t Minor;
131
        uint8_t Patch;
132
        uint8_t Compatible;
133
} __attribute__((packed)) SPI_VersionInfo_t;
134
 
135
 
136
extern ToNaviCtrl_t                     ToNaviCtrl;
137
extern FromNaviCtrl_t                   FromNaviCtrl;
138
 
936 killagreg 139
void SPI_MasterInit(void);
140
void SPI_StartTransmitPacket(void);
141
void SPI_TransmitByte(void);
827 ingob 142
 
143
 
144
 
886 killagreg 145
#endif //_SPI_H