Цитата(VAI @ May 4 2006, 16:34)

А Вы пример смотрели? Он под ИАР и для MSP.
Вектора прерываний в MSP430 лежат во флеши, сами их не поменяешь. Но можно делать дополнительную векторизацию - при прерывании в PC загружается адрес обработчика, а в обработчике просто тупой переход на нужную функцию - jump ...
В этом и заключена основная идея. Делаете в ОЗУ массив из указателей на функции __interrupt. На элементы этого массива указывает родная таблица прерываний во флэше. А уж поменять значение элемента массива....
В пример вникся. Мда, толково... наверно реализую. В любом случае
Единственное чего недопонял, это как
родная таблица из флеша указывает на значения элементов масива ?
Цитата(condor @ May 5 2006, 02:11)

Я делаю так:
Код
void port2_int_func1 (void)
{
//Первый обработчик
}
void port2_int_func2 (void)
{
//Второй обработчик
}
void (*port2_int_handler)(void) = port2_int_func1;
//-----------------------------------
#pragma vector = PORT2_VECTOR
//-----------------------------------
__interrupt void port2_int(void)
{
(*port2_int_handler)();
}
А дальше port2_int_handler можно присваивать указатель на любую функцию.
И никаких предупреждений.
Правда задержка вызова прерывания увеличивается с 6 до 8 тактов.
Классно, идея неплохая. Но я потому и хочу подменить вектор потому что критично по времени.
Смотреть в себя, зреть муки свои, зная, что сам ты виновник мук - вот истинное страдание.
Отладка / Софокл, "Аякс".