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