diod.club » Проектирование и дебаг » Программирование » avr c/c++ препроцессор для макроса PORT_x

Страниц (1): [1]
 

1. sunjob - 23 Ноября, 2016 - 06:40:30 - перейти к сообщению
добрый день

есть ли возможность использовать препроцессор подобным образом? (пример в коде, естестенно "как есть" не прокатывает)

т.е. необходимо в зов-ти от определения порта (PORTB, PORTC, or PORTD) - вставлять соответствующие функции прерывания

AVR/Arduino

спасибо

CODE:

#define PORT_XXX = PORTC

// ...

#if (PORT_XXX == PORTB)
ISR(PCINT0_vect)
#elif (PORT_XXX == PORTC)
ISR(PCINT1_vect)
#elif (PORT_XXX == PORTD)
ISR(PCINT2_vect)
#endif
{
// ...
}
2. Леонид Иванович - 25 Ноября, 2016 - 14:09:19 - перейти к сообщению
Почему бы просто не определить
CODE:

#define PORT_MY PORTC
#define PCINT_MY PCINT1_vect
3. sunjob - 07 Декабря, 2016 - 03:48:54 - перейти к сообщению
ну вот была такая задачка, упростить код

CODE:

#define ID_PORTB 0
#define ID_PORTC 1
#define ID_PORTD 2
#define XXX_ID_PORT ID_PORTC

...

#if (XXX_ID_PORT == ID_PORTB)
ISR(PCINT0_vect)
#elif (XXX_ID_PORT == ID_PORTC)
ISR(PCINT1_vect)
#elif (XXX_ID_PORT == ID_PORTD)
ISR(PCINT2_vect)
#endif
{
//...
}


т.е. такой вариант прокатывает, но хотелось бы что-то более наглядное ...
4. koyodza - 07 Декабря, 2016 - 10:01:31 - перейти к сообщению
Не понятно зачем тут использовать сравнение. Лучше сразу сделать типа такого:
CODE:

#define ISR_PORTB PCINT0_vect
#define ISR_PORTC PCINT1_vect
#define ISR_PORTD PCINT2_vect

#define XXX_ISR_PORT ISR_PORTC

...

ISR(XXX_ISR_PORT)
5. sunjob - 17 Декабря, 2016 - 13:13:20 - перейти к сообщению
Цитата:
Почему бы просто не определить

#define PORT_MY PORTC
#define PCINT_MY PCINT1_vect


определяем в заголовочном файле порт, на котором будет что то висеть, а в коде уже ни чего не надо "мудрить" - обработчик сам определится

Цитата:
Не понятно зачем тут использовать сравнение. Лучше сразу сделать типа такого:

ну точно, должно по идее сработать (а слона то я и не заметил и ... выплеснул ребенка... :о)

спасибо

Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
UaExBB Style

[Script Execution time: 0.0063]     [ Gzip Disabled ]