реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Вызов функций из ISR в Tasking C166
РРоман
сообщение Jan 31 2013, 14:05
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 36
Регистрация: 24-01-08
Пользователь №: 34 374



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

Работаю над проектом для МК 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 помогите....

Сообщение отредактировал РРоман - Jan 31 2013, 14:15
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 17:29
Рейтинг@Mail.ru


Страница сгенерированна за 0.0134 секунд с 7
ELECTRONIX ©2004-2016