aboutsummaryrefslogtreecommitdiff
path: root/Projects
diff options
context:
space:
mode:
authorDean <Dean@d5102386-fcda-11dd-9fdb-3debd5008f28>2010-01-15 02:42:54 +0000
committerDean <Dean@d5102386-fcda-11dd-9fdb-3debd5008f28>2010-01-15 02:42:54 +0000
commita7de4c9553c58eac75d0dbff22005b60c153a3b0 (patch)
tree8f08f2db96f1c8bb4c4a09e1731b75e886abd961 /Projects
parent7297509f4af5d45f10c5d64f162a2a599b13f15b (diff)
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 Changed incomplete Webserver project over to using the uIP timer library. git-svn-id: http://lufa-lib.googlecode.com/svn/trunk@1044 d5102386-fcda-11dd-9fdb-3debd5008f28
Diffstat (limited to 'Projects')
-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
5 files changed, 31 insertions, 31 deletions
diff --git a/Projects/Incomplete/Webserver/Lib/uip/conf/clock-arch.c b/Projects/Incomplete/Webserver/Lib/uip/conf/clock-arch.c
index c3e281eb..8363d96e 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 c759d01a..9c895e56 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 e6ef9f01..97c35d78 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 9da29d60..ef17d4c8 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 6a6e4c92..b51e510b 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.)