summaryrefslogtreecommitdiff
path: root/src/cc1111/ao_arch_funcs.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/cc1111/ao_arch_funcs.h')
-rw-r--r--src/cc1111/ao_arch_funcs.h19
1 files changed, 15 insertions, 4 deletions
diff --git a/src/cc1111/ao_arch_funcs.h b/src/cc1111/ao_arch_funcs.h
index 728f1f76..0a322961 100644
--- a/src/cc1111/ao_arch_funcs.h
+++ b/src/cc1111/ao_arch_funcs.h
@@ -21,9 +21,18 @@
extern __xdata uint8_t ao_spi_mutex;
-#define ao_spi_get_mask(reg,mask,bus) do { \
- ao_mutex_get(&ao_spi_mutex); \
- (reg) &= ~(mask); \
+#define AO_SPI_SPEED_FAST 17
+#define AO_SPI_SPEED_200kHz 13
+
+#define ao_spi_set_speed(speed) (U0GCR = (UxGCR_CPOL_NEGATIVE | \
+ UxGCR_CPHA_FIRST_EDGE | \
+ UxGCR_ORDER_MSB | \
+ ((speed) << UxGCR_BAUD_E_SHIFT)))
+
+#define ao_spi_get_mask(reg,mask,bus,speed) do { \
+ ao_mutex_get(&ao_spi_mutex); \
+ ao_spi_set_speed(speed); \
+ (reg) &= ~(mask); \
} while (0)
#define ao_spi_put_mask(reg,mask,bus) do { \
@@ -31,8 +40,10 @@ extern __xdata uint8_t ao_spi_mutex;
ao_mutex_put(&ao_spi_mutex); \
} while (0)
-#define ao_spi_get_bit(reg,bit,pin,bus) do { \
+
+#define ao_spi_get_bit(reg,bit,pin,bus,speed) do { \
ao_mutex_get(&ao_spi_mutex); \
+ ao_spi_set_speed(speed); \
pin = 0; \
} while (0)