diff options
-rw-r--r-- | Bootloaders/CDC/Descriptors.h | 38 | ||||
-rw-r--r-- | Bootloaders/DFU/Descriptors.h | 29 | ||||
-rw-r--r-- | LUFA/Drivers/Peripheral/AVRU4U6U7/ADC.h | 2 | ||||
-rw-r--r-- | LUFA/Drivers/USB/LowLevel/LowLevel.h | 6 | ||||
-rw-r--r-- | LUFA/ManPages/ChangeLog.txt | 2 | ||||
-rw-r--r-- | Projects/Incomplete/Webserver/Lib/uip/conf/clock-arch.c | 14 | ||||
-rw-r--r-- | Projects/Incomplete/Webserver/Lib/uip/conf/clock-arch.h | 2 | ||||
-rw-r--r-- | Projects/Incomplete/Webserver/Webserver.c | 44 | ||||
-rw-r--r-- | Projects/Incomplete/Webserver/Webserver.h | 1 | ||||
-rw-r--r-- | Projects/Incomplete/Webserver/makefile | 1 |
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.)
|