📄 modbus_reg.h.svn-base
字号:
unsigned RPM: 2; //RPM - Receiver Parity Mode (bits 3-2)
//00 = Odd Parity.
//01 = Low Parity.
//10 = Even Parity.
//11 = High Parity.
unsigned TPM: 2; //TPM - Transmitter Parity Mode (bits 1-0)
//00 = Odd Parity.
//01 = Low Parity.
//10 = Even Parity.
//11 = High Parity.
};
typedef struct SCCE{
unsigned : 3;
unsigned GLr: 1; //GLr - Glitch on RX (bit 12)
//A clock glitch was detected by this SCC on the receive clock.
unsigned GLt: 1; //GLt - Glitch on TX (bit 11)
//A clock glitch was detected by this SCC on the transmit clock.
unsigned : 2;
unsigned IDL: 1; //IDL - Idles Sequence Status Changed (bit 8)
//A change in the status of the serial line was detected on the PROFIBUS
//channel. The real-time status of the line may be read in SCCS. Idle is
//entered when one character of all ones is received. It is exited when a
//single zero is received.
unsigned : 5;
unsigned BSY: 1; //BSY - Busy Condition (bit 2)
//A character was received and discarded due to lack of buffers.
unsigned TX: 1; //TX - TX Buffer (bit 1)
//A buffer has been transmitted over the PROFIBUS channel.
unsigned RX: 1; //RX - RX Buffer (bit 0)
//A buffer has been received over the PROFIBUS channel.
};
typedef struct PBDATA{
unsigned : 14;
unsigned : 12;
unsigned pb5: 1;
unsigned : 4;
unsigned pb0: 1;
};
#define WDI (((struct PBDATA *)(REGB+0x06c4))->pb0)
#define READY (((struct PBDATA *)(REGB+0x06c4))->pb5)
#define SCC1_TX_READY (((struct TX_BD_ST*)(DPRBASE+0x420))->Ready)
#define SCC2_TX_READY (((struct TX_BD_ST*)(DPRBASE+0x460))->Ready)
#define SCC3_TX_READY (((struct TX_BD_ST*)(DPRBASE+0x4a0))->Ready)
#define SCC4_TX_READY (((struct TX_BD_ST*)(DPRBASE+0x4e0))->Ready)
//******************************************************************************************
//...scc1...
//******************************************************************************************
//******************************************************************************************
//...general registers of scc1...
//******************************************************************************************
//---------------------------------------------------------------------------------------------------------
//改为数组方式2008.2.14 by hqz
#define GSMR_L1_ADDR (REGB+0x0600) //GSMR_L:scc general mode register
//---------------------------------------------------------------------------------------------------------
#define GSMR_L1 (*(volatile DWORD *)GSMR_L1_ADDR) //GSMR_L:scc general mode register
#define GSMR_H1 (*((volatile DWORD *)(REGB+0x0604))) //GSMR_H:scc general mode register
#define PSMR1 (*((volatile WORD *)(REGB+0x0608))) //PSMR:scc protocol-specific(ProfiBus) mode register
#define TODR1 (*((volatile WORD *)(REGB+0x060c))) //TODR:scc transmit on demand
#define DSR1 (*((volatile WORD *)(REGB+0x060e))) //DSR:scc data sync. register
#define SCCE1 (*((volatile WORD *)(REGB+0x0610))) //SCCE:scc event register
#define SCCM1 (*((volatile WORD *)(REGB+0x0614))) //SCCM:scc mask register
#define SCCS1 (*((volatile BYTE *)(REGB+0x0617))) //SCCS:scc status register
//******************************************************************************************
//...scc1 parameter RAM common to ALL protocols...
//******************************************************************************************
#define RBASE1 (*((volatile WORD *)(SCC1_BASE+0x00))) //Rx BD base address
#define TBASE1 (*((volatile WORD *)(SCC1_BASE+0x02))) //Tx BD base address
#define RFCR1 (*((volatile BYTE *)(SCC1_BASE+0x04))) //Rx function code
#define TFCR1 (*((volatile BYTE *)(SCC1_BASE+0x05))) //Tx function code
#define MRBLR1 (*((volatile WORD *)(SCC1_BASE+0x06))) //Maximum receive buffer length
#define RSTATE1 (*((volatile DWORD *)(SCC1_BASE + 0x08))) //RCV State information about channel
#define R_PTR1 (*((volatile DWORD *)(SCC1_BASE + 0x0C))) //Pointer to next memory write location
#define RBPTR1 (*((volatile WORD *)(SCC1_BASE + 0x10))) //Pointer to current/next BD location
#define R_CNT1 (*((volatile WORD *)(SCC1_BASE + 0x12))) //Down count to end of frame or Buffer
#define TSTATE1 (*((volatile DWORD *)(SCC1_BASE + 0x18))) // TX State information about channel
#define T_PTR1 (*((volatile DWORD *)(SCC1_BASE + 0x1C))) //Pointer to next memory read location
#define TBPTR1 (*((volatile WORD *)(SCC1_BASE + 0x20))) //Porinter to current/next BD location
#define T_CNT1 (*((volatile WORD *)(SCC1_BASE + 0x22))) //Down count to end of Buffer
//******************************************************************************************
//...UART specific parameters of scc1...
//******************************************************************************************
#define MAX_IDL1 (*((volatile unsigned short *)(SCC1_BASE+0x38))) //Maximum Idle Characters
#define IDLC1 (*((volatile unsigned short *)(SCC1_BASE+0x3a))) //Temporary Idle Counter
#define BRKCR1 (*((volatile unsigned short *)(SCC1_BASE+0x3C))) //Break Counter Register(tx)
#define PAREC1 (*((volatile unsigned short *)(SCC1_BASE+0x3E))) //Receive Parity Error
#define FRMEC1 (*((volatile unsigned short *)(SCC1_BASE+0x40))) //Receive Framing Error
#define NOSEC1 (*((volatile unsigned short *)(SCC1_BASE+0x42))) //Receive Noise Counter
#define BRKEC1 (*((volatile unsigned short *)(SCC1_BASE+0x44))) //Receive Break Condition Counter
#define UADDR11 (*((volatile unsigned short *)(SCC1_BASE+0x48))) //Uart address character 1
#define UADDR12 (*((volatile unsigned short *)(SCC1_BASE+0x4A))) //Uart address character 2
#define TOSEQ1 (*((volatile unsigned short *)(SCC1_BASE+0x4e))) //Transmit out of sequence character
#define CHARACTER11 (*((volatile unsigned short *)(SCC1_BASE+0x50)))
#define CHARACTER12 (*((volatile unsigned short *)(SCC1_BASE+0x52)))
#define CHARACTER13 (*((volatile unsigned short *)(SCC1_BASE+0x54)))
#define CHARACTER14 (*((volatile unsigned short *)(SCC1_BASE+0x56)))
#define CHARACTER15 (*((volatile unsigned short *)(SCC1_BASE+0x58)))
#define CHARACTER16 (*((volatile unsigned short *)(SCC1_BASE+0x5a)))
#define CHARACTER17 (*((volatile unsigned short *)(SCC1_BASE+0x5c)))
#define CHARACTER18 (*((volatile unsigned short *)(SCC1_BASE+0x5e)))
#define RCCM1 (*((volatile unsigned short *)(SCC1_BASE+0x60))) //Receive control character mask
//******************************************************************************************
//...ProfiBus Buffer Descriptors (BDs)...
//******************************************************************************************
#define SCC1_RX_BD_BASE 0x0400
#define SCC1_TX_BD_BASE 0x0420
//---------------------------------------------------------------------------------------------------------
//改为数组方式2008.2.14 by hqz
#define SCC1_RX_BD0_ST_ADDR (DPRBASE+0x400)
#define SCC1_RX_BD0_LN_ADDR (DPRBASE+0x402)
#define SCC1_RX_BD0_PT_ADDR (DPRBASE+0x404)
#define SCC1_TX_BD0_ST_ADDR (DPRBASE+0x420)
#define SCC1_TX_BD0_LN_ADDR (DPRBASE+0x422)
#define SCC1_TX_BD0_PT_ADDR (DPRBASE+0x424)
//---------------------------------------------------------------------------------------------------------
#define SCC1_RX_BD0_ST (*(volatile WORD *)SCC1_RX_BD0_ST_ADDR)
#define SCC1_RX_BD0_LN (*(volatile WORD *)SCC1_RX_BD0_LN_ADDR)
#define SCC1_RX_BD0_PT (*(volatile DWORD * )SCC1_RX_BD0_PT_ADDR)
#define SCC1_RX_BD1_ST (*((volatile WORD *)(DPRBASE+0x408)))
#define SCC1_RX_BD1_LN (*((volatile WORD *)(DPRBASE+0x40A)))
#define SCC1_RX_BD1_PT (*((volatile DWORD * )(DPRBASE+0x40C)))
#define SCC1_TX_BD0_ST (*(volatile WORD *)SCC1_TX_BD0_ST_ADDR)
#define SCC1_TX_BD0_LN (*(volatile WORD *)SCC1_TX_BD0_LN_ADDR)
#define SCC1_TX_BD0_PT (*(volatile DWORD * )SCC1_TX_BD0_PT_ADDR)
#define SCC1_TX_BD1_ST (*((volatile WORD *)(DPRBASE+0x428)))
#define SCC1_TX_BD1_LN (*((volatile WORD *)(DPRBASE+0x42A)))
#define SCC1_TX_BD1_PT (*((volatile DWORD *)(DPRBASE+0x42C)))
//******************************************************************************************
//...scc2...
//******************************************************************************************
//******************************************************************************************
//...general registers of scc2...
//******************************************************************************************
//---------------------------------------------------------------------------------------------------------
//改为数组方式2008.2.14 by hqz
#define GSMR_L2_ADDR (REGB+0x0620) //GSMR_L:scc general mode register
//---------------------------------------------------------------------------------------------------------
#define GSMR_L2 (*(volatile DWORD *)GSMR_L2_ADDR) //GSMR_L:scc general mode register
#define GSMR_H2 (*((volatile DWORD *)(REGB+0x0624))) //GSMR_H:scc general mode register
#define PSMR2 (*((volatile WORD *)(REGB+0x0628))) //PSMR:scc protocol-specific(ProfiBus) mode register
#define TODR2 (*((volatile WORD *)(REGB+0x062c))) //TODR:scc transmit on demand
#define DSR2 (*((volatile WORD *)(REGB+0x062e))) //DSR:scc data sync. register
#define SCCE2 (*((volatile WORD *)(REGB+0x0630))) //SCCE:scc event register
#define SCCM2 (*((volatile WORD *)(REGB+0x0634))) //SCCM:scc mask register
#define SCCS2 (*((volatile BYTE *)(REGB+0x0637))) //SCCS:scc status register
//******************************************************************************************
//...scc2 parameter RAM common to ALL protocols...
//******************************************************************************************
#define RBASE2 (*((volatile WORD *)(SCC2_BASE+0x00))) //Rx BD base address
#define TBASE2 (*((volatile WORD *)(SCC2_BASE+0x02))) //Tx BD base address
#define RFCR2 (*((volatile BYTE *)(SCC2_BASE+0x04))) //Rx function code
#define TFCR2 (*((volatile BYTE *)(SCC2_BASE+0x05))) //Tx function code
#define MRBLR2 (*((volatile WORD *)(SCC2_BASE+0x06))) //Maximum receive buffer length
#define RSTATE2 (*((volatile DWORD *)(SCC2_BASE + 0x08))) //RCV State information about channel
#define R_PTR2 (*((volatile DWORD *)(SCC2_BASE + 0x0C))) //Pointer to next memory write location
#define RBPTR2 (*((volatile WORD *)(SCC2_BASE + 0x10))) //Pointer to current/next BD location
#define R_CNT2 (*((volatile WORD *)(SCC2_BASE + 0x12))) //Down count to end of frame or Buffer
#define TSTATE2 (*((volatile DWORD *)(SCC2_BASE + 0x18))) // TX State information about channel
#define T_PTR2 (*((volatile DWORD *)(SCC2_BASE + 0x1C))) //Pointer to next memory read location
#define TBPTR2 (*((volatile WORD *)(SCC2_BASE + 0x20))) //Porinter to current/next BD location
#define T_CNT2 (*((volatile WORD *)(SCC2_BASE + 0x22))) //Down count to end of Buffer
//******************************************************************************************
//...UART specific parameters of scc2...
//******************************************************************************************
#define MAX_IDL2 (*((volatile unsigned short *)(SCC2_BASE+0x38))) //Maximum Idle Characters
#define IDLC2 (*((volatile unsigned short *)(SCC2_BASE+0x3a))) //Temporary Idle Counter
#define BRKCR2 (*((volatile unsigned short *)(SCC2_BASE+0x3C))) //Break Counter Register(tx)
#define PAREC2 (*((volatile unsigned short *)(SCC2_BASE+0x3E))) //Receive Parity Error
#define FRMEC2 (*((volatile unsigned short *)(SCC2_BASE+0x40))) //Receive Framing Error
#define NOSEC2 (*((volatile unsigned short *)(SCC2_BASE+0x42))) //Receive Noise Counter
#define BRKEC2 (*((volatile unsigned short *)(SCC2_BASE+0x44))) //Receive Break Condition Counter
#define UADDR21 (*((volatile unsigned short *)(SCC2_BASE+0x48))) //Uart address character 1
#define UADDR22 (*((volatile unsigned short *)(SCC2_BASE+0x4A))) //Uart address character 2
#define TOSEQ2 (*((volatile unsigned short *)(SCC2_BASE+0x4e))) //Transmit out of sequence character
#define CHARACTER21 (*((volatile unsigned short *)(SCC2_BASE+0x50)))
#define CHARACTER22 (*((volatile unsigned short *)(SCC2_BASE+0x52)))
#define CHARACTER23 (*((volatile unsigned short *)(SCC2_BASE+0x54)))
#define CHARACTER24 (*((volatile unsigned short *)(SCC2_BASE+0x56)))
#define CHARACTER25 (*((volatile unsigned short *)(SCC2_BASE+0x58)))
#define CHARACTER26 (*((volatile unsigned short *)(SCC2_BASE+0x5a)))
#define CHARACTER27 (*((volatile unsigned short *)(SCC2_BASE+0x5c)))
#define CHARACTER28 (*((volatile unsigned short *)(SCC2_BASE+0x5e)))
#define RCCM2 (*((volatile unsigned short *)(SCC2_BASE+0x60))) //Receive control character mask
//******************************************************************************************
//...ProfiBus Buffer Descriptors (BDs)...
//******************************************************************************************
#define SCC2_RX_BD_BASE 0x0440
#define SCC2_TX_BD_BASE 0x0460
//---------------------------------------------------------------------------------------------------------
//改为数组方式2008.2.14 by hqz
#define SCC2_RX_BD0_ST_ADDR (DPRBASE+0x440)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -