16.1 Resetting the AVR
During reset, all I/O Registers are set to their initial values, and the program starts execution from the Reset Vector. For ATmega168PB the instruction placed at the Reset Vector must be an Absolute Jump instruction (JMP) to the reset handling routine. For the ATmega48PB and ATmega88PB, the instruction placed at the Reset Vector must be a Relative Jump instruction (RJMP) to the reset handling routine. If the program never enables an interrupt source, the Interrupt Vectors are not used, and regular program code can be placed at these locations. This is also the case if the Reset Vector is in the Application section while the Interrupt Vectors are in the Boot section or vice versa (ATmega88PB/168PB only). The circuit diagram in the next section shows the reset logic.
The I/O ports of the AVR are immediately reset to their initial state when a reset source goes active. This does not require any clock source to be running.
After all reset sources have gone inactive, a delay counter is invoked, stretching the internal reset. This allows the power to reach a stable level before normal operation starts. The time-out period of the delay counter is defined by the user through the SUT and CKSEL Fuses. The different selections for the delay period are presented in the System Clock and Clock Options chapter.