1 | #pragma udata USB_VARS_CONTROL // RAM=usb5
|
2 |
|
3 | BYTE IN_Control[USB_Control_EP_SIZE]; // Puffergröße definiert in usb_config.h
|
4 | BYTE OUT_Control[USB_Control_EP_SIZE];
|
5 |
|
6 | #define PUFFER_ANZAHL 4
|
7 |
|
8 | #pragma udata USB_VARS_IN_DATA // RAM=usb6
|
9 |
|
10 | BYTE IN_Data [PUFFER_ANZAHL][USB_Data_EP_SIZE]; // [PUFFER_ANZAHL] * [USB_Data_EP_SIZE] = 256 Bytes = 1 Bank
|
11 |
|
12 | #pragma udata USB_VARS_OUT_DATA //RAM=usb7
|
13 |
|
14 | BYTE OUT_Data [USB_Data_EP_SIZE];
|
15 |
|
16 | #pragma udata
|
17 |
|
18 | unsigned char IN_Data_Belegung[PUFFER_ANZAHL];
|
19 | unsigned char IN_Control_Belegung;
|
20 | unsigned char OUT_Control_Belegung;
|
21 |
|
22 | #define RS232_sendbuffer_maxcount 32 // Physikalische Puffergröße
|
23 | BYTE RS232_sendbuffer [RS232_sendbuffer_maxcount]; // Bytearray
|
24 | BYTE RS232_sendbuffer_count;
|
25 |
|
26 |
|
27 | #define RS232_readbuffer_maxcount 256 // Physikalische Puffergröße
|
28 | BYTE *RS232_readbuffer = IN_Data; // Bytearray
|
29 | BYTE RS232_readbuffer_count;
|
30 |
|
31 | unsigned char Sende_USB;
|
32 | unsigned char puffer_akt;
|
33 | unsigned short long Bildlaenge;
|
34 | BYTE puffererror;
|
35 | BYTE CAM_Status;
|
36 |
|
37 |
|
38 | USB_HANDLE USB_Control_Out_Handle = 0;
|
39 | USB_HANDLE USB_Control_In_Handle = 0;
|
40 | USB_HANDLE USB_Data_In_Handle = 0;
|
41 | USB_HANDLE USB_Data_Out_Handle = 0;
|
42 |
|
43 |
|
44 | /** PRIVATE PROTOTYPES *********************************************/
|
45 |
|
46 | void YourHighPriorityISRCode(void);
|
47 | void YourLowPriorityISRCode(void);
|
48 |
|
49 | /** VECTOR REMAPPING ***********************************************/
|
50 |
|
51 | #define REMAPPED_RESET_VECTOR_ADDRESS 0x800
|
52 | #define REMAPPED_HIGH_INTERRUPT_VECTOR_ADDRESS 0x808
|
53 | #define REMAPPED_LOW_INTERRUPT_VECTOR_ADDRESS 0x818
|
54 |
|
55 | //These are your actual interrupt handling routines.
|
56 | #pragma interrupt YourHighPriorityISRCode
|
57 | void YourHighPriorityISRCode()
|
58 | {
|
59 | #if defined(USB_INTERRUPT)
|
60 | USBDeviceTasks();
|
61 | #endif
|
62 | } //This return will be a "retfie fast", since this is in a #pragma interrupt section
|
63 |
|
64 | #pragma code
|
65 |
|
66 | void main(void)
|
67 | {
|
68 | USBDeviceInit(); //usb_device.c. Initializes USB module SFRs and firmware
|
69 |
|
70 | #if defined(USB_INTERRUPT) // defined in usb_config.h
|
71 | USBDeviceAttach();
|
72 | #endif
|
73 |
|
74 | TRISAbits.TRISA0=1;
|
75 | TRISB = 0x1F;
|
76 |
|
77 | PORTBbits.RB7 = 0;
|
78 | PORTBbits.RB6 = 0;
|
79 | PORTBbits.RB5 = 0;
|
80 |
|
81 | CAM_Status = 100;
|
82 |
|
83 | while(1)
|
84 | {
|
85 |
|
86 | PORTBbits.RB5 = 1;
|
87 |
|
88 | if((USBDeviceState < CONFIGURED_STATE)||(USBSuspendControl==1)) continue;
|
89 |
|
90 | if(!USBHandleBusy(USB_Control_Out_Handle)) // Check if the endpoint has received any data from the host.
|
91 | {
|
92 |
|
93 | if((!USBHandleBusy(USB_Control_In_Handle)) && (CAM_Status == 100))
|
94 | {
|
95 | CAM_Status = 0; // Initiere das Senden von SYNC ()
|
96 |
|
97 | PORTBbits.RB6 = 1;
|
98 |
|
99 | IN_Control[0] = 70;
|
100 | IN_Control[1] = 70;
|
101 | IN_Control[2] = 70;
|
102 | IN_Control[3] = 70;
|
103 | IN_Control[4] = 70;
|
104 | IN_Control[5] = 70;
|
105 | USB_Control_In_Handle = USBGenWrite(USB_Control_EP_NUM,(BYTE*)&IN_Control[0], 6);
|
106 | }
|
107 | USB_Control_Out_Handle = USBGenRead(USB_Control_EP_NUM,(BYTE*)&OUT_Control[0],USB_Control_EP_SIZE);
|
108 | }
|
109 |
|
110 |
|
111 |
|
112 | if((!USBHandleBusy(USB_Control_In_Handle)) && (CAM_Status != 100))
|
113 | {
|
114 | PORTBbits.RB7 = 1;
|
115 | IN_Control[0] = 70;
|
116 | IN_Control[1] = 70;
|
117 | IN_Control[2] = 70;
|
118 | USB_Control_In_Handle = USBGenWrite (USB_Control_EP_NUM,(BYTE*)&IN_Control[0], 3);
|
119 | }
|
120 | } //end while (1)
|
121 | } //end main
|
122 |
|
123 |
|
124 | // ****************************************************************
|
125 | // ************** USB Callback Functions
|
126 | // ****************************************************************
|
127 |
|
128 |
|
129 | void USBCBInitEP(void)
|
130 | {
|
131 | USBEnableEndpoint(USB_Control_EP_NUM,USB_OUT_ENABLED|USB_IN_ENABLED|USB_HANDSHAKE_ENABLED|USB_DISALLOW_SETUP);
|
132 | USBEnableEndpoint(USB_Data_EP_NUM,USB_OUT_ENABLED|USB_IN_ENABLED|USB_HANDSHAKE_ENABLED|USB_DISALLOW_SETUP);
|
133 |
|
134 | USB_Control_Out_Handle = USBGenRead(USB_Control_EP_NUM,(BYTE*)&OUT_Control[0], USB_Control_EP_SIZE);
|
135 | USB_Data_Out_Handle = USBGenRead(USB_Data_EP_NUM,(BYTE*)&OUT_Data[0], USB_Data_EP_SIZE);
|
136 | }
|