From a5bb06281011f4f0edd6f7b9331f149bd256d495 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karel=20Ko=C4=8D=C3=AD?= Date: Sun, 22 Mar 2015 14:05:00 +0100 Subject: SPI moved from src subfolder and mode changes SPI USI should now work. SPI USI is now documented. Removing architecture specific folders in src. --- spi_usi.h | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) (limited to 'spi_usi.h') 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 #include -#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 */ -- cgit v1.2.3