aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Bootloaders/CDC/Descriptors.h38
-rw-r--r--Bootloaders/DFU/Descriptors.h29
-rw-r--r--LUFA/Drivers/Peripheral/AVRU4U6U7/ADC.h2
-rw-r--r--LUFA/Drivers/USB/LowLevel/LowLevel.h6
-rw-r--r--LUFA/ManPages/ChangeLog.txt2
-rw-r--r--Projects/Incomplete/Webserver/Lib/uip/conf/clock-arch.c14
-rw-r--r--Projects/Incomplete/Webserver/Lib/uip/conf/clock-arch.h2
-rw-r--r--Projects/Incomplete/Webserver/Webserver.c44
-rw-r--r--Projects/Incomplete/Webserver/Webserver.h1
-rw-r--r--Projects/Incomplete/Webserver/makefile1
10 files changed, 80 insertions, 59 deletions
diff --git a/Bootloaders/CDC/Descriptors.h b/Bootloaders/CDC/Descriptors.h
index 94883be20..ac02ff652 100644
--- a/Bootloaders/CDC/Descriptors.h
+++ b/Bootloaders/CDC/Descriptors.h
@@ -40,29 +40,21 @@
#include <LUFA/Drivers/USB/USB.h>
/* 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 4faea4251..32d58285b 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 f02281f3f..472e1df47 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 f20cb72bc..aa760cd35 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 5107768af..4c8a2f64c 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 c3e281ebd..8363d96e0 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<<TOIE0);
-
- //Use prescaler 1024
- TCCR0B |= ((1<<CS12)|(1<<CS10));
-
- //Activate interrupts
- sei();
+ OCR1A = ((F_CPU / 1024) / 100);
+ TCCR1A = (1 << WGM12);
+ TCCR1B = ((1 << CS12) | (1 << CS10));
+ TIMSK1 = (1 << OCIE1A);
}
//Return time
diff --git a/Projects/Incomplete/Webserver/Lib/uip/conf/clock-arch.h b/Projects/Incomplete/Webserver/Lib/uip/conf/clock-arch.h
index c759d01a3..9c895e56d 100644
--- a/Projects/Incomplete/Webserver/Lib/uip/conf/clock-arch.h
+++ b/Projects/Incomplete/Webserver/Lib/uip/conf/clock-arch.h
@@ -5,7 +5,7 @@
#include <stdint.h>
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 e6ef9f018..97c35d783 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 9da29d605..ef17d4c87 100644
--- a/Projects/Incomplete/Webserver/Webserver.h
+++ b/Projects/Incomplete/Webserver/Webserver.h
@@ -52,6 +52,7 @@
#include <uip.h>
#include <uip_arp.h>
+ #include <timer.h>
/* 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 6a6e4c92a..b51e510b6 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.)