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

📄 mc68681.h

📁 RTEMS (Real-Time Executive for Multiprocessor Systems) is a free open source real-time operating sys
💻 H
字号:
/* * mc68681-duart.h -- Low level support code for the Motorola mc68681 *                   DUART. * *  Originally written by rob@cygnus.com (Rob Savoye) for the libgloss *    IDP support. * *  $Id: mc68681.h,v 1.3 1998/09/11 19:17:49 joel Exp $ */#ifndef __MC68681_H__#define __MC68681_H__/* *  In the dark ages when this controller was designed, it was actually *  possible to access data on unaligned byte boundaries with no penalty. *  Now we find this chip in configurations in which the registers are *  at 16-bit, 32-bit, and 64-bit boundaries at the whim of the board *  designer.  If the registers are not at byte addresses, then *  set this multiplier before including this file to correct the offsets. */#ifndef MC68681_OFFSET_MULTIPLIER#define MC68681_OFFSET_MULTIPLIER 1#endif#define __MC68681_REG(_R) ((_R) * MC68681_OFFSET_MULTIPLIER)/* * mc68681 register offsets Read/Write Addresses */#define MC68681_MODE_REG_1A  __MC68681_REG(0)  /* MR1A-MR Prior to Read */#define MC68681_MODE_REG_2A  __MC68681_REG(0)  /* MR2A-MR After Read    */#define MC68681_COUNT_MODE_CURRENT_MSB       __MC68681_REG(6)  /* CTU   */#define MC68681_COUNTER_TIMER_UPPER_REG      __MC68681_REG(6)  /* CTU   */#define MC68681_COUNT_MODE_CURRENT_LSB       __MC68681_REG(7)  /* CTL   */#define MC68681_COUNTER_TIMER_LOWER_REG      __MC68681_REG(7)  /* CTL   */#define MC68681_INTERRUPT_VECTOR_REG         __MC68681_REG(12) /* IVR   */#define MC68681_MODE_REG_1B  __MC68681_REG(8)  /* MR1B-MR Prior to Read */#define MC68681_MODE_REG_2B  __MC68681_REG(8)  /* MR2BA-MR After Read   *//* * mc68681 register offsets Read Only  Addresses */#define MC68681_STATUS_REG_A                __MC68681_REG(1)   /* SRA   */#define MC68681_MASK_ISR_REG                __MC68681_REG(2)   /* MISR  */#define MC68681_RECEIVE_BUFFER_A            __MC68681_REG(3)   /* RHRA  */#define MC68681_INPUT_PORT_CHANGE_REG       __MC68681_REG(4)   /* IPCR  */#define MC68681_INTERRUPT_STATUS_REG        __MC68681_REG(5)   /* ISR   */#define MC68681_STATUS_REG_B                __MC68681_REG(9)   /* SRB   */#define MC68681_RECEIVE_BUFFER_B            __MC68681_REG(11)  /* RHRB  */#define MC68681_INPUT_PORT                  __MC68681_REG(13)  /* IP    */#define MC68681_START_COUNT_CMD             __MC68681_REG(14)  /* SCC   */#define MC68681_STOP_COUNT_CMD              __MC68681_REG(15)  /* STC   *//* * mc68681 register offsets Write Only  Addresses */#define MC68681_CLOCK_SELECT_REG_A          __MC68681_REG(1)   /* CSRA  */#define MC68681_COMMAND_REG_A               __MC68681_REG(2)   /* CRA   */#define MC68681_TRANSMIT_BUFFER_A           __MC68681_REG(3)   /* THRA  */#define MC68681_AUX_CTRL_REG                __MC68681_REG(4)   /* ACR   */#define MC68681_INTERRUPT_MASK_REG          __MC68681_REG(5)   /* IMR   */#define MC68681_CLOCK_SELECT_REG_B          __MC68681_REG(9)   /* CSRB  */#define MC68681_COMMAND_REG_B               __MC68681_REG(10)  /* CRB   */#define MC68681_TRANSMIT_BUFFER_B           __MC68681_REG(11)  /* THRB  */#define MC68681_OUTPUT_PORT_CONFIG_REG      __MC68681_REG(13)  /* OPCR  */#define MC68681_OUTPUT_PORT_SET_REG         __MC68681_REG(14)  /* SOPBC */#define MC68681_OUTPUT_PORT_RESET_BITS      __MC68681_REG(15)  /* COPBC */#ifndef MC6681_VOL#define MC6681_VOL( ptr )   ((volatile unsigned char *)(ptr))#endif#define MC68681_WRITE( _base, _reg, _data ) \   *((volatile unsigned char *)_base+_reg) = (_data)#define MC68681_READ( _base, _reg ) \   *(((volatile unsigned char *)_base+_reg))#define  MC68681_CLEAR                                     0x00 #define MC68681_PORT_A                                     0#define MC68681_PORT_B                                     1/*  *  DUART Command Register Definitions:  * *  MC68681_COMMAND_REG_A,MC68681_COMMAND_REG_B        */#define MC68681_MODE_REG_ENABLE_RX                          0x01#define MC68681_MODE_REG_DISABLE_RX                         0x02#define MC68681_MODE_REG_ENABLE_TX                          0x04#define MC68681_MODE_REG_DISABLE_TX                         0x08#define MC68681_MODE_REG_RESET_MR_PTR                       0x10#define MC68681_MODE_REG_RESET_RX                           0x20#define MC68681_MODE_REG_RESET_TX                           0x30#define MC68681_MODE_REG_RESET_ERROR                        0x40#define MC68681_MODE_REG_RESET_BREAK                        0x50#define MC68681_MODE_REG_START_BREAK                        0x60#define MC68681_MODE_REG_STOP_BREAK                         0x70#define MC68681_MODE_REG_SET_RX_BRG                         0x80#define MC68681_MODE_REG_CLEAR_RX_BRG                       0x90#define MC68681_MODE_REG_SET_TX_BRG                         0xa0#define MC68681_MODE_REG_CLEAR_TX_BRG                       0xb0#define MC68681_MODE_REG_SET_STANDBY                        0xc0#define MC68681_MODE_REG_SET_ACTIVE                         0xd0/* * Mode Register Definitions * *  MC68681_MODE_REG_1A  *  MC68681_MODE_REG_1B  */#define MC68681_5BIT_CHARS                                  0x00#define MC68681_6BIT_CHARS                                  0x01#define MC68681_7BIT_CHARS                                  0x02#define MC68681_8BIT_CHARS                                  0x03#define MC68681_ODD_PARITY                                  0x00#define MC68681_EVEN_PARITY                                 0x04#define MC68681_WITH_PARITY                                 0x00#define MC68681_FORCE_PARITY                                0x08#define MC68681_NO_PARITY                                   0x10#define MC68681_MULTI_DROP                                  0x18#define MC68681_ERR_MODE_CHAR                               0x00#define MC68681_ERR_MODE_BLOCK                              0x20#define MC68681_RX_INTR_RX_READY                            0x00#define MC68681_RX_INTR_FFULL                               0x40#define MC68681_NO_RX_RTS_CTL                               0x00#define MC68681_RX_RTS_CTRL                                 0x80/* * Mode Register Definitions * *  MC68681_MODE_REG_2A *  MC68681_MODE_REG_2B */#define MC68681_STOP_BIT_LENGTH__563                        0x00#define MC68681_STOP_BIT_LENGTH__625                        0x01#define MC68681_STOP_BIT_LENGTH__688                        0x02#define MC68681_STOP_BIT_LENGTH__75                         0x03#define MC68681_STOP_BIT_LENGTH__813                        0x04#define MC68681_STOP_BIT_LENGTH__875                        0x05#define MC68681_STOP_BIT_LENGTH__938                        0x06#define MC68681_STOP_BIT_LENGTH_1                           0x07#define MC68681_STOP_BIT_LENGTH_1_563                       0x08#define MC68681_STOP_BIT_LENGTH_1_625                       0x09#define MC68681_STOP_BIT_LENGTH_1_688                       0x0a#define MC68681_STOP_BIT_LENGTH_1_75                        0x0b#define MC68681_STOP_BIT_LENGTH_1_813                       0x0c#define MC68681_STOP_BIT_LENGTH_1_875                       0x0d#define MC68681_STOP_BIT_LENGTH_1_938                       0x0e#define MC68681_STOP_BIT_LENGTH_2                           0x0f#define MC68681_CTS_ENABLE_TX                               0x10#define MC68681_TX_RTS_CTRL                                 0x20#define MC68681_CHANNEL_MODE_NORMAL                         0x00#define MC68681_CHANNEL_MODE_ECHO                           0x40#define MC68681_CHANNEL_MODE_LOCAL_LOOP                     0x80#define MC68681_CHANNEL_MODE_REMOTE_LOOP                    0xc0/* * Status Register Definitions * *    MC68681_STATUS_REG_A,  MC68681_STATUS_REG_B */#define MC68681_RX_READY                                    0x01#define MC68681_FFULL                                       0x02#define MC68681_TX_READY                                    0x04#define MC68681_TX_EMPTY                                    0x08#define MC68681_OVERRUN_ERROR                               0x10#define MC68681_PARITY_ERROR                                0x20#define MC68681_FRAMING_ERROR                               0x40#define MC68681_RECEIVED_BREAK                              0x80/*  * Interupt Status Register Definitions.   * * MC68681_INTERRUPT_STATUS_REG           *//*  *  Interupt Mask Register Definitions      * *  MC68681_INTERRUPT_MASK_REG  */#define MC68681_IR_TX_READY_A                               0x01#define MC68681_IR_RX_READY_A                               0x02#define MC68681_IR_BREAK_A                                  0x04#define MC68681_IR_COUNTER_READY                            0x08#define MC68681_IR_TX_READY_B                               0x10#define MC68681_IR_RX_READY_B                               0x20#define MC68681_IR_BREAK_B                                  0x40#define MC68681_IR_INPUT_PORT_CHANGE                        0x80/*  * Status Register Definitions.   *  * MC68681_STATUS_REG_A,MC68681_STATUS_REG_B           */#define MC68681_STATUS_RXRDY                                0x01#define MC68681_STATUS_FFULL                                0x02#define MC68681_STATUS_TXRDY                                0x04#define MC68681_STATUS_TXEMT                                0x08#define MC68681_STATUS_OVERRUN_ERROR                        0x10#define MC68681_STATUS_PARITY_ERROR                         0x20#define MC68681_STATUS_FRAMING_ERROR                        0x40#define MC68681_STATUS_RECEIVED_BREAK                       0x80/*  * Definitions for the Interrupt Vector Register:  * * MC68681_INTERRUPT_VECTOR_REG   */#define  MC68681_INTERRUPT_VECTOR_INIT                      0x0f/*  * Definitions for the Auxiliary Control Register   * * MC68681_AUX_CTRL_REG  */#define MC68681_AUX_BRG_SET1                                0x00#define MC68681_AUX_BRG_SET2                                0x80/*  * The following Baud rates assume the X1 clock pin is driven with a  * 3.6864 MHz signal.  If a different frequency is used the DUART channel * is running at the follwoing baud rate: *       ((Table Baud Rate)*frequency)/3.6864 MHz  *//*  * Definitions for the Clock Select Register:  * * MC68681_CLOCK_SELECT_REG_A,MC68681_CLOCK_SELECT_REG_A  *  * Note:  ACR[7] is the MSB of the Auxiliary Control register *        X is the extend bit. *        CRA - 0x08  Set Rx BRG Select Extend Bit   (X=1) *        CRA - 0x09  Clear Rx BRG Select Extend Bit (X=0) *        CRB - 0x0a  Set Tx BRG Select Extend Bit   (X=1) *        CRB - 0x0b  Clear Tx BRG Select Extend Bit (x=1) */#define MC68681_BAUD_RATE_MASK_50           0x00   /* ACR[7]=0,X=0 */                                                   /* ARC[7]=1,X=1 */#define MC68681_BAUD_RATE_MASK_75           0x00   /* ACR[7]=0,X=0 */                                                   /* ARC[7]=1,X=1 */#define MC68681_BAUD_RATE_MASK_110          0x01   #define MC68681_BAUD_RATE_MASK_134_5        0x02   #define MC68681_BAUD_RATE_MASK_150          0x03   /* ACR[7]=0,X=0 */                                                   /* ARC[7]=1,X=1 */#define MC68681_BAUD_RATE_MASK_200          0x03   /* ACR[7]=0,X=0 */                                                   /* ARC[7]=1,X=1 */#define MC68681_BAUD_RATE_MASK_300          0x04   /* ACR[7]=0,X=0 */                                                   /* ARC[7]=1,X=1 */#define MC68681_BAUD_RATE_MASK_600          0x05   /* ACR[7]=0,X=0 */                                                   /* ARC[7]=1,X=1 */#define MC68681_BAUD_RATE_MASK_1050         0x07   /* ACR[7]=0,X=0 */                                                   /* ARC[7]=1,X=1 */#define MC68681_BAUD_RATE_MASK_1200         0x06   /* ACR[7]=0,X=0 */                                                   /* ARC[7]=1,X=1 */#define MC68681_BAUD_RATE_MASK_1800         0x0a   /* ACR[7]=0,X=0 */                                                   /* ARC[7]=1,X=1 */#define MC68681_BAUD_RATE_MASK_2400         0x08   /* ACR[7]=0,X=0 */                                                   /* ARC[7]=1,X=1 */#define MC68681_BAUD_RATE_MASK_3600         0x04   /* ACR[7]=0,X=0 */                                                   /* ARC[7]=1,X=1 */#define MC68681_BAUD_RATE_MASK_4800         0x09   #define MC68681_BAUD_RATE_MASK_7200         0x0a   /* ACR[7]=0,X=0 */                                                   /* ARC[7]=1,X=1 */#define MC68681_BAUD_RATE_MASK_9600         0xbb   #define MC68681_BAUD_RATE_MASK_14_4K        0x05   /* ACR[7]=0,X=0 */                                                   /* ARC[7]=1,X=1 */#define MC68681_BAUD_RATE_MASK_19_2K        0xcc   /* ACR[7]=1,X=0 */                                                   /* ARC[7]=0,X=1 */#define MC68681_BAUD_RATE_MASK_28_8K        0x06   /* ACR[7]=0,X=0 */                                                   /* ARC[7]=1,X=1 */#define MC68681_BAUD_RATE_MASK_38_4K        0xcc   /* ACR[7]=0,X=0 */                                                   /* ARC[7]=1,X=1 */#define MC68681_BAUD_RATE_MASK_57_6K        0x07   /* ACR[7]=0,X=0 */                                                   /* ARC[7]=1,X=1 */#define MC68681_BAUD_RATE_MASK_115_5K       0x08  #define MC68681_BAUD_RATE_MASK_TIMER        0xdd   #define MC68681_BAUD_RATE_MASK_TIMER_16X    0xee   #define MC68681_BAUD_RATE_MASK_TIMER_1X     0xff   #endif

⌨️ 快捷键说明

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