The atmega16 data sheet says that it has 16KB on-chip flash program memory, but the memory map for flash memory ranges from 0x0000 to 0x1FFF(8192, i.e, 8KB) only, which gives a range of only 8KB flash memory. Also the program counter is only 13 bits wide, which can access only 8KB of memory.
In my understanding the address space should have been 0x0000 to 0x3FFF, which would address the whole 16KB of flash, and the program counter should have been 14 bits to access the whole 16KB flash memory. I am confused with this clash between the total flash memory and the memory map of flash memory.
Where am I going wrong? Please help. Thanks in advance.