1,6 → 1,8 |
#ifndef SPI_H |
#define SPI_H |
|
#include "defines.h" |
|
#define MAXSPIBUF 64 |
|
// Option to use interrupt. If interrupt are used, SPI write does not block but |
7,9 → 9,6 |
// there is a longer delay between reading/writing data |
//#define SPI2_USE_INTERRUPT |
|
// Option to write only |
#define SPI2_WRITE_ONLY |
|
// SPI speed selection |
#define SPI2_FOSC_64 0b0010 |
#define SPI2_FOSC_16 0b0001 |
17,10 → 16,12 |
#define SPI2_FOSC_4 0b0000 |
|
typedef struct __SPI_DATA { |
#ifndef SPI2_WRITE_ONLY |
unsigned char buffer_in[MAXSPIBUF]; |
unsigned char buffer_in_read_ind; |
unsigned char buffer_in_write_ind; |
unsigned char buffer_in_len; |
#endif |
|
unsigned char buffer_out[MAXSPIBUF]; |
unsigned char buffer_out_ind; |
28,12 → 29,14 |
} SPI_DATA; |
|
void SPI2_Init(unsigned char speed); |
void SPI2_Recv_Interrupt_Handler(void); |
void SPI2_Write(unsigned char *msg, unsigned int length); |
void SPI2_Write_Repeat(unsigned char c, unsigned int length); |
#ifndef SPI2_WRITE_ONLY |
void SPI2_Recv_Interrupt_Handler(void); |
void SPI2_Read(unsigned char length); |
unsigned char SPI2_Buffer_Len(void); |
unsigned char SPI2_Read_Buffer(unsigned char *buffer); |
#endif |
|
#endif /* SPI_H */ |
|