This is because that pin is initialized as an input pin by DDRx. DDRx: Data Direction Register Before reading or writing the data from the ports, their direction needs to be set. Unless the PORT is configured as output, the data from the registers will not go to controller pins. Contents: 00:04 AVR CPU Core Overview 00:44 CPU Block Diagram 02:13 ALU Overview 03:18 What is a Register? Step 5: Review the Application Code. have this behavior. Some excerpts an the ATmega16 show exactly that: Step 1: Create Project for the SAM V71. The prescaler can be set to 8, 64, 256 or 1024 compared to the system clock. This register is used to configure the PORT pins as Input or Output. Step 2: Add Drivers/Components/Services using ASF Wizard. Step 3: Configure Evaluation Board. Step 4: Add Source File and Review Code to Configure Peripherals. As the program memory is organised word-wise (one command on one adress consists of 16 bits or two bytes or one word) the least significant bit selects the lower or higher byte (0=lower byte, 1= higher byte). Each instruction and it's associated parameters are broken down into a simpler language called Assembly (AVR instruction set for ATMEL chips, MIPS instruction set for PIC chips), and Assembly instructions are designed to directly manipulate the bits in registers. The command copies the byte at adress Z in the program memory to the register R0. Inspite of being set as HIGH in the PORTx register, the output is LOW. Writing 1's to DDRx will make the corresponding PORTx pins as output. The I/O ports of an AVR are set to INPUT / Tri-State / Hi-Z (DDRx = 0x00) upon reset. Step 6: Debug Your Application. An AVR at 8 MHz and a timer prescaler can count (when using a 16-bit timer) (0xFFFF + 1) * 1024 clock cycles = 67108864 clock cycles which is 8.388608 seconds. It's the safest state for a pin to be in. Hence, PORTx cannot change the properties of that pin. Most microcontrollers (if not all?) So yes, you can rely on the ports to be set automatically as inputs.