07d3c222052b1009091c74e1c8117d41ba87f7fa
[dmxpainter.git] / src / mcu.h
1 #pragma once
2
3 #include <inttypes.h>
4
5 #include <avr/io.h>
6 #include <avr/interrupt.h>
7
8 #include "util/pins.h"
9
10 #include "config.h"
11
12 #define nop() asm volatile ("nop")
13
14 #define mcu_isr(name) ISR(name ## _vect) { INT_ ## name (); } int main(void)
15
16 #ifdef __AVR_ATmega8__
17 #define  MCU "atmega8"
18 #include "mcu/atmega8.h"
19 #include "mcu/atmega8_pins.h"
20 #else
21 #error Unknown MCU
22 #endif
23
24
25
26 #define mcu_init() pin_out(PIN_DEBUG)
27 volatile uint8_t gg_mcu_debug;
28 #define mcu_debug_apply() do { if (gg_mcu_debug) { pin_on(PIN_DEBUG); } else { pin_off(PIN_DEBUG); } } while (0)
29 #define mcu_debug()       do { gg_mcu_debug = ~gg_mcu_debug; mcu_debug_apply(); } while (0)
30 #define mcu_debug_on()    do { gg_mcu_debug =             1; mcu_debug_apply(); } while (0)
31 #define mcu_debug_off()   do { gg_mcu_debug =             0; mcu_debug_apply(); } while (0)