Я не хочу получать входы в мой Atmega16L от кнопки. В идеале я могу использовать внутренние подтягивания, поэтому мне не нужно прикреплять их снаружи.
Я свел код до минимума:
void main(void) {
// SFIOR &= ~(1<<PUD); // Turn off Pull-up disable
DDRD = 0xFF; // Output PORT D
DDRA = 0x00; // Input PORT A
PORTA = 0xFF; // Pull-up on PORT A
_delay_ms(100);
while (1)
{
if (PINA & (1<<PA1)) // Check if PA0 is High
PORTD |= (1<<PD5); // Set PD5 to High
else
PORTD &= ~(1<<PD5); // Set PD5 to Low
}
return;}
Я бы ожидал, что пин PD5 должен быть высоким, потому что PA1 подтягивается внутренним подтягиванием, установите в строке 6. Но нет, когда я запускаю код, на контакте PD5 низкий уровень, и мне нужно подключить контакт PA1 к 5V, чтобы получить высокий сигнал на PD5.
Короткие вещи Короче говоря, похоже, подтягивание не активно ...
Если попытался работать со SFIOR, но PUD по умолчанию отключен, насколько я знаю .
С уважением, Феликс
РЕДАКТИРОВАТЬ: запрошенные изображения: