


Lot more examples of AVR GPIO setup and control are listed in this post: ATMEL AVR Tips – Input Output Ports Code Snippets.PORTC |= 0b00000011 //enable pull ups for //only first two pins while(1) to make port a as input with pull-ups enabled and read data from port a.NOTE: while using on-chip ADC, ADC port pins must be configured as tri-stated input. Thus while, taking inputs from pins / using micro-switches to take input, always enable pull-up resistors on input pins. This may cause your program to go haywire, if it depends on input from that particular pin. If you try to read corresponding bit in pin register, its state cannot be predicted. kept unconnected) then even small static charge present on surrounding objects can change logic state of pin. In this case, if pin is left floating (i.e. We can say, it is now simply connected to input of some OpAmp inside the uC and no other circuit is driving it from uC. Then pin goes into state of high impedance. However, if you configure pin as tri-state. connect to ground / or pull-down), only then it will be read as 0.

Now, when you externally drive that pin to zero(i.e. So even if you don’t connect anything to pin and if you try to read it, it will read as 1. In input mode, when pull-up is enabled, default state of pin becomes ‘1’. In order to activate pull-up resister, set bit in PORTx to 1, and to deactivate (i.e to make port pin tri stated) set it to 0. make port pins as inputs, then corresponding bits in PORTx register are used to activate/deactivate pull-up registers associated with that pin. It will be explained shortly.ĭDRC |= 0b00000001 //set only 0th pin of port c as outputĢ) To activate/deactivate pull up resistors – when port is configures as input Either you can use port pins as tri stated inputs or you can activate internal pull up. If port is made output, then reading PINx register will give you data that has been output on port pins. This is done by setting bits in DDRx to zero. In order to read the data from port pin, first you have to change port’s data direction to input. PINx (Port IN) used to read data from port pins.

To change setting for one single pin of the port, you have to change a particular bit in associated register. Thus in order to change setting for one port, you have to change setting for all port pins of that port. NOTE : I will frequently refer to ‘configuring pin’ or simply ‘pin’. 2.2 Blink LEDs on PB with different patterns according to given input.
