diff --git a/Bootloaders/CDC/Descriptors.h b/Bootloaders/CDC/Descriptors.h index 94883be20c..ac02ff6521 100644 --- a/Bootloaders/CDC/Descriptors.h +++ b/Bootloaders/CDC/Descriptors.h @@ -40,29 +40,21 @@ #include /* Macros: */ - #if defined(__AVR_AT90USB1286__) + #if defined(__AVR_AT90USB1287__) #define AVR_SIGNATURE_1 0x1E #define AVR_SIGNATURE_2 0x97 #define AVR_SIGNATURE_3 0x82 - #elif defined(__AVR_AT90USB1287__) - #define AVR_SIGNATURE_1 0x1E - #define AVR_SIGNATURE_2 0x97 - #define AVR_SIGNATURE_3 0x82 - #elif defined(__AVR_AT90USB646__) - #define AVR_SIGNATURE_1 0x1E - #define AVR_SIGNATURE_2 0x96 - #define AVR_SIGNATURE_3 0x82 #elif defined(__AVR_AT90USB647__) #define AVR_SIGNATURE_1 0x1E #define AVR_SIGNATURE_2 0x96 #define AVR_SIGNATURE_3 0x82 - #elif defined(__AVR_AT90USB162__) + #elif defined(__AVR_AT90USB1286__) #define AVR_SIGNATURE_1 0x1E - #define AVR_SIGNATURE_2 0x94 + #define AVR_SIGNATURE_2 0x97 #define AVR_SIGNATURE_3 0x82 - #elif defined(__AVR_AT90USB82__) + #elif defined(__AVR_AT90USB646__) #define AVR_SIGNATURE_1 0x1E - #define AVR_SIGNATURE_2 0x94 + #define AVR_SIGNATURE_2 0x96 #define AVR_SIGNATURE_3 0x82 #elif defined(__AVR_ATmega32U6__) #define AVR_SIGNATURE_1 0x1E @@ -76,6 +68,26 @@ #define AVR_SIGNATURE_1 0x1E #define AVR_SIGNATURE_2 0x94 #define AVR_SIGNATURE_3 0x88 + #elif defined(__AVR_ATmega32U2__) + #define AVR_SIGNATURE_1 0x1E + #define AVR_SIGNATURE_2 0x94 + #define AVR_SIGNATURE_3 0x82 + #elif defined(__AVR_ATmega16U2__) + #define AVR_SIGNATURE_1 0x1E + #define AVR_SIGNATURE_2 0x94 + #define AVR_SIGNATURE_3 0x89 + #elif defined(__AVR_AT90USB162__) + #define AVR_SIGNATURE_1 0x1E + #define AVR_SIGNATURE_2 0x94 + #define AVR_SIGNATURE_3 0x82 + #elif defined(__AVR_ATmega8U2__) + #define AVR_SIGNATURE_1 0x1E + #define AVR_SIGNATURE_2 0x93 + #define AVR_SIGNATURE_3 0x82 + #elif defined(__AVR_AT90USB82__) + #define AVR_SIGNATURE_1 0x1E + #define AVR_SIGNATURE_2 0x93 + #define AVR_SIGNATURE_3 0x89 #else #error The selected AVR part is not currently supported by this bootloader. #endif diff --git a/Bootloaders/DFU/Descriptors.h b/Bootloaders/DFU/Descriptors.h index 4faea4251a..32d58285b4 100644 --- a/Bootloaders/DFU/Descriptors.h +++ b/Bootloaders/DFU/Descriptors.h @@ -63,12 +63,17 @@ */ #define ATTR_CAN_DOWNLOAD (1 << 0) - #if defined(__AVR_AT90USB1286__) + #if defined(__AVR_AT90USB1287__) #define PRODUCT_ID_CODE 0x2FFB #define AVR_SIGNATURE_1 0x1E #define AVR_SIGNATURE_2 0x97 #define AVR_SIGNATURE_3 0x82 - #elif defined(__AVR_AT90USB1287__) + #elif defined(__AVR_AT90USB647__) + #define PRODUCT_ID_CODE 0x2FF9 + #define AVR_SIGNATURE_1 0x1E + #define AVR_SIGNATURE_2 0x96 + #define AVR_SIGNATURE_3 0x82 + #elif defined(__AVR_AT90USB1286__) #define PRODUCT_ID_CODE 0x2FFB #define AVR_SIGNATURE_1 0x1E #define AVR_SIGNATURE_2 0x97 @@ -83,11 +88,6 @@ #define AVR_SIGNATURE_1 0x1E #define AVR_SIGNATURE_2 0x95 #define AVR_SIGNATURE_3 0x88 - #elif defined(__AVR_AT90USB647__) - #define PRODUCT_ID_CODE 0x2FF9 - #define AVR_SIGNATURE_1 0x1E - #define AVR_SIGNATURE_2 0x96 - #define AVR_SIGNATURE_3 0x82 #elif defined(__AVR_ATmega32U4__) #define PRODUCT_ID_CODE 0x2FF4 #define AVR_SIGNATURE_1 0x1E @@ -98,6 +98,16 @@ #define AVR_SIGNATURE_1 0x1E #define AVR_SIGNATURE_2 0x94 #define AVR_SIGNATURE_3 0x88 + #elif defined(__AVR_ATmega32U2__) + #define PRODUCT_ID_CODE 0x2FF0 + #define AVR_SIGNATURE_1 0x1E + #define AVR_SIGNATURE_2 0x94 + #define AVR_SIGNATURE_3 0x82 + #elif defined(__AVR_ATmega16U2__) + #define PRODUCT_ID_CODE 0x2FEF + #define AVR_SIGNATURE_1 0x1E + #define AVR_SIGNATURE_2 0x94 + #define AVR_SIGNATURE_3 0x89 #elif defined(__AVR_AT90USB162__) #define PRODUCT_ID_CODE 0x2FFA #define AVR_SIGNATURE_1 0x1E @@ -108,11 +118,6 @@ #define AVR_SIGNATURE_1 0x1E #define AVR_SIGNATURE_2 0x93 #define AVR_SIGNATURE_3 0x82 - #elif defined(__AVR_ATmega16U2__) - #define PRODUCT_ID_CODE 0x2FEF - #define AVR_SIGNATURE_1 0x1E - #define AVR_SIGNATURE_2 0x94 - #define AVR_SIGNATURE_3 0x89 #elif defined(__AVR_AT90USB82__) #define PRODUCT_ID_CODE 0x2FEE #define AVR_SIGNATURE_1 0x1E diff --git a/LUFA/Drivers/Peripheral/AVRU4U6U7/ADC.h b/LUFA/Drivers/Peripheral/AVRU4U6U7/ADC.h index f02281f3fd..472e1df470 100644 --- a/LUFA/Drivers/Peripheral/AVRU4U6U7/ADC.h +++ b/LUFA/Drivers/Peripheral/AVRU4U6U7/ADC.h @@ -149,7 +149,7 @@ #define ADC_GetStatus() ((ADCSRA & (1 << ADEN)) ? true : false) - #define ADC_IsReadingComplete() (ADCSRA & (1 << ADSC)) + #define ADC_IsReadingComplete() (ADCSRA & (1 << ADSC)) #define ADC_GetResult() ADC #endif diff --git a/LUFA/Drivers/USB/LowLevel/LowLevel.h b/LUFA/Drivers/USB/LowLevel/LowLevel.h index f20cb72bc9..aa760cd357 100644 --- a/LUFA/Drivers/USB/LowLevel/LowLevel.h +++ b/LUFA/Drivers/USB/LowLevel/LowLevel.h @@ -76,7 +76,8 @@ #if (F_CLOCK == 8000000) #if (defined(__AVR_AT90USB82__) || defined(__AVR_AT90USB162__) || \ - defined(__AVR_ATMEGA8U2__) || defined(__AVR_ATMEGA16U2__)) + defined(__AVR_ATmega8U2__) || defined(__AVR_ATmega16U2__) || \ + defined(__AVR_ATmega32U2)) #define USB_PLL_PSC 0 #elif (defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega32U4__)) #define USB_PLL_PSC 0 @@ -87,7 +88,8 @@ #endif #elif (F_CLOCK == 16000000) #if (defined(__AVR_AT90USB82__) || defined(__AVR_AT90USB162__) || \ - defined(__AVR_ATMEGA8U2__) || defined(__AVR_ATMEGA16U2__)) + defined(__AVR_ATmega8U2__) || defined(__AVR_ATmega16U2__) || \ + defined(__AVR_ATmega32U2)) #define USB_PLL_PSC (1 << PLLP0) #elif (defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega32U4__)) #define USB_PLL_PSC (1 << PINDIV) diff --git a/LUFA/ManPages/ChangeLog.txt b/LUFA/ManPages/ChangeLog.txt index 5107768af6..4c8a2f64cf 100644 --- a/LUFA/ManPages/ChangeLog.txt +++ b/LUFA/ManPages/ChangeLog.txt @@ -35,6 +35,8 @@ * - Fixed XPLAIN board Dataflash driver broken due to incorrect preprocessor commands * - Fixed inverted XPLAIN LED driver output (LED turned on when it was supposed to be turned off, and vice-versa) * - Fixed Class Driver struct interface numbers in the KeyboardMouse and VirtualSerialMouse demos (thanks to Renaud Cerrato) + * - Fixed invalid USB controller PLL prescaler values for the ATMEGAxxU2 controllers + * - Fixed lack of support for the ATMEGA32U2 in the DFU and CDC class bootloaders * * \section Sec_ChangeLog091223 Version 091223 * diff --git a/Projects/Incomplete/Webserver/Lib/uip/conf/clock-arch.c b/Projects/Incomplete/Webserver/Lib/uip/conf/clock-arch.c index c3e281ebdd..8363d96e08 100644 --- a/Projects/Incomplete/Webserver/Lib/uip/conf/clock-arch.c +++ b/Projects/Incomplete/Webserver/Lib/uip/conf/clock-arch.c @@ -12,7 +12,7 @@ volatile clock_time_t clock_datetime = 0; //Overflow interrupt -ISR(TIMER0_OVF_vect) +ISR(TIMER1_COMPA_vect) { clock_datetime += 1; } @@ -20,14 +20,10 @@ ISR(TIMER0_OVF_vect) //Initialise the clock void clock_init() { - //Activate overflow interrupt for timer0 - TIMSK0 |= (1< typedef uint16_t clock_time_t; -#define CLOCK_CONF_SECOND (F_CPU / 1024 / 255) //Freqency divided prescaler and counter register size +#define CLOCK_CONF_SECOND 100 void clock_init(void); clock_time_t clock_time(void); diff --git a/Projects/Incomplete/Webserver/Webserver.c b/Projects/Incomplete/Webserver/Webserver.c index e6ef9f018e..97c35d7836 100644 --- a/Projects/Incomplete/Webserver/Webserver.c +++ b/Projects/Incomplete/Webserver/Webserver.c @@ -57,13 +57,13 @@ USB_ClassInfo_RNDIS_Host_t Ethernet_RNDIS_Interface = }, }; -volatile uint8_t uIPManagementTimeout; +struct timer ConnectionTimer, ARPTimer; +uint16_t MillisecondTickCount; /** ISR for the management of the connection management timeout counter */ ISR(TIMER0_COMPA_vect, ISR_BLOCK) { - if (uIPManagementTimeout) - uIPManagementTimeout--; + MillisecondTickCount++; } void TCPCallback(void) @@ -186,9 +186,8 @@ void ProcessIncommingPacket(void) printf("0x%02X ", uip_buf[i]); printf("\r\n\r\n"); - #define BUF ((struct uip_eth_hdr *)&uip_buf[0]) - - if (BUF->type == HTONS(UIP_ETHTYPE_IP)) + struct uip_eth_hdr* EthernetHeader = (struct uip_eth_hdr*)&uip_buf[0]; + if (EthernetHeader->type == HTONS(UIP_ETHTYPE_IP)) { /* Filter packet by MAC destination */ uip_arp_ipin(); @@ -200,7 +199,7 @@ void ProcessIncommingPacket(void) if (uip_len > 0) uip_arp_out(); } - else if (BUF->type == HTONS(UIP_ETHTYPE_ARP)) + else if (EthernetHeader->type == HTONS(UIP_ETHTYPE_ARP)) { /* Process ARP packet */ uip_arp_arpin(); @@ -221,8 +220,10 @@ void ProcessIncommingPacket(void) void ManageConnections(void) { - if (!(uIPManagementTimeout)) + if (timer_expired(&ConnectionTimer)) { + timer_reset(&ConnectionTimer); + LEDs_SetAllLEDs(LEDMASK_USB_BUSY); for (uint8_t i = 0; i < UIP_CONNS; i++) @@ -235,12 +236,14 @@ void ManageConnections(void) RNDIS_Host_SendPacket(&Ethernet_RNDIS_Interface, &uip_buf, uip_len); } - uip_arp_timer(); - - uIPManagementTimeout = 250; - LEDs_SetAllLEDs(LEDMASK_USB_READY); } + + if (timer_expired(&ARPTimer)) + { + timer_reset(&ARPTimer); + uip_arp_timer(); + } } /** Configures the board hardware and chip peripherals for the demo's functionality. */ @@ -258,22 +261,21 @@ void SetupHardware(void) LEDs_Init(); USB_Init(); - /* Millisecond timer initialization for managing the command timeout counter */ - OCR0A = ((F_CPU / 64) / 1000); - TCCR0A = (1 << WGM01); - TCCR0B = ((1 << CS01) | (1 << CS00)); - + /* uIP Timing Initialization */ + clock_init(); + timer_set(&ConnectionTimer, CLOCK_SECOND / 2); + timer_set(&ARPTimer, CLOCK_SECOND * 10); + /* uIP Stack Initialization */ uip_init(); - uip_ipaddr_t IPAddress, Netmask, GatewayIPAddress; - uip_ipaddr(&IPAddress, 192, 168, 1, 10); - uip_ipaddr(&Netmask, 0xFF, 0xFF, 0xFF, 0x00); + uip_ipaddr(&IPAddress, 192, 168, 1, 10); + uip_ipaddr(&Netmask, 255, 255, 255, 0); uip_ipaddr(&GatewayIPAddress, 192, 168, 1, 1); uip_sethostaddr(&IPAddress); uip_setnetmask(&Netmask); uip_setdraddr(&GatewayIPAddress); - + /* HTTP Webserver Initialization */ uip_listen(HTONS(80)); } diff --git a/Projects/Incomplete/Webserver/Webserver.h b/Projects/Incomplete/Webserver/Webserver.h index 9da29d6057..ef17d4c872 100644 --- a/Projects/Incomplete/Webserver/Webserver.h +++ b/Projects/Incomplete/Webserver/Webserver.h @@ -52,6 +52,7 @@ #include #include + #include /* Macros: */ /** LED mask for the library LED driver, to indicate that the USB interface is not ready. */ diff --git a/Projects/Incomplete/Webserver/makefile b/Projects/Incomplete/Webserver/makefile index 6a6e4c92ae..b51e510b6e 100644 --- a/Projects/Incomplete/Webserver/makefile +++ b/Projects/Incomplete/Webserver/makefile @@ -142,6 +142,7 @@ SRC = $(TARGET).c \ Lib/uip/psock.c \ Lib/uip/timer.c \ Lib/uip/uip-neighbor.c \ + Lib/uip/conf/clock-arch.c \ # List C++ source files here. (C dependencies are automatically generated.)