summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--main.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/main.c b/main.c
index 0d4dd8d..a23bbfa 100644
--- a/main.c
+++ b/main.c
@@ -38,7 +38,7 @@ static inline uint8_t read_reg(uint8_t reg)
return SPDR;
}
-static inline void write_reg(uint8_t reg, uint8_t val)
+static inline void spi_write(uint8_t reg, uint8_t val)
{
SPI_PORT &= ~(1 << SPI_SS);
SPDR = (reg & 0x1F) | 0x20;
@@ -50,6 +50,14 @@ static inline void write_reg(uint8_t reg, uint8_t val)
SPI_PORT |= (1 << SPI_SS);
}
+static inline void write_reg(uint8_t reg, uint8_t val)
+{
+ uint8_t i;
+
+ for (i = 0; read_reg(reg) != val && i < 10; i++)
+ spi_write(reg, val);
+}
+
static inline void print_config(void)
{
char s[22];
@@ -82,7 +90,7 @@ void radio_init(void)
write_reg(0x01, 0b00111111); /* enable auto ack on all pipes */
write_reg(0x02, 0b00000001); /* enable rx address on pipe 0 */
write_reg(0x03, 0b00000001); /* set address width to 3 bytes */
- write_reg(0x04, 0b00000000); /* disable auto retransmission */
+ write_reg(0x04, 0b00101111); /* 750uS retransmission delay, 15 tries */
write_reg(0x05, 0b01110011); /* use 2.515GHz channel */
write_reg(0x06, 0b00000110); /* set data rate to 1Mbps */
}