Настройка ввода pullup через регистры

Я могу установить pin-режим для ввода или вывода через регистры DDRx. Как я могу включить внутренний pullup resister через регистр?

, 👍2


1 ответ


2

Кредиты для GoForSmoke. Также смотрите комментарий Гербена ниже.

См.: https://forum.arduino.cc/index.php?topic=286145.0

byte ddrcMask =       ~
(
        (1 << DDC0) |  // pinMode( 14, INPUT ); // Set to input
        (1 << DDC1) |  // pinMode( 15, INPUT ); // Set to input
        (1 << DDC2) |  // pinMode( 16, INPUT ); // Set to input
        (1 << DDC3)    // pinMode( 17, INPUT ); // Set to input
);


byte portcMask =
(
        (1 << PORTC0) |  // digitalWrite( 14, HIGH ); // Enable the pullup
        (1 << PORTC1) |  // digitalWrite( 15, HIGH ); // Enable the pullup
        (1 << PORTC2) |  // digitalWrite( 16, HIGH ); // Enable the pullup
        (1 << PORTC3)    // digitalWrite( 17, HIGH ); // Enable the pullup
);

byte pincMask = ( (1 << PINC0) | (1 << PINC1) | (1 << PINC2) | (1 << PINC3) );


void setup( void )
{
  // Настройте контакты для ввода
  DDRC = DDRC & ddrcMask;

  // Включить подтягивания
  PORTC = PORTC | portcMask;

  // Считывание всех четырех входных данных
  uint8_t Pdat = PINC & pincMask;
}

void loop( void )
{
}
,

Для ясности. Вы используете тот же регистр (PORTC), который вы использовали бы для установки ВЫХОДНОГО вывода на ВЫСОКИЙ. Когда контакт является ВХОДОМ, он включает подтягивающий резистор. Таким образом, функция регистра зависит от того, является ли вывод ВХОДНЫМ или ВЫХОДНЫМ., @Gerben

@Gerben спасибо за разъяснение (добавил ссылку на ваш комментарий)., @Michel Keijzers