#include "cc1110-ext.h"
char __xdata at 0xfe00 packet[256] ;
+
+char __xdata at 0xfdf0 cfg[5] ;
+//! Save MDMCFG*
+void save_settings(){
+ cfg[0]=MDMCFG0;
+ cfg[1]=MDMCFG1;
+ cfg[2]=MDMCFG2;
+ cfg[3]=MDMCFG3;
+ cfg[4]=MDMCFG4;
+
+}
+//! Restore MDMCFG*
+void restore_settings(){
+ MDMCFG0=cfg[0];
+ MDMCFG1=cfg[1];
+ MDMCFG2=cfg[2];
+ MDMCFG3=cfg[3];
+ MDMCFG4=cfg[4];
+}
+
void carrier(){
// Set the system clock source to HS XOSC and max CPU speed,
// ref. [clk]=>[clk_xosc.c]
//FSCTRL0 = 0x00; // Frequency synthesizer control.
-
MDMCFG4 = 0x86; // Modem configuration.
MDMCFG3 = 0x83; // Modem configuration.
MDMCFG2 = 0x30; // Modem configuration.
//Disable interrupts.
RFTXRXIE=0;
+ save_settings();
+
//carrier();
- //idle a bit.
- RFST=RFST_SIDLE;
- while(MARCSTATE!=MARC_STATE_IDLE);
-
+
while(1){
//idle a bit.
- RFST=RFST_SFSTXON;
- while(MARCSTATE!=MARC_STATE_FSTXON);
+ RFST=RFST_SIDLE;
+ while(MARCSTATE!=MARC_STATE_IDLE);
+
+ restore_settings();
+ //idle a bit, unecessary
+ //RFST=RFST_SFSTXON;
+ //while(MARCSTATE!=MARC_STATE_FSTXON);
- sleepMillis(5);
+ //sleepMillis(5);
rxwait();
//idle w/ oscillator
- RFST=RFST_SFSTXON;
- while(MARCSTATE!=MARC_STATE_FSTXON);
+ //RFST=RFST_SFSTXON;
+ //while(MARCSTATE!=MARC_STATE_FSTXON);
//HALT;
//sleepMillis(500);
carrier();
RFON;
- sleepMillis(2000);
-
- //sleepMillis(500);
- HALT;
+ //sleepMillis(200);
+ //sleepMillis(100);
+ //sleepMillis(50);
+ sleepMillis(25);
+ //HALT;
}
}
RFST=RFST_SRX;
while(MARCSTATE!=MARC_STATE_RX);
+ /*
if(PKTCTRL0&1){
//auto length
while(i<len+3){ //len+3 if status is appended.
len=packet[0]; //First byte of the packet is the length.
}
}else{
+ */
//Fixed length
packet[i++]=PKTLEN;
- while(i<PKTLEN){
+ while(i<3){ //PKTLEN){
while(!RFTXRXIF); //Wait for byte to be ready.
RFTXRXIF=0; //Clear the flag.
packet[i++]=RFD; //Grab the next byte.
}
- }
+ //}
RFST = RFST_SIDLE; //End receive.
//This while loop can be used for filtering. Unused for now.