📄 common.h
字号:
#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 + -