|
1 /********************************************************************* |
|
2 * |
|
3 * Microchip USB C18 Firmware Version 1.0 |
|
4 * |
|
5 ********************************************************************* |
|
6 * FileName: usbmmap.h |
|
7 * Dependencies: See INCLUDES section below |
|
8 * Processor: PIC18 |
|
9 * Compiler: C18 2.30.01+ |
|
10 * Company: Microchip Technology, Inc. |
|
11 * |
|
12 * Software License Agreement |
|
13 * |
|
14 * The software supplied herewith by Microchip Technology Incorporated |
|
15 * (the “Company”) for its PICmicro® Microcontroller is intended and |
|
16 * supplied to you, the Company’s customer, for use solely and |
|
17 * exclusively on Microchip PICmicro Microcontroller products. The |
|
18 * software is owned by the Company and/or its supplier, and is |
|
19 * protected under applicable copyright laws. All rights are reserved. |
|
20 * Any use in violation of the foregoing restrictions may subject the |
|
21 * user to criminal sanctions under applicable laws, as well as to |
|
22 * civil liability for the breach of the terms and conditions of this |
|
23 * license. |
|
24 * |
|
25 * THIS SOFTWARE IS PROVIDED IN AN “AS IS” CONDITION. NO WARRANTIES, |
|
26 * WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT NOT LIMITED |
|
27 * TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A |
|
28 * PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. THE COMPANY SHALL NOT, |
|
29 * IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL OR |
|
30 * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. |
|
31 * |
|
32 * Author Date Comment |
|
33 *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
|
34 * Rawin Rojvanit 11/19/04 Original. |
|
35 ********************************************************************/ |
|
36 |
|
37 #ifndef USBMMAP_H |
|
38 #define USBMMAP_H |
|
39 |
|
40 /** I N C L U D E S **********************************************************/ |
|
41 #include "typedefs.h" |
|
42 |
|
43 /** D E F I N I T I O N S ****************************************************/ |
|
44 |
|
45 /* Buffer Descriptor Status Register Initialization Parameters */ |
|
46 #define _BSTALL 0x04 //Buffer Stall enable |
|
47 #define _DTSEN 0x08 //Data Toggle Synch enable |
|
48 #define _INCDIS 0x10 //Address increment disable |
|
49 #define _KEN 0x20 //SIE keeps buff descriptors enable |
|
50 #define _DAT0 0x00 //DATA0 packet expected next |
|
51 #define _DAT1 0x40 //DATA1 packet expected next |
|
52 #define _DTSMASK 0x40 //DTS Mask |
|
53 #define _USIE 0x80 //SIE owns buffer |
|
54 #define _UCPU 0x00 //CPU owns buffer |
|
55 |
|
56 /* USB Device States - To be used with [byte usb_device_state] */ |
|
57 #define DETACHED_STATE 0 |
|
58 #define ATTACHED_STATE 1 |
|
59 #define POWERED_STATE 2 |
|
60 #define DEFAULT_STATE 3 |
|
61 #define ADR_PENDING_STATE 4 |
|
62 #define ADDRESS_STATE 5 |
|
63 #define CONFIGURED_STATE 6 |
|
64 |
|
65 /* Memory Types for Control Transfer - used in USB_DEVICE_STATUS */ |
|
66 #define _RAM 0 |
|
67 #define _ROM 1 |
|
68 |
|
69 /** T Y P E S ****************************************************************/ |
|
70 typedef union _USB_DEVICE_STATUS |
|
71 { |
|
72 byte _byte; |
|
73 struct |
|
74 { |
|
75 unsigned RemoteWakeup:1;// [0]Disabled [1]Enabled: See usbdrv.c,usb9.c |
|
76 unsigned ctrl_trf_mem:1;// [0]RAM [1]ROM |
|
77 }; |
|
78 } USB_DEVICE_STATUS; |
|
79 |
|
80 typedef union _BD_STAT |
|
81 { |
|
82 byte _byte; |
|
83 struct{ |
|
84 unsigned BC8:1; |
|
85 unsigned BC9:1; |
|
86 unsigned BSTALL:1; //Buffer Stall Enable |
|
87 unsigned DTSEN:1; //Data Toggle Synch Enable |
|
88 unsigned INCDIS:1; //Address Increment Disable |
|
89 unsigned KEN:1; //BD Keep Enable |
|
90 unsigned DTS:1; //Data Toggle Synch Value |
|
91 unsigned UOWN:1; //USB Ownership |
|
92 }; |
|
93 struct{ |
|
94 unsigned BC8:1; |
|
95 unsigned BC9:1; |
|
96 unsigned PID0:1; |
|
97 unsigned PID1:1; |
|
98 unsigned PID2:1; |
|
99 unsigned PID3:1; |
|
100 unsigned :1; |
|
101 unsigned UOWN:1; |
|
102 }; |
|
103 struct{ |
|
104 unsigned :2; |
|
105 unsigned PID:4; //Packet Identifier |
|
106 unsigned :2; |
|
107 }; |
|
108 } BD_STAT; //Buffer Descriptor Status Register |
|
109 |
|
110 typedef union _BDT |
|
111 { |
|
112 struct |
|
113 { |
|
114 BD_STAT Stat; |
|
115 byte Cnt; |
|
116 byte ADRL; //Buffer Address Low |
|
117 byte ADRH; //Buffer Address High |
|
118 }; |
|
119 struct |
|
120 { |
|
121 unsigned :8; |
|
122 unsigned :8; |
|
123 byte* ADR; //Buffer Address |
|
124 }; |
|
125 } BDT; //Buffer Descriptor Table |
|
126 |
|
127 /** E X T E R N S ************************************************************/ |
|
128 extern byte usb_device_state; |
|
129 extern USB_DEVICE_STATUS usb_stat; |
|
130 extern byte usb_active_cfg; |
|
131 extern byte usb_alt_intf[MAX_NUM_INT]; |
|
132 |
|
133 extern volatile far BDT ep0Bo; //Endpoint #0 BD Out |
|
134 extern volatile far BDT ep0Bi; //Endpoint #0 BD In |
|
135 extern volatile far BDT ep1Bo; //Endpoint #1 BD Out |
|
136 extern volatile far BDT ep1Bi; //Endpoint #1 BD In |
|
137 extern volatile far BDT ep2Bo; //Endpoint #2 BD Out |
|
138 extern volatile far BDT ep2Bi; //Endpoint #2 BD In |
|
139 extern volatile far BDT ep3Bo; //Endpoint #3 BD Out |
|
140 extern volatile far BDT ep3Bi; //Endpoint #3 BD In |
|
141 extern volatile far BDT ep4Bo; //Endpoint #4 BD Out |
|
142 extern volatile far BDT ep4Bi; //Endpoint #4 BD In |
|
143 extern volatile far BDT ep5Bo; //Endpoint #5 BD Out |
|
144 extern volatile far BDT ep5Bi; //Endpoint #5 BD In |
|
145 extern volatile far BDT ep6Bo; //Endpoint #6 BD Out |
|
146 extern volatile far BDT ep6Bi; //Endpoint #6 BD In |
|
147 extern volatile far BDT ep7Bo; //Endpoint #7 BD Out |
|
148 extern volatile far BDT ep7Bi; //Endpoint #7 BD In |
|
149 extern volatile far BDT ep8Bo; //Endpoint #8 BD Out |
|
150 extern volatile far BDT ep8Bi; //Endpoint #8 BD In |
|
151 extern volatile far BDT ep9Bo; //Endpoint #9 BD Out |
|
152 extern volatile far BDT ep9Bi; //Endpoint #9 BD In |
|
153 extern volatile far BDT ep10Bo; //Endpoint #10 BD Out |
|
154 extern volatile far BDT ep10Bi; //Endpoint #10 BD In |
|
155 extern volatile far BDT ep11Bo; //Endpoint #11 BD Out |
|
156 extern volatile far BDT ep11Bi; //Endpoint #11 BD In |
|
157 extern volatile far BDT ep12Bo; //Endpoint #12 BD Out |
|
158 extern volatile far BDT ep12Bi; //Endpoint #12 BD In |
|
159 extern volatile far BDT ep13Bo; //Endpoint #13 BD Out |
|
160 extern volatile far BDT ep13Bi; //Endpoint #13 BD In |
|
161 extern volatile far BDT ep14Bo; //Endpoint #14 BD Out |
|
162 extern volatile far BDT ep14Bi; //Endpoint #14 BD In |
|
163 extern volatile far BDT ep15Bo; //Endpoint #15 BD Out |
|
164 extern volatile far BDT ep15Bi; //Endpoint #15 BD In |
|
165 |
|
166 extern volatile far CTRL_TRF_SETUP SetupPkt; |
|
167 extern volatile far CTRL_TRF_DATA CtrlTrfData; |
|
168 |
|
169 #if defined(USB_USE_CDC) |
|
170 extern volatile far unsigned char cdc_notice[CDC_INT_EP_SIZE]; |
|
171 extern volatile far unsigned char cdc_data_rx[CDC_BULK_OUT_EP_SIZE]; |
|
172 extern volatile far unsigned char cdc_data_tx[CDC_BULK_IN_EP_SIZE]; |
|
173 #endif |
|
174 |
|
175 #endif //USBMMAP_H |