|
|
  |
Векторы прерывания в ИАРе, или дурацкий вопрос... |
|
|
|
May 6 2008, 13:03
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(dxp @ May 6 2008, 14:55)  Почему именно startup? Разве нельзя вектора руками в любом ассемблером файле разместить? Разумеется можно, просто уже готовый и достаточно традиционный в том числе и для подобных вещей и там уже наверняка, как минимум reset-ый вектор описан - просто добавить и все. Цитата(Непомнящий Евгений @ May 6 2008, 14:28)  to zltigo: Не могли бы вы пояснить, в чем смысл в написании собственного startup? Например, для прямого и естественного решения поставленной задачи  . Писать его незачем - достаточно подправить используемый по умолчанию.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
May 7 2008, 08:27
|

Частый гость
 
Группа: Новичок
Сообщений: 153
Регистрация: 29-03-07
Из: Саратов
Пользователь №: 26 613

|
а разве нельзя сделать просто? Код #pragma vector=vector_1 __interrupt void function(void);
#pragma vector=vector_2 __interrupt void fuction(void);
...
#pragma vector=vector_n __interrupt void function(void) {
. . .
}
--------------------
!!! All you need is LOVE !!!
|
|
|
|
|
May 7 2008, 08:53
|

Гуру
     
Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659

|
Цитата(Freeze Anti @ May 7 2008, 15:27)  а разве нельзя сделать просто? А как function будет знать, с какого вектора ее вызвали??? Я предлагал вот так: Код typedef char VECTOR_ID;
#pragma vector=vector_1 __interrupt void isr_vector_1(void) { isr_main(1); }
#pragma vector=vector_2 __interrupt void isr_vector_2(void) { isr_main(2); } ...
#pragma vector=vector_n __interrupt void isr_vector_n(void) { isr_main(n); }
void isr_main(VECTOR_ID id) { switch(id) { case 1: .... break;
case 2: ... break;
case n: ... break; } }
--------------------
|
|
|
|
|
May 7 2008, 20:46
|
Частый гость
 
Группа: Свой
Сообщений: 169
Регистрация: 10-11-05
Из: Воронеж
Пользователь №: 10 687

|
Цитата(Непомнящий Евгений @ May 7 2008, 12:01)  насколько я понял топикстартера, ему не надо знать, с какого вектора вызвали. Если надо - то только так как вы предлагаете, наверное. Действительно не надо. И это не заглушка, а счетчик событий, причем каждое событие висит на отдельном внешнем прерывании и их НЕ надо разделять. Нужно лишь общее количество. Спасибо всем откликнувшимся. Если бы не Сергей Борщ с его полезным советом, то единственным нормальным решением в моем случае было бы написание своего startup'а. Но т.к. мой случай очень простой, хватит и #pragma директивы. Еще раз всем спасибо.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|