проблема с памятью решена
...наткнулся на следующую проблемму, присущую именно пути портирования с IAR на GCC
как я понял из инета проблема эта у многих, не не понял как ее обходят, да и не нашел по форумам.
дело в том что в той программе что я редактирую есть некоторое веселье, в ней используется 2 длинных массива по 32k тоесть всего 64К данных в массиве и чуточку кода на 20К
...в иаре они были объявленны как
farflash unsigned char ga_field [32385] = {
0x0FF,0x0FF,....
}
Но для GCC я их сделал как
//farflash unsigned char ga_field [32385] = {
//__attribute__((progmem))
__ATTR_PROGMEM__ const unsigned char ga_field [32385] = {
0x0FF,0x0FF,....
}
если верить что я все верно понял их мануала на GCC и из интернета - то это правильно
Но есть у AVR друга проблемма, он не умеет прагать через длину кода с раздывом в адресе в 64K....
и видать с этим сзязано подвисание, вот я его локализовал и вот это место
SPDR = ga_field[i];
// veter
//------------------------------------------
// YELOW_1; //LED1_off; LEDs |= LED1C
RED_1; //LED1_off; LEDs |= LED1A
// YELOW_2; //LED2_off; LEDs |= LED2C
RED_2; //LED2_off; LEDs |= LED2A
//------------------------------------------
while(!(SPSR&SPIF));
// veter
//------------------------------------------
YELOW_1; //LED1_off; LEDs |= LED1C
// RED_1; //LED1_off; LEDs |= LED1A
YELOW_2; //LED2_off; LEDs |= LED2C
// RED_2; //LED2_off; LEDs |= LED2A
//------------------------------------------
так вот я вижу только загоревшиеся красные сретодиоды RED_1; и RED_2; и потом срабатывает ватч дог на опереции чтения флага статуса о собитии прерывания - while(!(SPSR&SPIF));.
тоесть желтых не вижу - что и логично раз сработал ватчдог.
значит проблемма может быть или при операции (SPDR = ga_field[i]

или же в вызове чтения флага прерывания...
теперь,
помогите пожалуйста дальше разобраться - а то тут я не могу уже понять куда копать
Ребята - крыша улетает, нид хелп.
.