Tutorial codevisionavr trial#
You can fix the loop count by some trial and error for 1ms or so and then use that function. You can change the loop count to adjust the delay. In above function some delay will be generated by loop at line 5. #atmel-avr #avr #gpio #pin #ddr #port : Whats this “delay.h” stuff ?
Tutorial codevisionavr code#
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 make lower nibble of port B as output and higher nibble as input :.to make all pins of port A as output pins :.to make all pins of port A as input pins :.Writing 0 to a bit in DDRx makes corresponding port pin as input, while writing 1 to a bit in DDRx makes corresponding port pin as output. Means its setting determines whether port pins will be used for input or output. (x can be replaced by A,B,C,D as per the AVR you are using)ĭDRx (Data Direction Register) configures data direction of port pins. Bit0 of these registers is associated with Pin0 of the port, Bit1 of these registers is associated with Pin1 of the port, …. Every bit in those registers configure pins of particular port. Every port has 3 registers associated with it each one with 8 bits. Got that ? If not read this para again.Ītmel AVR is 8 bit microcontroller. 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.