diod.club diod.club
Проектирование, изготовление, ремонт и обслуживание электроники
 Помощь   


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

> Без описания
sunjob
  Отправлено: 23 Ноября, 2016 - 06:40:30
Post Id
Newbie  (35)
Репутация: 0

добрый день

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

т.е. необходимо в зов-ти от определения порта (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
{
// ...
}
Леонид Иванович Администратор
  Отправлено: 25 Ноября, 2016 - 14:09:19
Post Id
Super Member  (860)
Откуда: Minsk
Репутация: 35

Почему бы просто не определить
CODE:

#define PORT_MY PORTC
#define PCINT_MY PCINT1_vect
sunjob
  Отправлено: 07 Декабря, 2016 - 03:48:54
Post Id
Newbie  (35)
Репутация: 0

ну вот была такая задачка, упростить код

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
{
//...
}


т.е. такой вариант прокатывает, но хотелось бы что-то более наглядное ...

(Отредактировано автором: 07 Декабря, 2016 - 03:50:16)

koyodza
  Отправлено: 07 Декабря, 2016 - 10:01:31
Post Id
Advanced Member  (312)
Откуда: Kyiv
Репутация: 6

Не понятно зачем тут использовать сравнение. Лучше сразу сделать типа такого:
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)
sunjob
  Отправлено: 17 Декабря, 2016 - 13:13:20
Post Id
Newbie  (35)
Репутация: 0

Цитата:
Почему бы просто не определить

#define PORT_MY PORTC
#define PCINT_MY PCINT1_vect


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

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

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

спасибо
Страниц (1): [1]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Программирование »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 




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

[Script Execution time: 0.009]     [ Gzip Disabled ]