00001
00002
00003
00004
00005 #ifndef USB_REGISTER_H
00006 #define USB_REGISTER_H
00007
00008
00009
00010
00011
00012
00013 #define BASE 0x00
00014 #define FADDR BASE
00015 #define POWER BASE + 0x01
00016 #define IN1INT BASE + 0x02
00017 #define OUT1INT BASE + 0x04
00018 #define CMINT BASE + 0x06
00019 #define IN1IE BASE + 0x07
00020 #define OUT1IE BASE + 0x09
00021 #define CMIE BASE + 0x0B
00022 #define FRAMEL BASE + 0x0C
00023 #define FRAMEH BASE + 0x0D
00024 #define INDEX BASE + 0x0E
00025 #define CLKREC BASE + 0x0F
00026 #define INMAX BASE + 0x10
00027 #define E0CSR BASE + 0x11
00028 #define EINCSRL BASE + 0x11
00029 #define EINCSRH BASE + 0x12
00030 #define OUTMAX BASE + 0x13
00031 #define EOUTCSRL BASE + 0x14
00032 #define EOUTCSRH BASE + 0x15
00033 #define E0CNT BASE + 0x16
00034 #define EOUTCNTL BASE + 0x16
00035 #define EOUTCNTH BASE + 0x17
00036 #define FIFO_EP0 BASE + 0x20
00037 #define FIFO_EP1 BASE + 0x21
00038 #define FIFO_EP2 BASE + 0x22
00039 #define FIFO_EP3 BASE + 0x23
00040
00041
00042
00043
00044 #define rbISOUD 0x80
00045 #define rbSPEED 0x40
00046 #define rbUSBRST 0x08
00047 #define rbRESUME 0x04
00048 #define rbSUSMD 0x02
00049 #define rbSUSEN 0x01
00050
00051
00052 #define rbIN3 0x08
00053 #define rbIN2 0x04
00054 #define rbIN1 0x02
00055 #define rbEP0 0x01
00056
00057
00058 #define rbOUT3 0x08
00059 #define rbOUT2 0x04
00060 #define rbOUT1 0x02
00061
00062
00063 #define rbSOF 0x08
00064 #define rbRSTINT 0x04
00065 #define rbRSUINT 0x02
00066 #define rbSUSINT 0x01
00067
00068
00069 #define rbIN3E 0x08
00070 #define rbIN2E 0x04
00071 #define rbIN1E 0x02
00072 #define rbEP0E 0x01
00073
00074
00075 #define rbOUT3E 0x08
00076 #define rbOUT2E 0x04
00077 #define rbOUT1E 0x02
00078
00079
00080 #define rbSOFE 0x08
00081 #define rbRSTINTE 0x04
00082 #define rbRSUINTE 0x02
00083 #define rbSUSINTE 0x01
00084
00085
00086 #define rbSSUEND 0x80
00087 #define rbSOPRDY 0x40
00088 #define rbSDSTL 0x20
00089 #define rbSUEND 0x10
00090 #define rbDATAEND 0x08
00091 #define rbSTSTL 0x04
00092 #define rbINPRDY 0x02
00093 #define rbOPRDY 0x01
00094
00095
00096 #define rbInCLRDT 0x40
00097 #define rbInSTSTL 0x20
00098 #define rbInSDSTL 0x10
00099 #define rbInFLUSH 0x08
00100 #define rbInUNDRUN 0x04
00101 #define rbInFIFONE 0x02
00102 #define rbInINPRDY 0x01
00103
00104
00105 #define rbInDBIEN 0x80
00106 #define rbInISO 0x40
00107 #define rbInDIRSEL 0x20
00108 #define rbInFCDT 0x08
00109 #define rbInSPLIT 0x04
00110
00111
00112 #define rbOutCLRDT 0x80
00113 #define rbOutSTSTL 0x40
00114 #define rbOutSDSTL 0x20
00115 #define rbOutFLUSH 0x10
00116 #define rbOutDATERR 0x08
00117 #define rbOutOVRUN 0x04
00118 #define rbOutFIFOFUL 0x02
00119 #define rbOutOPRDY 0x01
00120
00121
00122 #define rbOutDBOEN 0x80
00123 #define rbOutISO 0x40
00124
00125
00126
00127
00128
00129
00130
00131
00132
00133 #define READ_BYTE(addr, target) { USB0ADR = (0x80 | addr); \
00134 while(USB0ADR & 0x80); \
00135 target = USB0DAT; }
00136
00137 #define WRITE_BYTE(addr, data) { USB0ADR = (addr); \
00138 USB0DAT = data; }
00139
00140
00141
00142
00143
00144 #ifdef ENABLE_INLINE_POLL_READ_WRITE
00145
00146 #define POLL_READ_BYTE(addr, target) { while(USB0ADR & 0x80); \
00147 READ_BYTE(addr, target); }
00148
00149 #define POLL_WRITE_BYTE(addr, dt) { while(USB0ADR & 0x80); \
00150 WRITE_BYTE(addr, dt); }
00151 #else
00152 #define POLL_READ_BYTE(addr, target) { target = POLL_READ_BYTE_FUNC( addr ); }
00153 #define POLL_READ_BYTE_DEF
00154 extern BYTE POLL_READ_BYTE_FUNC( BYTE addr );
00155 extern void POLL_WRITE_BYTE( BYTE addr, BYTE dt );
00156 #endif
00157
00158
00159 #endif // USB_REGISTER_H
00160
00161
00162
00163