e8a676b1af12462e445af2ed1b04e95bf12e9196
[pub/USBasp.git] / Projects / Webserver / Lib / uip / clock.c
1 #include <stdint.h>
2 #include <stdlib.h>
3 #include <stdio.h>
4 #include <avr/interrupt.h>
5 #include <avr/io.h>
6 #include <avr/sfr_defs.h>
7
8 #include "clock.h"
9
10 //Counted time
11 volatile clock_time_t clock_datetime = 0;
12
13 //Overflow interrupt
14 ISR(TIMER1_COMPA_vect)
15 {
16 clock_datetime += 1;
17 }
18
19 //Initialise the clock
20 void clock_init()
21 {
22 OCR1A = ((F_CPU / 1024) / 100);
23 TCCR1B = ((1 << WGM12) | (1 << CS12) | (1 << CS10));
24 TIMSK1 = (1 << OCIE1A);
25 }
26
27 //Return time
28 clock_time_t clock_time()
29 {
30 clock_time_t time;
31
32 cli();
33 time = clock_datetime;
34 sei();
35
36 return time;
37 }