All the content (articles, and images) on this Blog are licensed under Creative Commons Attribution-ShareAlike License (Unless otherwise specified).Because of this actual delay will be slightly more than the specified one. Delay is approximate because, delay occured by instructions required for looping are ignored. This function will provide approximate delay in multiples of 1ms. For example if your uC is operating at 8MHz, then one NOP will take 125ns …Ġ05: for(p=0 p<100 p++) //This will generate approximate delayĠ12: // … repeate total 80 times. You can also put lots of assembly “NOP” instructions inside loop at line 5 and get some predictable delay.
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 ? A Video lecture on Introductory AVR programming and GPIO configuration is here: AVR microcontroller video tutorial – Part 1.
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’.