По умолчанию контакты ATmega AVR находятся в состоянии, известном как high-impedance , что означает отсутствие напряжения по умолчанию. Если вы не подключаете какой-либо выход к входу с высоким импедансом, мы говорим, что вывод плавающий , и вывод может легко считывать высокий или низкий уровень; Вы не можете рассчитывать на то, что это определенное значение.
Каждый вывод имеет внутренний подтягивающий резистор, который вы можете включить. Подтягивающий резистор слабо подтягивает линию вверх, поэтому, когда его ничто не приводит в действие, его цифровое входное значение будет равно 1. Если вы включите подтягивающий резистор, линия больше не будет иметь высокое сопротивление или плавающее.
Например, чтобы установить PD2 в качестве входа и включить его подтягивание, вы можете использовать этот код C:
DDRD &= ~(1 << 2);
PORTD |= (1 << 2);