diff options
| author | Sadeep Madurange <sadeep@asciimx.com> | 2024-11-24 11:53:53 +0800 |
|---|---|---|
| committer | Sadeep Madurange <sadeep@asciimx.com> | 2024-11-24 11:53:53 +0800 |
| commit | cde3ab89cf48d246e1ae81fdcdbbed1234d225aa (patch) | |
| tree | 7cd1cfac6d45b8dd1a14c394655bb0af26dda9a8 /rf_test | |
| parent | 519e48ed2a3a15b529570f70d2615df998a2c182 (diff) | |
| download | smart-home-cde3ab89cf48d246e1ae81fdcdbbed1234d225aa.tar.gz | |
Send data.
Diffstat (limited to 'rf_test')
| -rw-r--r-- | rf_test/rfm.c | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/rf_test/rfm.c b/rf_test/rfm.c index 4928c4d..ab511ef 100644 --- a/rf_test/rfm.c +++ b/rf_test/rfm.c @@ -58,7 +58,6 @@ static inline void write_reg(uint8_t reg, uint8_t val) static inline void set_mode(uint8_t mode) { write_reg(0x01, mode); - while (!read_reg(0x27)) ; } @@ -82,6 +81,28 @@ void rfm_init(uint8_t addr) write_reg(0x3D, 0x02); } -void rfm_send(uint8_t addr, uint8_t data) +void rfm_send(uint8_t addr, uint8_t *data, uint8_t n) { + uint8_t i; + + set_mode(STDBY_MODE); + + SS_PORT |= (1 << SS_PIN); + + SPDR = 0x7F; + while (!(SPSR & (1 << SPIF))) + ; + + for (i = 0; i < n; i++) { + SPDR = data[i]; + while (!(SPSR & (1 << SPIF))) + ; + } + + SS_PORT &= ~(1 << SS_PIN); + + set_mode(TX_MODE); + + while (!((read_reg(0x28) >> 3) & 1)) + ; } |
