Estoy intentando averiguar el mapa de memoria flash de ATmega328P :
A continuación se encuentra en la hoja de datos:
El mapa de memoria del programa para ATmega328P se proporciona como 32KB: 32Kbytes = 32K * bytes
0x0000 significa 16 bits de ancho (para cada línea de memoria hay 2 bytes)
que es 16K * 16bit
Lo que entiendo de esto, la memoria flash se compone de 16K líneas de registros de 16 bits de ancho. Por lo tanto, para una instrucción en la memoria flash, el número máximo de dirección es 16K.
¿Es este 16K 2 ^ 16 o 16000?
Los últimos tres registros X X de propósito general que se utilizan para mantener las direcciones (punteros) son de 16 bits que pueden almacenar hasta 2 ^ 16 = 65536 direcciones. Así que supongo que 16K significa 65536 aquí?
Pero si es así, en la figura anterior se muestra la última línea de memoria como 0x3FFF que corresponde a 16383.
¿Qué estoy sabiendo mal aquí?