
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 registroMCUCR
é o interruptor geral dos resistores de pull-up. É habilitado com0
. Por padrão seu valor inicial é0
.
Código
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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; | |
} | |
} |
Muito bacana!...
ResponderExcluir