summaryrefslogtreecommitdiff
path: root/software/rda1846dongle/rda1846.c
diff options
context:
space:
mode:
authorChristian Pointner <equinox@mur.at>2013-03-21 04:43:42 +0000
committerChristian Pointner <equinox@mur.at>2013-03-21 04:43:42 +0000
commit77b8c6554f45080e0c38101537c392bb7bfb11f7 (patch)
treec977ef1743b25c3fcc0640c010f553705a985626 /software/rda1846dongle/rda1846.c
parentfirst working receive (diff)
basic RX/TX works now
git-svn-id: https://svn.spreadspace.org/mur.sat@704 7de4ea59-55d0-425e-a1af-a3118ea81d4c
Diffstat (limited to 'software/rda1846dongle/rda1846.c')
-rw-r--r--software/rda1846dongle/rda1846.c107
1 files changed, 63 insertions, 44 deletions
diff --git a/software/rda1846dongle/rda1846.c b/software/rda1846dongle/rda1846.c
index fec9c05..eeb5ba1 100644
--- a/software/rda1846dongle/rda1846.c
+++ b/software/rda1846dongle/rda1846.c
@@ -1,24 +1,33 @@
/*
- * spreadspace avr utils
*
+ * mur.sat
*
- * Copyright (C) 2013 Christian Pointner <equinox@spreadspace.org>
- * Othmar Gsenger <otti@wirdorange.org>
+ * Somewhen in the year 2012, mur.at will have a nano satellite launched
+ * into a low earth orbit (310 km above the surface of our planet). The
+ * satellite itself is a TubeSat personal satellite kit, developed and
+ * launched by interorbital systems. mur.sat is a joint venture of mur.at,
+ * ESC im Labor and realraum.
*
- * This file is part of spreadspace avr utils.
+ * Please visit the project hompage at sat.mur.at for further information.
*
- * spreadspace avr utils is free software: you can redistribute it and/or modify
+ *
+ * Copyright (C) 2013 Christian Pointner <equinox@mur.at>
+ *
+ * This file is part of mur.sat.
+ *
+ * mur.sat is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* any later version.
*
- * spreadspace avr utils is distributed in the hope that it will be useful,
+ * mur.sat is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
- * along with spreadspace avr utils. If not, see <http://www.gnu.org/licenses/>.
+ * along with mur.sat. If not, see <http://www.gnu.org/licenses/>.
+ *
*/
#include "LUFA/Drivers/Peripheral/TWI.h"
@@ -109,15 +118,17 @@ static uint8_t rda1846_read_register(const uint8_t addr, uint16_t* data)
}
-void rda1846_soft_reset(void)
-{
- rda1846_write_register(RDA1846_REG_CTL, RDA1846_CTL_SOFT_RST);
-}
void rda1846_init(void)
{
TWI_Init(TWI_BIT_PRESCALE_1, TWI_BITLENGTH_FROM_FREQ(1, 200000));
- // switch to 2m Band (134 ~ 174 MHz)
+}
+
+void rda1846_reg_init(void)
+{
+ rda1846_write_register(RDA1846_REG_CTL, RDA1846_CTL_SOFT_RST);
+ rda1846_write_register(RDA1846_REG_CTL, RDA1846_CTL_PDN);
+
rda1846_write_register(RDA1846_REG_RF_BAND, RDA1846_RF_BAND_2M);
// rda1846_write_register(RDA1846_REG_RF_BAND, RDA1846_RF_BAND_70CM);
@@ -126,11 +137,12 @@ void rda1846_init(void)
rda1846_write_register(RDA1846_REG_ADCLK, RDA1846_ADCLK_FREQ);
rda1846_write_register(RDA1846_REG_CLK_MODE, RDA1846_CLK_MODE);
- rda1846_write_register(RDA1846_REG_CTL, RDA1846_CTL_CH_12K5 | RDA1846_CTL_RX_M_TX_M);
+// rda1846_write_register(RDA1846_REG_CTL, RDA1846_CTL_CH_12K5 | RDA1846_CTL_RX_M_TX_M | RDA1846_CTL_PDN);
+ rda1846_write_register(RDA1846_REG_CTL, RDA1846_CTL_CH_25K | RDA1846_CTL_RX_M_TX_M | RDA1846_CTL_PDN);
// rda1846_write_register(RDA1846_REG_TX_VOICE, RDA1846_TX_VOICE_NONE);
-// rda1846_write_register(RDA1846_REG_TX_VOICE, RDA1846_TX_VOICE_MIC);
- rda1846_write_register(RDA1846_REG_TX_VOICE, RDA1846_TX_VOICE_TONE2);
+ rda1846_write_register(RDA1846_REG_TX_VOICE, RDA1846_TX_VOICE_MIC);
+// rda1846_write_register(RDA1846_REG_TX_VOICE, RDA1846_TX_VOICE_TONE2);
// rda1846_write_register(RDA1846_REG_DTMF_CTL, RDA1846_DTMF_DUAL | RDA1846_DTMF_EN);
// rda1846_write_register(RDA1846_REG_INT, RDA1846_INT_DTMF_IDLE);
@@ -138,35 +150,9 @@ void rda1846_init(void)
rda1846_gpio_default();
}
-void rda1846_gpio_default(void)
-{
- rda1846_write_register(RDA1846_REG_GPIO, RDA1846_GPIO_7_VOX | RDA1846_GPIO_6_SQ |
- RDA1846_GPIO_5_TXON_RF | RDA1846_GPIO_4_RXON_RF |
- RDA1846_GPIO_2_INT);
-}
-
-void rda1846_gpio_AA(void)
-{
- rda1846_write_register(RDA1846_REG_GPIO, RDA1846_GPIO_7_HIGH | RDA1846_GPIO_6_LOW |
- RDA1846_GPIO_5_HIGH | RDA1846_GPIO_4_LOW |
- RDA1846_GPIO_3_HIGH | RDA1846_GPIO_2_LOW |
- RDA1846_GPIO_1_HIGH | RDA1846_GPIO_0_LOW);
-}
-
-void rda1846_gpio_55(void)
-{
- rda1846_write_register(RDA1846_REG_GPIO, RDA1846_GPIO_7_LOW | RDA1846_GPIO_6_HIGH |
- RDA1846_GPIO_5_LOW | RDA1846_GPIO_4_HIGH |
- RDA1846_GPIO_3_LOW | RDA1846_GPIO_2_HIGH |
- RDA1846_GPIO_1_LOW | RDA1846_GPIO_0_HIGH);
-}
-
-void rda1846_gpio_off(void)
+void rda1846_soft_reset(void)
{
- rda1846_write_register(RDA1846_REG_GPIO, RDA1846_GPIO_7_HI_Z | RDA1846_GPIO_6_HI_Z |
- RDA1846_GPIO_5_HI_Z | RDA1846_GPIO_4_HI_Z |
- RDA1846_GPIO_3_HI_Z | RDA1846_GPIO_2_HI_Z |
- RDA1846_GPIO_1_HI_Z | RDA1846_GPIO_0_HI_Z);
+ rda1846_write_register(RDA1846_REG_CTL, RDA1846_CTL_SOFT_RST);
}
void rda1846_powerdown(void)
@@ -222,6 +208,39 @@ void rda1846_transmit(void)
rda1846_write_register(RDA1846_REG_CTL, data);
}
+
+void rda1846_gpio_default(void)
+{
+ rda1846_write_register(RDA1846_REG_GPIO, RDA1846_GPIO_7_VOX | RDA1846_GPIO_6_SQ |
+ RDA1846_GPIO_5_TXON_RF | RDA1846_GPIO_4_RXON_RF |
+ RDA1846_GPIO_2_INT);
+}
+
+void rda1846_gpio_AA(void)
+{
+ rda1846_write_register(RDA1846_REG_GPIO, RDA1846_GPIO_7_HIGH | RDA1846_GPIO_6_LOW |
+ RDA1846_GPIO_5_HIGH | RDA1846_GPIO_4_LOW |
+ RDA1846_GPIO_3_HIGH | RDA1846_GPIO_2_LOW |
+ RDA1846_GPIO_1_HIGH | RDA1846_GPIO_0_LOW);
+}
+
+void rda1846_gpio_55(void)
+{
+ rda1846_write_register(RDA1846_REG_GPIO, RDA1846_GPIO_7_LOW | RDA1846_GPIO_6_HIGH |
+ RDA1846_GPIO_5_LOW | RDA1846_GPIO_4_HIGH |
+ RDA1846_GPIO_3_LOW | RDA1846_GPIO_2_HIGH |
+ RDA1846_GPIO_1_LOW | RDA1846_GPIO_0_HIGH);
+}
+
+void rda1846_gpio_off(void)
+{
+ rda1846_write_register(RDA1846_REG_GPIO, RDA1846_GPIO_7_HI_Z | RDA1846_GPIO_6_HI_Z |
+ RDA1846_GPIO_5_HI_Z | RDA1846_GPIO_4_HI_Z |
+ RDA1846_GPIO_3_HI_Z | RDA1846_GPIO_2_HI_Z |
+ RDA1846_GPIO_1_HI_Z | RDA1846_GPIO_0_HI_Z);
+}
+
+
int16_t rda1846_get_rssi(void)
{
uint16_t data;
@@ -289,7 +308,7 @@ uint8_t rda1846_set_freq_kHz(int32_t freq)
/* return 1; */
freq = freq<<3;
- uint8_t ret = rda1846_write_register(RDA1846_REG_FREQH, ((freq>>16) & 0x0000FFFF));
+ uint8_t ret = rda1846_write_register(RDA1846_REG_FREQH, ((freq>>16) & 0x00003FFF));
if(ret)
return 1;