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)
#define DRATE_E 10
#define DRATE_M 163
-#define PACKET_LEN 128
+#define PACKET_LEN 255
+
+/* 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,
main ()
{
CLKCON = 0;
+ while (!(SLEEP & SLEEP_XOSC_STB))
+ ;
/* Set P2_0 to output */
radio_init ();
delay(100);
- RFST = RFST_SIDLE;
- delay(100);
- RFST = RFST_STX;
- delay(100);
- for (;;);
-#if 0
+
for (;;) {
uint8_t i;
- for (i = 0; i < PACKET_LEN; i++) {
+ RFST = RFST_SIDLE;
+ delay(100);
+ RFST = RFST_STX;
+ for (i = 0; i < PACKET_LEN - 1; i++) {
while (!RFTXRXIF);
RFTXRXIF = 0;
RFD = 0x55;
}
+ delay(100);
}
-#endif
}