Как получить имя порта по номеру пина? Помогите, друзья!

ips-ua
Offline
Зарегистрирован: 07.05.2021

Есть макрос bitSet(PORTD, 5);

Например пин 13 (светодиод) - это 5 бит порта B.

Как по номеру 13 получить имя PORTB или ссылку на него. Попробовал так:

#define CS 13
byte bitCS;
byte *outCS;

void setup() {
  bitCS = digitalPinToPCMSKbit(CS);
  outCS = portOutputRegister(digitalPinToPort(CS));
}

void loop() {
  Blink();
}

void Blink(){
  bitSet(*outCS, bitCS);
  delay(1000);
  bitClear(*outCS, bitCS);
  delay(1000);
}
 

Работает без проблем! Но в другом скетче та же методика НЕ работает. Если вместо *outCS пишу PORTD (там пин 6, а не 13), все нормально...

Буду очень признателен за помощь!

rkit
Offline
Зарегистрирован: 23.11.2016

volatile забыл

sadman41
Offline
Зарегистрирован: 19.10.2016

Так-то макросу пофигу в каком скетчей работать или не работать.

В нашей поликлинике диагноз по полубаночке мочи не ставят, нужна трехлитровая. А ещё лучше - штук пять трехлитровых.

ips-ua
Offline
Зарегистрирован: 07.05.2021

Огромное спасибо! Работает!