4.3.6.2 Data Pointers

Pointers to objects that are located in only the data space are all 2 bytes wide.

A pointer qualified with __flash or __flashn, where n can range from 1 thru 5, can access objects data objects stored in program memory. Both these pointer types are 16 bits wide. Pointers to __flash use the lpm instruction to access data; pointers to __flashn use the RAMPZ register and the elpm instruction. Neither pointer can be used to access objects in RAM.

These pointers must be assigned the addresses of objects that are defined using the same qualifiers, so for example, a pointer to __flash1 must only be assigned the addresses of objects that also use the __flash1 qualifier.