Subversion Repositories Code-Repo

Rev

Rev 123 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 123 Rev 147
Line 1... Line 1...
1
#ifndef SPI_H
1
#ifndef SPI_H
2
#define	SPI_H
2
#define	SPI_H
3
 
3
 
-
 
4
#include "defines.h"
-
 
5
 
4
#define MAXSPIBUF 64
6
#define MAXSPIBUF 64
5
 
7
 
6
// Option to use interrupt. If interrupt are used, SPI write does not block but
8
// Option to use interrupt. If interrupt are used, SPI write does not block but
7
//  there is a longer delay between reading/writing data
9
//  there is a longer delay between reading/writing data
8
//#define SPI2_USE_INTERRUPT
10
//#define SPI2_USE_INTERRUPT
9
 
11
 
10
// Option to write only
-
 
11
#define SPI2_WRITE_ONLY
-
 
12
 
-
 
13
// SPI speed selection
12
// SPI speed selection
14
#define SPI2_FOSC_64        0b0010
13
#define SPI2_FOSC_64        0b0010
15
#define SPI2_FOSC_16        0b0001
14
#define SPI2_FOSC_16        0b0001
16
#define SPI2_FOSC_8         0b1010
15
#define SPI2_FOSC_8         0b1010
17
#define SPI2_FOSC_4         0b0000
16
#define SPI2_FOSC_4         0b0000
18
 
17
 
19
typedef struct __SPI_DATA {
18
typedef struct __SPI_DATA {
-
 
19
#ifndef SPI2_WRITE_ONLY
20
    unsigned char buffer_in[MAXSPIBUF];
20
    unsigned char buffer_in[MAXSPIBUF];
21
    unsigned char buffer_in_read_ind;
21
    unsigned char buffer_in_read_ind;
22
    unsigned char buffer_in_write_ind;
22
    unsigned char buffer_in_write_ind;
23
    unsigned char buffer_in_len;
23
    unsigned char buffer_in_len;
-
 
24
#endif
24
 
25
 
25
    unsigned char buffer_out[MAXSPIBUF];
26
    unsigned char buffer_out[MAXSPIBUF];
26
    unsigned char buffer_out_ind;
27
    unsigned char buffer_out_ind;
27
    unsigned char buffer_out_len;
28
    unsigned char buffer_out_len;
28
} SPI_DATA;
29
} SPI_DATA;
29
 
30
 
30
void SPI2_Init(unsigned char speed);
31
void SPI2_Init(unsigned char speed);
31
void SPI2_Recv_Interrupt_Handler(void);
-
 
32
void SPI2_Write(unsigned char *msg, unsigned int length);
32
void SPI2_Write(unsigned char *msg, unsigned int length);
33
void SPI2_Write_Repeat(unsigned char c, unsigned int length);
33
void SPI2_Write_Repeat(unsigned char c, unsigned int length);
-
 
34
#ifndef SPI2_WRITE_ONLY
-
 
35
void SPI2_Recv_Interrupt_Handler(void);
34
void SPI2_Read(unsigned char length);
36
void SPI2_Read(unsigned char length);
35
unsigned char SPI2_Buffer_Len(void);
37
unsigned char SPI2_Buffer_Len(void);
36
unsigned char SPI2_Read_Buffer(unsigned char *buffer);
38
unsigned char SPI2_Read_Buffer(unsigned char *buffer);
-
 
39
#endif
37
 
40
 
38
#endif	/* SPI_H */
41
#endif	/* SPI_H */
39
 
42