summaryrefslogtreecommitdiff
path: root/src/ao_spi.c
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2011-07-09 16:59:16 -0700
committerKeith Packard <keithp@keithp.com>2011-08-13 18:46:12 -0700
commit30abbdc7ffcfc809b4a3fc31486fe968161ea225 (patch)
tree5f7735943d8bc54e5f6a478e168aebc054b215d6 /src/ao_spi.c
parent578c4b17b8f62f2727654ebda78ee139f9fe13fa (diff)
altos: Add SPI-based companion board support
This sends current flight state information and retrieves companion data to include in telemetry. Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'src/ao_spi.c')
-rw-r--r--src/ao_spi.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/ao_spi.c b/src/ao_spi.c
index bd52a0d4..fbe613c7 100644
--- a/src/ao_spi.c
+++ b/src/ao_spi.c
@@ -17,6 +17,10 @@
#include "ao.h"
+/* Shared mutex to protect SPI bus, must cover the entire
+ * operation, from CS low to CS high. This means that any SPI
+ * user must protect the SPI bus with this mutex
+ */
__xdata uint8_t ao_spi_mutex;
__xdata uint8_t ao_spi_dma_in_done;
__xdata uint8_t ao_spi_dma_out_done;
@@ -36,7 +40,6 @@ static __xdata uint8_t ao_spi_const = 0xff;
void
ao_spi_send(void __xdata *block, uint16_t len) __reentrant
{
- ao_mutex_get(&ao_spi_mutex);
ao_dma_set_transfer(ao_spi_dma_in_id,
&U0DBUFXADDR,
&ao_spi_const,
@@ -64,7 +67,6 @@ ao_spi_send(void __xdata *block, uint16_t len) __reentrant
ao_dma_trigger(ao_spi_dma_out_id);
__critical while (!ao_spi_dma_in_done)
ao_sleep(&ao_spi_dma_in_done);
- ao_mutex_put(&ao_spi_mutex);
}
/* Receive bytes over SPI.
@@ -76,7 +78,6 @@ ao_spi_send(void __xdata *block, uint16_t len) __reentrant
void
ao_spi_recv(void __xdata *block, uint16_t len) __reentrant
{
- ao_mutex_get(&ao_spi_mutex);
ao_dma_set_transfer(ao_spi_dma_in_id,
&U0DBUFXADDR,
block,
@@ -104,7 +105,6 @@ ao_spi_recv(void __xdata *block, uint16_t len) __reentrant
ao_dma_trigger(ao_spi_dma_out_id);
__critical while (!ao_spi_dma_in_done)
ao_sleep(&ao_spi_dma_in_done);
- ao_mutex_put(&ao_spi_mutex);
}
/*