Уважаемые знатоки GCC!
Захотел сделать "гибкий" код (для AVR), в котором бы можно было гибко варьировать обработчики прерываний. Как-то так:
Код
#define MY_INTERRUPT TIMER0_OVF_vect
...
ISR(MY_INTERRUPT){
...
}
Разумеется, это работает.
Теперь вторая хотелка: по значению константы-макроса
MY_INTERRUPT делать ту или иную инициализацию периферии, вот примерно так:
Код
#if MY_INTERRUPT == TIMER0_OVF_vect
// тут инициализация таймера 0
#elif MY_INTERRUPT == ADC_vect
// тут инициализация АЦП
#elif MY_INTERRUPT == RXC_vect
// тут инициализация USART
// и т.д.
#endif
И вот это не работает:
ВСЕГДА срабатывает первый
#if, какой бы вектор не был присвоен
MY_INTERRUPT!
Что я делаю не так? Как надо?
Я бы взял частями... но мне надо сразу.