⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cc1100.c

📁 cc1100&atmega8
💻 C
字号:
#include  "includes.h"

#define SET_RAID_GDO0  PORTD|=_BV(P3)
#define CLR_RAID_GDO0  PORTD&=~_BV(P3)
#define CHECK_RAID_GDO0 (PIND&_BV(P3))
#define SETIN_GDO0  	 DDRD&=~_BV(P3)
#define SETOUT_GDO0  	 DDRD|=_BV(P3) 

#define SET_RAID_MISO  PORTD|=_BV(P6)
#define CLR_RAID_MISO  PORTD&=~_BV(P6)
#define CHECK_RAID_MISO (PIND&_BV(P6))
#define SETIN_MISO  	 DDRD&=~_BV(P6)
#define SETOUT_MISO  	 DDRD|=_BV(P6) 

#define SET_RAID_MOSI  PORTD|=_BV(P5)
#define CLR_RAID_MOSI  PORTD&=~_BV(P5)
#define SETIN_MOSI  	 DDRD&=~_BV(P5)
#define SETOUT_MOSI  	 DDRD|=_BV(P5) 

#define SET_RAID_SCK  PORTB|=_BV(P1)
#define CLR_RAID_SCK  PORTB&=~_BV(P1)
#define SETIN_SCK  	 DDRB&=~_BV(P1)
#define SETOUT_SCK  	 DDRB|=_BV(P1)

#define SET_RAID_CSN  PORTD|=_BV(P7)
#define CLR_RAID_CSN  PORTD&=~_BV(P7)
#define SETIN_CSN  	 DDRD&=~_BV(P7)
#define SETOUT_CSN  	 DDRD|=_BV(P7)

volatile unsigned char CC1100_STATE;
volatile unsigned char CC1100_RECE_FINISHED,CC1100_SEND_FINISHED;
volatile unsigned int TimeOutCheckMax,TimeOutCheckCounter;
volatile unsigned char WaitForRP;


///////////////////////////////////////默认配置///////////////////////////////////////

  // 数据白化 起始频率433MHz 通道间隔 405KHz 数据速率 250kbps 数据长度可变最大64Byte 开启前向FEC纠错
RF_SETTINGS Self_rfSettings = {
     0x06,   // FSCTRL1   Frequency synthesizer control.
    0x00,   // FSCTRL0   Frequency synthesizer control.
    0x10,   // FREQ2     Frequency control word, high byte.
    0xA7,   // FREQ1     Frequency control word, middle byte.
    0x62,   // FREQ0     Frequency control word, low byte.
    0xF5,   // MDMCFG4   Modem configuration.
    0x83,   // MDMCFG3   Modem configuration.
    0x03,   // MDMCFG2   Modem configuration.
    0xa3,   // MDMCFG1   Modem configuration.
    0xFF,   // MDMCFG0   Modem configuration.

    0x00,   // CHANNR    Channel number.
    0x15,   // DEVIATN   Modem deviation setting (when FSK modulation is enabled).
    0x56,   // FREND1    Front end RX configuration.
    0x10,   // FREND0    Front end RX configuration.
    0x18,   // MCSM0     Main Radio Control State Machine configuration.
    0x16,   // FOCCFG    Frequency Offset Compensation Configuration.
    0x6C,   // BSCFG     Bit synchronization Configuration.
    0x03,   // AGCCTRL2  AGC control.
    0x40,   // AGCCTRL1  AGC control.
    0x91,   // AGCCTRL0  AGC control.

    0xE9,   // FSCAL3    Frequency synthesizer calibration.
    0x2A,   // FSCAL2    Frequency synthesizer calibration.
    0x00,   // FSCAL1    Frequency synthesizer calibration.
    0x1F,   // FSCAL0    Frequency synthesizer calibration.
    0x59,   // FSTEST    Frequency synthesizer calibration.
    0x81,   // TEST2     Various test settings.
    0x35,   // TEST1     Various test settings.
    0x09,   // TEST0     Various test settings.
    0x06,   // IOCFG2    GDO2 output pin configuration.
    0x06,   // IOCFG0D   GDO0 output pin configuration. Refer to SmartRF?Studio User Manual for detailed pseudo register explanation.

    0x05,   // PKTCTRL1  Packet automation control.	 
    0x45,   // PKTCTRL0  Packet automation control.	 //可变长数据包,通过同步词汇后的第一个位置配置数据包长度
    0x01,   // ADDR      Device address.
    0x40    // PKTLEN    Packet length.	64bytes
};

volatile unsigned char patable[9]={0x68,0x6C,0x1C,0x06,0x3A,0x51,0x85,0xC8,0xC0};

//unsigned char default_PaTabel[8] = {0x68 ,0x68 ,0x68 ,0x68 ,0x68 ,0x68 ,0x68 ,0x68};//-30dbm

unsigned char default_PaTabel[8] = {0xC0 ,0xC0 ,0xC0 ,0xC0 ,0xC0 ,0xC0 ,0xC0 ,0xC0};//10dbm


/*ISR(TIMER1_CAPT_vect)
{
	if(CC1100_STATE==CC1100_RECE)
	{
		CC1100_RECE_FINISHED=1;
	}
	else if(CC1100_STATE==CC1100_SEND)
	{
		CC1100_SEND_FINISHED=1;
		LED_Flash(SENSOR_STATUS_LED,LED_FLASH_OPERA_START|LED_FLASH_OPREA_TOGGLE_PER_256MS);
	}
}*/
ISR(INT1_vect)
{
	LED_Toggle(SENSOR_STATUS_LED);
	if(CC1100_STATE==CC1100_RECE)
	{
		CC1100_RECE_FINISHED=1;
	}
	else if(CC1100_STATE==CC1100_SEND)
	{
		CC1100_SEND_FINISHED=1;
		LED_Flash(SENSOR_STATUS_LED,LED_FLASH_OPERA_START|LED_FLASH_OPREA_TOGGLE_PER_256MS);
	}
}

ISR(TIMER2_OVF_vect) //用于接收超时检测 中断间隔最大32MS
{

	if(TimeOutCheckCounter<TimeOutCheckMax)
	{
		TimeOutCheckCounter++;
	}
	else
	{
		TimeOutCheckCounter=0;
		WaitForRP=0;
		TCCR2&=~(_BV(CS22)|_BV(CS21)|_BV(CS20));//1024分频
	}
}


//*****************************************************************************************
//函数名

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -