4ab476f794ece6d239d1a3b483b68a6f501397b8
[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 // TIMER0:  8-Bit: 4 us for DMX, timeouts
24 mcu_isr(TIMER0_OVF);
25 // USART:  RXD
26 mcu_isr(USART_RXC);
27
28 // TIMER1: 16-Bit: GSCLK
29 mcu_isr(TIMER1_COMPA);
30 // TIMER2:  8-Bit: GS-Refresh-Timer
31 mcu_isr(TIMER2_COMP);
32
33
34 //////////////////////////////////////////
35
36 int main(void)
37 {
38   cli();
39   mcu_init();
40
41   // Initialize scheduler.
42   sched_init();
43
44   // Initialize buffer.
45   buffer_init();
46
47   // Initialize peripherals.
48   //sd_init();
49   dmx_init();
50   tlc_init();
51
52   sei();
53   // Start DMX
54   //dmx_start();
55   // not done yet, use dummy data
56   //buffer_next();
57
58   // Start scheduler.
59   //sched_loop();
60
61   while (1) {
62     //buffer_next();
63     tlc_set_data_done();
64     tlc_wait_for_data();
65   }
66   return 0;
67 }