Back to 0dBm
[fw/altos] / target / radio / radio.c
index 9f10fccdd61bfcabc043a896429ee2943cac2d40..90bc47f31f649e7c4674bbe9586b9e2990e0137c 100644 (file)
@@ -46,6 +46,11 @@ sfr at 0xE1 RFST;
 
 sfr at 0x88 TCON;
 
+sfr at 0xbe SLEEP;
+
+# define SLEEP_USB_EN          (1 << 7)
+# define SLEEP_XOSC_STB                (1 << 6)
+
 sbit at 0x89 RFTXRXIF;
 
 #define TCON_RFTXRXIF  (1 << 1)
@@ -416,15 +421,29 @@ low() {
 
 #define PACKET_LEN     128
 
+/* This are from the table for 433MHz */
+
+#define RF_POWER_M30_DBM       0x12
+#define RF_POWER_M20_DBM       0x0e
+#define RF_POWER_M15_DBM       0x1d
+#define RF_POWER_M10_DBM       0x34
+#define RF_POWER_M5_DBM                0x2c
+#define RF_POWER_0_DBM         0x60
+#define RF_POWER_5_DBM         0x84
+#define RF_POWER_7_DBM         0xc8
+#define RF_POWER_10_DBM                0xc0
+
+#define RF_POWER               RF_POWER_0_DBM
+
 static __code uint8_t radio_setup[] = {
-       RF_PA_TABLE7_OFF,       0x60,
-       RF_PA_TABLE6_OFF,       0x60,
-       RF_PA_TABLE5_OFF,       0x60,
-       RF_PA_TABLE4_OFF,       0x60,
-       RF_PA_TABLE3_OFF,       0x60,
-       RF_PA_TABLE2_OFF,       0x60,
-       RF_PA_TABLE1_OFF,       0x60,
-       RF_PA_TABLE0_OFF,       0x60,
+       RF_PA_TABLE7_OFF,       RF_POWER,
+       RF_PA_TABLE6_OFF,       RF_POWER,
+       RF_PA_TABLE5_OFF,       RF_POWER,
+       RF_PA_TABLE4_OFF,       RF_POWER,
+       RF_PA_TABLE3_OFF,       RF_POWER,
+       RF_PA_TABLE2_OFF,       RF_POWER,
+       RF_PA_TABLE1_OFF,       RF_POWER,
+       RF_PA_TABLE0_OFF,       RF_POWER,
 
        RF_FREQ2_OFF,           FREQ_CONTROL >> 16,
        RF_FREQ1_OFF,           FREQ_CONTROL >> 8,
@@ -504,6 +523,8 @@ radio_init() {
 main ()
 {
        CLKCON = 0;
+       while (!(SLEEP & SLEEP_XOSC_STB))
+               ;
        /* Set P2_0 to output */
        radio_init ();
        delay(100);