📄 extcc2420.h
字号:
#ifndef EXTCC2420_H
#define EXTCC2420_H
#include "global.h"
/***********************************************************
端口设置宏
***********************************************************/
// 端口初始化
// 禁止所有端口的上拉
// PORTB = BV(MOSI) | BV(SCK) | BV(CSN);
#define PORT_INIT() \
do { \
SFIOR |= BV(PUD);\
DDRB = BV(MOSI) | BV(SCK) | BV(CSN) | BV(VREG_EN); \
PORTB = BV(MOSI) | BV(SCK) | BV(CSN); \
DDRE = BV(RESET_N); \
PORTE = BV(RESET_N); \
DDRD = BV(RLED) | BV(GLED) | BV(YLED); \
PORTD = BV(RLED) | BV(YLED) | BV(GLED); \
} while (0)
// 使能/禁止SPI接口
#define SPI_ENABLE() (PORTB &= ~BV(CSN))
#define SPI_DISABLE() (PORTB |= BV(CSN))
/*******************************************************************************************************
CC2420引脚访问
*******************************************************************************************************/
// CC2420 引脚访问
// 引脚状态
#define SFD_IS_1 (!!(PINE & BV(SFD)))
#define CCA_IS_1 (!!(PINE & BV(CCA)))
#define FIFO_IS_1 (!!(PINE & BV(FIFO)))
#define FIFOP_IS_1 (!!(PINE & BV(FIFOP)))
#define VREG_IS_1 (!!(PINB & BV(VREG_EN)))
#define RESET_IS_1 (!!(PINE & BV(RESET_N)))
// CC2420重置引脚
#define SET_RESET_ACTIVE() PORTE &= ~BV(RESET_N)
#define SET_RESET_INACTIVE() PORTE |= BV(RESET_N)
// CC2420 电压调节器使能引脚
#define SET_VREG_ACTIVE() PORTB |= BV(VREG_EN)
#define SET_VREG_INACTIVE() PORTB &= ~BV(VREG_EN)
/*******************************************************************************************************
中断
*******************************************************************************************************/
#define INT7 7
#define INTF7 7
#define ISC71 7
#define ISC70 6
#define TOIE1 2
// 打开/关闭全局中断宏
#define ENABLE_GLOBAL_INT() do { asm ("SEI"); } while (0)
#define DISABLE_GLOBAL_INT() do { asm ("CLI"); } while (0)
// 外部中断7上升延触发(FIFOP)
#define FIFOP_INT_INIT() \
do { \
EICRB = BV(ISC71) | BV(ISC70); \
CLEAR_FIFOP_INT(); \
} while (0)
// 外部中断7上的FIFOP
#define ENABLE_FIFOP_INT() do { EIMSK |= BV(INT7); } while (0)
#define DISABLE_FIFOP_INT() do { EIMSK &= ~BV(INT7); } while (0)
#define CLEAR_FIFOP_INT() do { EIFR |= BV(INTF7); } while (0)
//timer1 interupt
#define ENABLE_TIMER1_INT() do { TIMSK |= BV(TOIE1); } while (0)
#define DISABLE_TIMER1_INT() do { TIMSK &= ~BV(TOIE1); } while (0)
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -