Fork me on GitHub

Microcontrolandos

O Blog está passando por uma fase de mudanças. Todos os posts estão sendo atualizados, códigos, links e imagens estão sendo arrumados. Conteúdos novos ainda estão por vir.

AVR: Pull-ups

Compartilhe:

Os resistores de pull-up são resistores conectados no nível lógico alto (5V). São utilizados para evitar a flutuação do nível lógico das entradas quando nenhum dispositivo estiver conectado.

O microcontrolador ATMEGA328P possui resistores de pull-up interno em todos os pino I/O. Mas como ativamos? Primeiramente precisamos definir o pino como entrada DDRx.Bn = 0. Quando fizermos isso, o bit correspondente do registro PORTx terá uma nova função, que é de ativar/desativar o resistor de pull-up do pino.

O bit PUD do registro MCUCR é o interruptor geral dos resistores de pull-up. É habilitado com 0. Por padrão seu valor inicial é 0.

Código

void main() {
//Define o pino PB0 como saída para o LED.
DDRB.B0 = 1;
//Define o pino PB1 como entrada para o botão.
DDRB.B1 = 0;
//Habilita o resistor de pull-up do pino PB1.
PORTB.B1 = 1;
while(1) {
//Como estamos utilizando o resistor de pull-up, o estado
//não pressionado do botão é (PB1 = 1). Mas queremos que ao
//pressionar (PB1 = 0) acenda o LED(PB0 = 1).
PORTB.B0 = !PINB.B1;
}
}
view raw avr_pullups.c hosted with ❤ by GitHub

Escreva um comentário

Um comentário: