Добрый день всем!

Работаю над проектом для МК XC2765 Infineon, среда разработки Tasking C166 VX Lite.
Проблема: в обработчике прерывания (обычное прерывание, не FIRQ) вызываю функцию и передаю ей в качестве параметра указатель на структуру. Вызываемая функция записывает данные в структуру, но после возвращения в вызывающую ISR данные в структуре изменены до неузнаваемости да еще попорчены соседние переменные sad.gif((. Эта же функция при ее вызове из main работает совершенно нормально.

Фрагмент программы:

// обработчик прерывания
_interrupt(CAN_INT_VECT1) void CAN_IRQRcvHiPriority(void)
{
stCAN_SWObj RcvMessage_local; // структура, которая передается и портится
uword msg_id = 0x0020;
....
CAN_GetMsgObj( (ubyte)msg_id, &RcvMessage_local); // та самая проблемная функция
....
}

//Прототип функции CAN_GetMsgObj
uword CAN_GetMsgObj(ubyte ubObjNr, stCAN_SWObj __far *pstObj);

Пробовал использовать глобальную, а не локальную переменную типа stCAN_SWObj - никакой разницы sad.gif
После возврата из функции портится и msg_id

Pls помогите....