📄 cc1100.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 + -