PINx и digitalRead возвращает разный результат

alexbmd
Offline
Зарегистрирован: 15.01.2016
  Serial.println("HIGH: ");
  PORTC |= _BV(PC7);

  Serial.println(digitalRead(13));  //return 1
  Serial.println(String(PINC & _BV(PC7))); //return 128

выполняя чтения порта PC7 (aka Pin 13)  у которого статус HIGH я ожидаю увидеть 1 а возвращает почемуто 128. почему?

 

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

так и должно быть. 128 это единица в 7 разряде.

b707
Offline
Зарегистрирован: 26.05.2017

alexbmd пишет:

выполняя чтения порта PC7 (aka Pin 13)  у которого статус HIGH я ожидаю увидеть 1 а возвращает почемуто 128. почему?

 

Вы просто чтение выполняете неправильно. Нужный бит Вы выделили, а вправо сдвинуть забыли.

Попробуйте вот так, если ничего не напутал:

Serial.println("HIGH: ");
PORTC |= _BV(PC7);

Serial.println(digitalRead(13));  //return 1
Serial.println((PINC & _BV(PC7) >> PC7)); //return 1

ну а зачем вы результат еще и в Стринг засунули - этому уже вообще обьясненья нет.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

b707 пишет:
этому уже вообще обьясненья нет.
Ну, как нет? :)))

alexbmd
Offline
Зарегистрирован: 15.01.2016

для подстраховки, а то принт тут каприщзный.. спасибо