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

((. Эта же функция при ее вызове из 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 - никакой разницы

После возврата из функции портится и msg_id
Pls помогите....
Сообщение отредактировал РРоман - Jan 31 2013, 14:15