Test...
[dmxpainter.git] / src / main.c
1 // http://www.nongnu.org/avr-libc/user-manual/modules.html\r
2 \r
3 #include <inttypes.h>\r
4 \r
5 #include <avr/io.h>\r
6 #include <avr/interrupt.h>\r
7 \r
8 //#include <util/atomic.h>\r
9 \r
10 #include "config.h"\r
11 \r
12 #include "bits.h"\r
13 \r
14 #include "pins.h"\r
15 \r
16 #include "sched.h"\r
17 #include "dmx.h"\r
18 #include "tlc.h"\r
19 #include "sd.h"\r
20 \r
21 \r
22 // http://gcc.gnu.org/onlinedocs/cpp/Common-Predefined-Macros.html\r
23 #if __GNUC__ < 4\r
24 #error GCC 4.x.x required!\r
25 #endif\r
26 \r
27 //////////////////////////////////////////\r
28 // Interrupts\r
29 \r
30 // INT0:  External int, DMX sync\r
31 ISR(INT0_vect)\r
32 {\r
33 //  dmx_int_edge();\r
34 }\r
35 \r
36 // TIMER0:  8-Bit: 4 us for DMX, timeouts\r
37 ISR(TIMER0_OVF_vect)\r
38 {\r
39 //  dmx_count_frame();\r
40 }\r
41 \r
42 // TIMER1: 16-Bit: GSCLK\r
43 ISR(TIMER1_COMPA_vect)\r
44 {\r
45   tlc_start_gscycle_timeout();\r
46 }\r
47 \r
48 // TIMER2:  8-Bit: GS-Refresh-Timer\r
49 ISR(TIMER2_COMP_vect)\r
50 {\r
51   tlc_stop_gscycle();\r
52 }\r
53 \r
54 \r
55 //////////////////////////////////////////\r
56 \r
57 int main(void)\r
58 {\r
59   cli();\r
60   \r
61   // Initialize scheduler.\r
62   sched_init();\r
63 \r
64   // Initialize peripherals.\r
65   dmx_init();\r
66   tlc_init();\r
67 \r
68   sei();\r
69   // Start DMX\r
70   //dmx_start();\r
71   // not done yet, use dummy data\r
72   tlc_start();\r
73 \r
74   // Start scheduler.\r
75   sched_loop();\r
76   return 0;\r
77 }\r