aboutsummaryrefslogtreecommitdiff
path: root/spi_usi.h
diff options
context:
space:
mode:
Diffstat (limited to 'spi_usi.h')
-rw-r--r--spi_usi.h31
1 files changed, 27 insertions, 4 deletions
diff --git a/spi_usi.h b/spi_usi.h
index 2e603ac..51a4f40 100644
--- a/spi_usi.h
+++ b/spi_usi.h
@@ -3,21 +3,44 @@
#include <avr/interrupt.h>
#include <inttypes.h>
-#include "mcu/mcu.h"
-
#ifndef _IOE_SPI_USI_H_
#define _IOE_SPI_USI_H_
+/*
+ * Initialize USI as SPI
+ *
+ * NOTE: Global interrupt must be enabled for right function.
+ * { SREG |= _BV(7) }
+ */
inline void ioe_spi_usi_init(void);
#ifdef IOE_SPI_USI_MASTER
+/*
+ * Swaps byte with slave over SPI.
+ */
inline int8_t ioe_spi_usi_transfer(int8_t data);
#else
+/*
+ * Expose data for next master request.
+ * Please don't use this when device is busy.
+ * Best place to call this is ioe_spi_usi_retrieve().
+ */
inline void ioe_spi_usi_expose(int8_t data);
-inline void ioe_spi_usi_expect(void);
-inline int ioe_spi_usi_ready(void);
+/*
+ * Returns NULL when device is no busy.
+ * When device is busy, returned value is number of already send bits.
+ */
+inline uint8_t ioe_spi_usi_busy(void);
+/*
+ * Blocks processor until device is not busy.
+ */
inline void ioe_spi_usi_join(void);
// Following function must be user defined
+/*
+ * This function must be defined by user.
+ * This function is called every time transfer is finished.
+ * And until return from this function interrupts are disabled.
+ */
inline void ioe_spi_usi_retrieve(int8_t data);
#endif /* IOE_SPI_USI_MASTER */