Настройка ввода pullup через регистры
Я могу установить pin-режим для ввода или вывода через регистры DDRx. Как я могу включить внутренний pullup resister через регистр?
@panjaap, 👍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 )
{
}
,
@Michel Keijzers
Смотрите также:
- Миграция проекта Arduino Uno R3 в Wemos D1 R2 — проблемы с распиновкой
- Нужен ли подтягивающий/понижающий резистор для цепи светодиода кнопки?
- Сколько выводов UNO имеют внутренние подтягивающие резисторы?
- Минимальное значение I2C-подтягивающий резистор для arduino
- digitalRead не читает входной контакт ESP8266-01
- Отправить SMS Arduino Uno + плата SIM900A
- Не удается загрузить код на плату Arduino на Mac
- Два порта на Uno с Ethernet-экраном
Для ясности. Вы используете тот же регистр (PORTC), который вы использовали бы для установки ВЫХОДНОГО вывода на ВЫСОКИЙ. Когда контакт является ВХОДОМ, он включает подтягивающий резистор. Таким образом, функция регистра зависит от того, является ли вывод ВХОДНЫМ или ВЫХОДНЫМ., @Gerben
@Gerben спасибо за разъяснение (добавил ссылку на ваш комментарий)., @Michel Keijzers