From 1af41c4c074f83bc777be4b6dd85e8408d03e5e5 Mon Sep 17 00:00:00 2001 From: NĂ©lio Laranjeiro Date: Tue, 12 Feb 2008 00:25:23 +0100 Subject: Removed the test_host. Update the interruption function. Debugged the driver source file. Init tested. --- digital/avr/modules/spi/spi.c | 43 ++++++++++++++++++++++++++++++------------- 1 file changed, 30 insertions(+), 13 deletions(-) (limited to 'digital/avr/modules/spi/spi.c') diff --git a/digital/avr/modules/spi/spi.c b/digital/avr/modules/spi/spi.c index e99055e0..1098b260 100644 --- a/digital/avr/modules/spi/spi.c +++ b/digital/avr/modules/spi/spi.c @@ -22,8 +22,20 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * }}} */ +#include "io.h" +#include "common.h" #include "spi.h" +#define SPI_DIRVER_SIGNAL SIGNAL_SPI + +/** For host */ +#ifdef HOST +static uint8_t SPCR; +static uint8_t SPDR; +static uint8_t SPSR; +static uint8_t SPIF; +#endif + /** Spi driver context. */ static spi_t spi_global; @@ -35,9 +47,10 @@ static spi_t spi_global; void spi_init(uint8_t sprc, spi_recv_cb_t cb, void *user_data) { - SPRC = sprc; - spi_global.cb = cb; + SPCR = sprc; + spi_global.recv_cb = cb; spi_global.recv_user_data = user_data; + spi_global.interruption = sprc >> 7; } /** Send a data to the Slave. @@ -45,9 +58,11 @@ spi_init(uint8_t sprc, spi_recv_cb_t cb, void *user_data) * \param length the length of the data in bytes. */ void -spi_send(uint8_t *data, u8 length) +spi_send(uint8_t *data, uint8_t length) { - uint i; + uint8_t i; + // enables the SPI if not enabled. + SPCR |= SPI_ENABLE; for ( i = 0; i < length; i++) { @@ -55,16 +70,19 @@ spi_send(uint8_t *data, u8 length) // automatically. SPDR = data[i]; - // Wait the end of the transmission. - while(!(SPSR & (1<