On second thought, perhaps the bug is in my understanding of how it works. In the following block:
char dow0[] PROGMEM = "Ned"; char dow1[] PROGMEM = "Pon"; char dow2[] PROGMEM = "Uto"; char dow3[] PROGMEM = "Str"; char dow4[] PROGMEM = "Stv"; char dow5[] PROGMEM = "Pia"; char dow6[] PROGMEM = "Sob"; PGM_P dow[] PROGMEM = { dow0, dow1, dow2, dow3, dow4, dow5, dow6 }; k = 0; lcd_write_int16(dow[0]); // address of dow0 lcd_write_int16(dow[k]); // something unrelated is it possible that the compiler does automatic replacement of dow[0] with dow0, which is as intended, while dow[k] gets dereferenced as a pointer to data memory? Regards, Zoran _______________________________________________ AVR-GCC-list mailing list AVR-GCC-list@nongnu.org http://lists.nongnu.org/mailman/listinfo/avr-gcc-list