From 631204a1feffa8cf3795060370b14dfb9f53f533 Mon Sep 17 00:00:00 2001 From: Camil Staps Date: Tue, 31 Jan 2017 23:15:28 +0100 Subject: WIP --- spi.h | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 spi.h (limited to 'spi.h') diff --git a/spi.h b/spi.h new file mode 100644 index 0000000..0402cfe --- /dev/null +++ b/spi.h @@ -0,0 +1,42 @@ +#ifndef _H_SPI +#define _H_SPI + +#include +#include +#include + +#include "spi_config.h" + +#define DUMMY_DATA 0xff + +#ifdef SPI_MSSP1 + #define SSPSTAT SSP1STAT + #define SSPSTATbits SSP1STATbits + #define SSPCON1 SSP1CON1 + #define SSPCON1bits SSP1CON1bits + #define SSPADD SSP1ADD + #define SSPBUF SSP1BUF +#else +#ifdef SPI_MSSP2 + #define SSPSTAT SSP2STAT + #define SSPSTATbits SSP2STATbits + #define SSPCON1 SSP2CON1 + #define SSPCON1bits SSP2CON1bits + #define SSPADD SSP2ADD + #define SSPBUF SSP2BUF +#else + #error define either SPI_MSSP1 or SPI_MSSP2 +#endif +#endif + +#define spi_tx(x) (spi_exchange(x)) +#define spi_rx() (spi_exchange(DUMMY_DATA)) + +void spi_init(void); +uint8_t spi_exchange(uint8_t data); +uint8_t spi_exchange_buffer(uint8_t *in, uint8_t buflen, uint8_t *out); +inline bool spi_is_buffer_full(void); +inline bool spi_has_write_collision_occured(void); +inline void spi_clear_write_collision_status(void); + +#endif -- cgit v1.2.3