Fx2lib
0.2
|
00001 // Copyright (C) 2010 Ubixum, Inc. 00002 // 00003 // This library is free software; you can redistribute it and/or 00004 // modify it under the terms of the GNU Lesser General Public 00005 // License as published by the Free Software Foundation; either 00006 // version 2.1 of the License, or (at your option) any later version. 00007 // 00008 // This library is distributed in the hope that it will be useful, 00009 // but WITHOUT ANY WARRANTY; without even the implied warranty of 00010 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00011 // Lesser General Public License for more details. 00012 // 00013 // You should have received a copy of the GNU Lesser General Public 00014 // License along with this library; if not, write to the Free Software 00015 // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 00016 00017 00018 00035 #ifndef USBJT_H 00036 #define USBJT_H 00037 00038 #include "fx2regs.h" 00039 00040 00053 #define USE_USB_INTS() {EUSB=1;\ 00054 INTSETUP|=bmAV2EN;} 00055 00062 #define USE_GPIF_INTS() {EIEX4=1;\ 00063 INTSETUP|=bmAV4EN|INT4IN;} 00064 00065 00066 #define CLEAR_USBINT() EXIF &= ~0x10 00067 #define CLEAR_GPIF() EXIF &= ~0x40 00068 00069 #define ENABLE_SUDAV() USBIE|=bmSUDAV 00070 #define CLEAR_SUDAV() CLEAR_USBINT(); USBIRQ=bmSUDAV 00071 00072 #define ENABLE_SUTOK() USBIE|=bmSUTOK; 00073 #define CLEAR_SUTOK() CLEAR_USBINT(); USBIRQ=bmSUTOK 00074 00075 #define ENABLE_SOF() USBIE|=bmSOF 00076 #define CLEAR_SOF() CLEAR_USBINT(); USBIRQ=bmSOF 00077 00078 #define ENABLE_SUSPEND() USBIE|=bmSUSP 00079 #define CLEAR_SUSPEND() CLEAR_USBINT(); USBIRQ=bmSUSP 00080 00081 #define ENABLE_USBRESET() USBIE|= bmURES 00082 #define CLEAR_USBRESET() CLEAR_USBINT(); USBIRQ=bmURES 00083 00084 #define ENABLE_HISPEED() USBIE|=bmHSGRANT 00085 #define CLEAR_HISPEED() CLEAR_USBINT(); USBIRQ=bmHSGRANT 00086 00087 #define ENABLE_EP0IN() EPIE|=bmEP0IN 00088 #define CLEAR_EP0IN() CLEAR_USBINT(); EPIRQ=bmEP0IN 00089 00090 #define ENABLE_EP0OUT() EPIE|=bmEP0OUT 00091 #define CLEAR_EP0OUT() CLEAR_USBINT(); EPIRQ=bmEP0OUT 00092 00093 #define ENABLE_EP1IN() EPIE|=bmEP1IN 00094 #define CLEAR_EP1IN() CLEAR_USBINT(); EPIRQ=bmEP1IN 00095 00096 #define ENABLE_EP1OUT() EPIE|=bmEP1OUT 00097 #define CLEAR_EP1OUT() CLEAR_USBINT(); EPIRQ=bmEP1OUT 00098 00099 #define ENABLE_EP2() EPIE|=bmEP2 00100 #define CLEAR_EP2() CLEAR_USBINT(); EPIRQ=bmEP2 00101 00102 #define ENABLE_EP4() EPIE|=bmEP4 00103 #define CLEAR_EP4() CLEAR_USBINT(); EPIRQ=bmEP4 00104 00105 #define ENABLE_EP6() EPIE|=bmEP6 00106 #define CLEAR_EP6() CLEAR_USBINT(); EPIRQ=bmEP6 00107 00108 #define ENABLE_EP8() EPIE|=bmEP8 00109 #define CLEAR_EP8() CLEAR_USBINT(); EPIRQ=bmEP8 00110 00111 #define ENABLE_EP2ISOERR() USBERRIE |= bmISOEP2 00112 #define CLEAR_EP2ISOERR() CLEAR_USBINT(); USBERRIRQ = bmISOEP2 00113 00114 #define ENABLE_EP6PF() EP6FIFOIE |= bmBIT2 00115 #define CLEAR_EP6PF() CLEAR_GPIF(); EP6FIFOIRQ=bmBIT2 00116 00117 #define ENABLE_EP6FF() EP6FIFOIE |= bmBIT0 00118 #define CLEAR_EP6FF() CLEAR_GPIF(); EP6FIFOIRQ=bmBIT0 00119 00120 #define ENABLE_GPIFDONE() GPIFIE |= 0x01; 00121 #define CLEAR_GPIFDONE() CLEAR_GPIF(); GPIFIRQ = 0x01; 00122 00123 #define ENABLE_GPIFWF() GPIFIE |= 0x02; 00124 #define CLEAR_GPIFWF() GLEAR_GPIF(); GPIFIRQ = 0x02; 00125 00132 typedef enum { 00133 SUDAV_ISR=13, 00134 SOF_ISR, 00135 SUTOK_ISR, 00136 SUSPEND_ISR, 00137 USBRESET_ISR, 00138 HISPEED_ISR, 00139 EP0ACK_ISR, 00140 EP0IN_ISR, 00141 EP0OUT_ISR, 00142 EP1IN_ISR, 00143 EP1OUT_ISR, 00144 EP2_ISR, 00145 EP4_ISR, 00146 EP6_ISR, 00147 EP8_ISR, 00148 IBN_ISR, 00149 EP0PING_ISR, 00150 EP1PING_ISR, 00151 EP2PING_ISR, 00152 EP4PING_ISR, 00153 EP6PING_ISR, 00154 EP8PING_ISR, 00155 ERRLIMIT_ISR, 00156 EP2ISOERR_ISR, 00157 EP4ISOERR_ISR, 00158 EP6ISOERR_ISR, 00159 EP8ISOERR_ISR, 00160 RESERVED_ISR, 00161 EP2PF_ISR, 00162 EP4PF_ISR, 00163 EP6PF_ISR, 00164 EP8PF_ISR, 00165 EP2EF_ISR, 00166 EP4EF_ISR, 00167 EP6EF_ISR, 00168 EP8EF_ISR, 00169 EP2FF_ISR, 00170 EP4FF_ISR, 00171 EP6FF_ISR, 00172 EP8FF_ISR, 00173 GPIFDONE_ISR, 00174 GPIFWF_ISR 00175 } USB_ISR; 00176 00177 // you must include the predef of these in the file with your main 00178 // so lets just define them here 00179 00180 void usb_isr(void) __interrupt (8); 00181 void sudav_isr() __interrupt; 00182 void sof_isr() __interrupt; 00183 void sutok_isr() __interrupt; 00184 void suspend_isr() __interrupt; 00185 void usbreset_isr() __interrupt; 00186 void hispeed_isr() __interrupt; 00187 void ep0ack_isr() __interrupt; 00188 void ep0in_isr() __interrupt; 00189 void ep0out_isr() __interrupt; 00190 void ep1in_isr() __interrupt; 00191 void ep1out_isr() __interrupt; 00192 void ep2_isr() __interrupt; 00193 void ep4_isr() __interrupt; 00194 void ep6_isr() __interrupt; 00195 void ep8_isr() __interrupt; 00196 void ibn_isr() __interrupt; 00197 void ep0ping_isr() __interrupt; 00198 void ep1ping_isr() __interrupt; 00199 void ep2ping_isr() __interrupt; 00200 void ep4ping_isr() __interrupt; 00201 void ep6ping_isr() __interrupt; 00202 void ep8ping_isr() __interrupt; 00203 void errlimit_isr() __interrupt; 00204 void ep2isoerr_isr() __interrupt; 00205 void ep4isoerr_isr() __interrupt; 00206 void ep6isoerr_isr() __interrupt; 00207 void ep8isoerr_isr() __interrupt; 00208 void spare_isr() __interrupt; // not used 00209 // gpif ints 00210 void gpif_isr(void) __interrupt (10); 00211 void ep2pf_isr() __interrupt; 00212 void ep4pf_isr() __interrupt; 00213 void ep6pf_isr() __interrupt; 00214 void ep8pf_isr() __interrupt; 00215 void ep2ef_isr() __interrupt; 00216 void ep4ef_isr() __interrupt; 00217 void ep6ef_isr() __interrupt; 00218 void ep8ef_isr() __interrupt; 00219 void ep2ff_isr() __interrupt; 00220 void ep4ff_isr() __interrupt; 00221 void ep6ff_isr() __interrupt; 00222 void ep8ff_isr() __interrupt; 00223 void gpifdone_isr() __interrupt; 00224 void gpifwf_isr() __interrupt; 00225 00226 #endif 00227