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

📄 common.h

📁 ppp拨号程序源代码采用atmel芯片c语言编
💻 H
📖 第 1 页 / 共 2 页
字号:
#define TXD1_ddPort		DDRD	// data direction
#define TXD1_Pin			3		//

#define CTS1_iPort			PIND	// input
#define CTS1_oPort			PORTD	// output
#define CTS1_ddPort		DDRD	// data direction
#define CTS1_Pin			4		//

#define RTS1_iPort			PIND	// input
#define RTS1_oPort			PORTD	// output
#define RTS1_ddPort		DDRD	// data direction
#define RTS1_Pin			5		//

#define SRAM_CS_oPort		PORTC	// output ................ Atmel STK300 board
#define SRAM_CS_ddPort		DDRC	// data direction ........ Atmel STK300 board
#define SRAM_CS_Pin		7		// pin ................... Atmel STK300 board

#endif

// *********************************************************************************
// TxCTL bits

#ifdef CPU_eZ8

#define TEN					7
#define TPOL				6
#define PRES2				5
#define PRES1				4
#define PRES0				3
#define TMODE2				2
#define TMODE1				1
#define TMODE0				0

#endif

// *********************************************************************************
// IRQ bits

#ifdef CPU_eZ8

// IRQ0
#define T2I					7
#define T1I					6
#define T0I					5
#define U0RXI				4
#define U0TXI				3
#define I2CI				2
#define SPII				1
#define ADCI				0

// IRQ0ENH/L
#define T2EN				7
#define T1EN				6
#define T0EN				5
#define U0REN				4
#define U0TEN				3
#define I2CEN				2
#define SPIEN				1
#define ADCEN				0

// IRQ1
#define PAD7I				7
#define PAD6I				6
#define PAD5I				5
#define PAD4I				4
#define PAD3I				3
#define PAD2I				2
#define PAD1I				1
#define PAD0I				0

// IRQ1ENH/L
#define PAD7EN				7
#define PAD6EN				6
#define PAD5EN				5
#define PAD4EN				4
#define PAD3EN				3
#define PAD2EN				2
#define PAD1EN				1
#define PAD0EN				0

// IRQ2
#define T3I					7
#define U1RXI				6
#define U1TXI				5
#define DMAI				4
#define PC3I				3
#define PC2I				2
#define PC1I				1
#define PC0I				0

// IRQ2ENH/L
#define T3EN				7
#define U1REN				6
#define U1TEN				5
#define DMAEN				4
#define C3EN				3
#define C2EN				2
#define C1EN				1
#define C0EN				0

// IRQES
#define IES7				7
#define IES6				6
#define IES5				5
#define IES4				4
#define IES3				3
#define IES2				2
#define IES1				1
#define IES0				0

// IRQPS
#define PAD7S				7
#define PAD6S				6
#define PAD5S				5
#define PAD4S				4
#define PAD3S				3
#define PAD2S				2
#define PAD1S				1
#define PAD0S				0

// IRQCTL
#define IRQE				7

#endif

// *********************************************************************************
// mower macros

#ifdef CPU_ATmega128

#define outp(val, reg)			(reg = val)
#define inp(reg)				(reg)

#define cbi(reg, bit)			(reg &= ~BIT(bit))
#define sbi(reg, bit)			(reg |= BIT(bit))

#define cbr(reg, mask)			(reg &= ~mask)
#define sbr(reg, mask)			(reg |= mask)

#define bit_is_set(reg, bit)	(reg & (1 << bit))
#define bit_is_clr(reg, bit)	(!(reg & (1 << bit)))

#endif

#define RLed_On		(RLed_oPort &= ~(1 << RLed_Pin))			//
#define RLed_Off	(RLed_oPort |= (1 << RLed_Pin))				//
#define RLed_Toggle	(RLed_oPort ^= (1 << RLed_Pin))				//

#define YLed_On		(YLed_oPort &= ~(1 << YLed_Pin))			//
#define YLed_Off	(YLed_oPort |= (1 << YLed_Pin))				//
#define YLed_Toggle	(YLed_oPort ^= (1 << YLed_Pin))				//

#define GLed_On		(GLed_oPort &= ~(1 << GLed_Pin))			//
#define GLed_Off	(GLed_oPort |= (1 << GLed_Pin))				//
#define GLed_Toggle	(GLed_oPort ^= (1 << GLed_Pin))				//

#define RTS0_OK		(RTS0_oPort &= ~(1 << RTS0_Pin))			// set low - allows the other end to send data
#define RTS0_STOP	(RTS0_oPort |= (1 << RTS0_Pin))				// set high - tells other end to stop sending
#define CTS0		(CTS0_iPort & (1 << CTS0_Pin))				//

#define RTS1_OK		(RTS1_oPort &= ~(1 << RTS1_Pin))			// set low - allows the other end to send data
#define RTS1_STOP	(RTS1_oPort |= (1 << RTS1_Pin))				// set high - tells other end to stop sending
#define CTS1		(CTS1_iPort & (1 << CTS1_Pin))				//

#define TestButton	(TestBut_iPort & (1 << TestBut_Pin))		//

#define SRAM_Enable	(SRAM_CS_oPort &= ~(1 << SRAM_CS_Pin))
#define SRAM_Disable	(SRAM_CS_oPort |= (1 << SRAM_CS_Pin))

// *********************************************************************************
// flags

#define Flags1_USB_Stuff		0	//
#define Flags1_USB_RxPacket		1	//
#define Flags1_ButtonPress		2	//
#define Flags1_UpdatingClock	3	//
#define Flags1_PPP_RxStuff		4	//
#define Flags1_Button			5	// set if the button was held pressed when booting up
#define Flags1_ADC				6	// 
#define Flags1_Debug			7	// set if to send debug info to the console

#define Flags2_gga				0
#define Flags2_rmc				1
#define Flags2_gsv				2
#define Flags2_gsa				3
#define Flags2_rtc				4

// *********************************************************************************

typedef union TIPAddr
{
	u8				ip8[4];	// access the ip as either 4 seperate bytes
	u32				ip32;	// ... or as a single 32-bit dword
} T_IP_Addr;

#define TCP_MaxSockets	8
/*
typedef struct TSRAM
{
	#ifdef IncludeTCP
	T_TCP_Socket_Ext	*TCP_Socket[TCP_MaxSockets];
	#endif

} T_SRAM;
*/
// *********************************************************************************
// constants in flash rom

extern flash u16		Version;
extern flash char		VersionStr[];

extern flash char		Title[];
extern flash char		Date[];

#ifdef CPU_ATmega128
//extern char			UnitID[32];	// located in eeprom
#endif

extern flash char		Str3[];

extern flash char		HelpStr[];

#ifdef Debug
extern flash char		Str4[];
#endif

// *********************************************************************************

#ifdef CPU_eZ8

extern near u8				LastResetReason;

extern volatile near u8		WatchdogCounter;

extern volatile near u8		Flags1;
extern volatile near u8		Flags2;

extern volatile near u8		TimerIntCounter;

extern volatile near u8		button_push;

extern volatile near u32	Random32;

extern near u16				MainBufferRd_Rx;
extern near s16				MainBufferWr_Rx;
extern near u16				MainBufferWr_Tx;

extern volatile near u8		UART0_RxBuffer[32];		// UART-0 ring buffer
extern volatile near u8		UART0_RxBufferWr;
extern volatile near u8		UART0_RxBufferRd;

extern volatile near u8		UART1_RxBuffer[96];		// UART-1 ring buffer
extern volatile near u8		UART1_RxBufferWr;
extern volatile near u8		UART1_RxBufferRd;

#endif

#ifdef CPU_ATmega128

extern u8				SRAM;					// external memory

extern u8				LastResetReason;

extern volatile u8		WatchdogCounter;

extern volatile u8		Flags1;
extern volatile u8		Flags2;

extern volatile u8		TimerIntCounter;

extern volatile u8		button_push;

extern volatile u32		Random32;

extern u16				MainBufferRd_Rx;
extern s16				MainBufferWr_Rx;
extern u16				MainBufferWr_Tx;

extern volatile u8		UART0_RxBuffer[32];			// UART-0 ring buffer
extern volatile u8		UART0_RxBufferWr;
extern volatile u8		UART0_RxBufferRd;

extern volatile u8		UART1_RxBuffer[96];			// UART-1 ring buffer
extern volatile u8		UART1_RxBufferWr;
extern volatile u8		UART1_RxBufferRd;

#endif

extern volatile u16		ADC_Input[8];			// this is where the ADC samples are saved too

extern u8				CommandBuffer[32];			// typed console commands end up in here
extern u8				ScratchPad[256];			// for misc use
extern u8				MainBuffer[MainBufferSize];	// the main ppp/udp/tcp etc input and output buffer - yes it's shared

// *********************************************************************************

#ifdef CPU_ATmega128
extern void _StackOverflowed(char c);

extern void EPROMWrite(u16 Addr, u8 Data);
extern u8 EPROMRead(u16 Addr);
extern void EPROMWrite_Data(u16 Addr, u8 *src, u16 len);
extern bool EPROMRead_Data(u16 Addr, u8 *dest, u16 len);

extern void Set_UnitID(char *s);
extern bool Get_UnitID(char *buf);
extern u16 SRAM_Test(void);
#endif

void u16_Put(volatile u16 *pnter, u16 w);
u16 u16_Get(volatile u16 *pnter);
s16 s16_Get(volatile s16 *pnter);
void u32_Put(volatile u32 *pnter, u32 dw);
u32 u32_Get(volatile u32 *pnter);

extern u32 htonl(u32 hostlong);
extern u16 htons(u16 hostshort);
extern u32 ntohl(u32 netlong);
extern u16 ntohs(u16 netshort);

extern int RingBufBytesFree(int BufSize, int Rd, int Wr);
extern int RingBufBytes(int BufSize, int Rd, int Wr);

extern int IP_Str(char *buf, u32 IP);

extern int rstrlen(RomChar *s);
extern void rstrcpy(char *dest, RomChar *src);
extern void rmemcpy(char *dest, RomChar *src, int len);

extern void SPI_Init(void);
extern u8 SPI_TxRxByte(u8 o);

extern void InitUart(char port, unsigned long baud);
extern void HardwareFlowControl(char Uart);
extern bool SendUartByte(char c, char Uart);
extern bool SendUartStr(char *s, char Uart);
extern bool SendUartRStr(RomChar *s, char Uart);
extern bool SendUartData(char *s, u16 len, char Uart);

extern bool SendConsoleByte(char c);
extern bool SendConsoleStr(char *s);
extern bool SendConsoleRStr(RomChar *s);
extern bool SendConsoleData(char *d, u16 len);

#ifdef Debug
extern bool SendDebugByte(char c);
extern bool SendDebugStr(char *s);
extern bool SendDebugRStr(RomChar *s);
extern bool SendDebugData(char *d, u16 len);
#endif

extern bool SendModemByte(char c);
extern bool SendModemRStr(RomChar *s);
extern bool SendModemStr(char *s);

#ifdef Debug
extern void SendDebugDataDump(u8 *Buf, int len);
extern void SendDebugAsciiDump(u8 *Buf, int len);
#endif

extern bool SendHelp(void);

extern int str2ipport(char *buf, u8 *ip, u16 *port);

extern void ProcessUART0(void);

extern int bin2bstr(u8 *Buffer, u32 num, int digits);
extern void strtrim(u8 *s, u8 c);
extern u8 *GetNextParam(u8 *out, u8 *in, u8 delimiter);
extern u8 HexChar2Bin(u8 ascii);

extern int CopyToRingBuffer(u8 *Dest, u8 *Src, int idx, int BufSize, int Bytes);
extern int CopyFromRingBuffer(u8 *Dest, u8 *Src, int idx, int BufSize, int Bytes);

extern void ProcessMainLoop(void);

// *********************************************************************************

#endif

⌨️ 快捷键说明

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