Тут дело в том, как компилятор avr-gcc работает c данными, размещенными в флэш-памяти. Хотя атрибут PROGMEM и говорит, что массив Sinewave размещается в флэш, компилятор непосредственно не может обращаться к элементам такого массива. Поэтому используется семейство функций pgm_read_*, которые в качестве аргумента принимают адрес во флэше. На самом деле это макроопределения, а не функции, но не суть важно. Компилятор для MSP430 может обращаться к константным данным непосредственно, для него надо писать так же, как если бы данные были в обычном массиве
AVR:
wr = pgm_read_word_near(Sinewave + j+N_WAVE/4);
MSP430:
wr = Sinewave[j+N_WAVE/4];