📄 configure.h
字号:
/****************************************************************************
* Revision history:
*
*
* Created by
*
*
* Description:
*
*****************************************************************************/
/* Pin usage definitions */
#define PDATA 2 // PORTC, pin 2 25 IN/out
#define PCLK 3 // PORTC, pin 3 26 out
#define PALE 1 // PORTC, pin 1 24 out //也就是所谓的ID_EN引脚 谁说PALE就是ID_EN.Fuck!
#define ID_EN 5 // PORTB, pin 5 17 IN //就是ISP用到的SPI的SCK引脚.
#define DIO 5 // PORTC, pin 5 28 in/out
#define DCLK 4 // PORTC, pin 4 27 in //PCINT12
#define CAL_TIMEOUT 0x1FFE
#define LOCK_TIMEOUT 0x1FFE
//#define PA_VALUE 0xF0
#define PA_VALUE 0x0F
//记得使用MACRO的时候, 将DIO配置为合适的IN or OUT状态(DDRC)
#define SET_DIO() (PORTC |= (1<<DIO)) //DIO 置1
#define CLEAR_DIO() (PORTC &= ~(1<<DIO)) //DIO 置0
#define Read_DIO() ((PINC & (1<<DIO))>>DIO) //Read DIO
#define SET_DIO_OUTPUT (DDRC |= (1<<DIO)) //set DIO as ourput pin
#define SET_DIO_INPUT (DDRC &= ~(1<<DIO)) //set DIO as input pin
// ID_EN就是那个PEN.
#define SET_IDEN() (PORTB |= (1<<ID_EN)) //ID_EN 置1
#define CLEAR_IDEN() (PORTB &= ~(1<<ID_EN)) //ID_EN 置0
#define SET_IDEN_OUTPUT (DDRB |= (1<<ID_EN )) //set ID_EN as ourput pin
#define SET_IDEN_INPUT (DDRB &= ~(1<<ID_EN )) //set ID_EN as input pin
#define Enable_IDEN_PullUp (PORTB|=(1<<ID_EN)) //ID_EN 引脚的上拉电阻使能,
#define Read_IDEN() ((PINB & (1<<ID_EN))>>ID_EN) //Read ID_EN
/*****************************************************************************
All for Power saving Saving all that can be saved!!!! Save the World!!!!
*****************************************************************************/
//SleepMode selection and Enablation
#define ENABLE_SLEEP (SMCR |= 1) //mega48省电模式允许
#define SET_SLEEP_MODE SMCR |= (1<<1); \
SMCR |= (1<<2); \
SMCR &= ~(1<<3) //设置SleepMODE
#define WakeUp_SLEEP (SMCR &= ~1) // m4ga48省电模式禁止
//Change Mega48 Frequency in order to delay the needed time
#define HignFreq_8MHz() CLKPR=0x80; \
CLKPR=0x00 // 8MHz Frequency divider factor==1
#define LowFreq_62dot5KHz() CLKPR=0x80; \
CLKPR=0x06 // 8MHz/256 Frequency divider factor==256
//功耗抑制寄存器- PRR 设置 关闭任何不用的模块.
#define PRR_Close_all() PRR|=0xEF;
#define PRR_Close_TC1() (PRR |= (1<<PRTMR1))
#define PRR_Open_TC1() (PRR &= ~(1<<PRTMR1))
#define PRR_Close_TC2() (PRR |= (1<<PRTMR2))
#define PRR_Open_TC2() (PRR &= ~(1<<PRTMR2))
#define PRR_Close_USART0() (PRR |= (1<<PRUSART0)) //在Transmitter 里面仅仅调试用
#define PRR_Open_USART0() (PRR &= ~(1<<PRUSART0)) //在Transmitter 里面仅仅调试用
#define PRR_Close_SPI() (PRR |= (1<<PRSPI))
#define PRR_Open_SPI() (PRR &= ~(1<<PRSPI))
//开启T/C2定时
#define Start_TC2() \
ASSR=0x00; \ //Asynchronous Status Register 选择CLKi/o
TCCR2A=0x02; \ // CTC 模式
TCCR2B=0x07; \ // clkT2S/1024 (From prescaler)
TCNT2=0x00; \ //计数器初始值
OCR2A=0x3f; \ //Output Compare Register
OCR2B=0x00; \ //not used.
TIMSK2=0x02
#define Stop_TC2() \
TCCR2A=0x00; \
TCCR2B=0x00; \
TCNT2=0x00; \
OCR2A=0x00; \
TIMSK2=0x00
// Timer1 manipulation 125kHz
#define Start_TC1() \
TCCR1B=0x0B; \
OCR1AH=0x10; \
OCR1AL=0x00; \
TIMSK1=0x02;
#define Start_TC1_L() \
TCCR1B=0x0C; \
OCR1AH=0xEf; \
OCR1AL=0xff; \
TIMSK1=0x02;
#define Stop_TC1() \
TCCR1B=0x00; \
OCR1AH=0x00; \
OCR1AL=0x00; \
TIMSK1=0x00;
#define Reset_TC1() TCNT1H=0x00; \
TCNT1L=0x00;
//ASSR=0x00; \
//OCR2B=0x00; \
//void SetupCC1000All(void);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -