From f23e7f90d2cacea225fd1631fc289a1c11f76020 Mon Sep 17 00:00:00 2001 From: Oleg Hahm Date: Mon, 27 Jul 2015 20:14:17 +0200 Subject: [PATCH] cc2420: mask FSCTRL register for frequency access --- drivers/cc2420/cc2420.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/cc2420/cc2420.c b/drivers/cc2420/cc2420.c index 3190f051e2..cc2dc1edaa 100644 --- a/drivers/cc2420/cc2420.c +++ b/drivers/cc2420/cc2420.c @@ -162,7 +162,9 @@ int cc2420_set_channel(unsigned int chan) /* * calculation from http://www.ti.com/lit/ds/symlink/cc2420.pdf p.50 */ - uint16_t freq = 357 + (5 * (chan - 11)); + uint16_t freq= cc2420_read_reg(CC2420_REG_FSCTRL); + freq &= ~CC2420_FREQ_MASK; + freq |= (357 + (5 * (chan - 11))); cc2420_write_reg(CC2420_REG_FSCTRL, freq); return ((unsigned int) chan); } @@ -170,7 +172,7 @@ int cc2420_set_channel(unsigned int chan) unsigned int cc2420_get_channel(void) { /* undo calculation from cc2420_set_channel() */ - return ((cc2420_read_reg(CC2420_REG_FSCTRL) - 357) / 5) + 11; + return (((cc2420_read_reg(CC2420_REG_FSCTRL) & CC2420_FREQ_MASK) - 357) / 5) + 11; } uint16_t cc2420_set_address(uint16_t addr)