Przeglądaj źródła

Fiexed AT90USB162 compatibility.(different number of endpoint)

tmk 13 lat temu
rodzic
commit
446f87f9e8
2 zmienionych plików z 9 dodań i 3 usunięć
  1. 2 2
      pjrc/usb.c
  2. 7 1
      pjrc/usb.h

+ 2 - 2
pjrc/usb.c

@@ -785,7 +785,7 @@ ISR(USB_COM_vect)
 			usb_configuration = wValue;
 			usb_send_in();
 			cfg = endpoint_config_table;
-			for (i=1; i<=6; i++) {
+			for (i=1; i<=MAX_ENDPOINT; i++) {
 				UENUM = i;
 				en = pgm_read_byte(cfg++);
                                 if (en) {
@@ -796,7 +796,7 @@ ISR(USB_COM_vect)
                                     UECONX = 0;
 				}
 			}
-        		UERST = 0x7E;
+        		UERST = UERST_MASK;
         		UERST = 0;
 			return;
 		}

+ 7 - 1
pjrc/usb.h

@@ -53,7 +53,13 @@ void usb_remote_wakeup(void);
 			((s) == 16 ? 0x10 :	\
 			             0x00)))
 
-#define MAX_ENDPOINT		4
+#if defined (__AVR_AT90USB162__) || defined (__AVR_AT90USB82__)
+#   define MAX_ENDPOINT     4
+#   define UERST_MASK       0x1E
+#else
+#   define MAX_ENDPOINT     6
+#   define UERST_MASK       0x7E
+#endif
 
 #define LSB(n) (n & 255)
 #define MSB(n) ((n >> 8) & 255)