It works... almost.
[dmxpainter.git] / src / main.c
1 // http://www.nongnu.org/avr-libc/user-manual/modules.html\r
2 \r
3 #include "mcu.h"\r
4 \r
5 #include "sched.h"\r
6 #include "dmx.h"\r
7 #include "tlc.h"\r
8 #include "sd.h"\r
9 \r
10 #include "buffer.h"\r
11 \r
12 \r
13 // http://gcc.gnu.org/onlinedocs/cpp/Common-Predefined-Macros.html\r
14 #if __GNUC__ < 4\r
15 #error GCC 4.x.x required!\r
16 #endif\r
17 \r
18 //////////////////////////////////////////\r
19 // Interrupts\r
20 \r
21 // INT0:  External int, DMX sync\r
22 mcu_isr(INT0);\r
23 \r
24 // TIMER0:  8-Bit: 4 us for DMX, timeouts\r
25 mcu_isr(TIMER0_OVF);\r
26 \r
27 // TIMER1: 16-Bit: GSCLK\r
28 mcu_isr(TIMER1_COMPA);\r
29 // TIMER2:  8-Bit: GS-Refresh-Timer\r
30 mcu_isr(TIMER2_COMP);\r
31 \r
32 \r
33 //////////////////////////////////////////\r
34 \r
35 int main(void)\r
36 {\r
37   cli();\r
38   \r
39   // Initialize scheduler.\r
40   sched_init();\r
41 \r
42   // Initialize peripherals.\r
43   //dmx_init();\r
44   tlc_init();\r
45 \r
46   for (uint8_t i = 0; i < 15; i++)\r
47     for (uint8_t rgb = 0; rgb < 3; rgb++)\r
48       gg_buffer_gs[i * 3 + rgb] = 0x10 | (rgb + 1);\r
49 \r
50 \r
51   sei();\r
52   // Start DMX\r
53   //dmx_start();\r
54   // not done yet, use dummy data\r
55   tlc_set_data_done();\r
56 \r
57   // Start scheduler.\r
58   sched_loop();\r
59   return 0;\r
60 }\r