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

 
 
> Замена обработчика прерывания в WinAVR
PhX
сообщение Dec 16 2008, 04:23
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 473
Регистрация: 10-09-06
Из: Тольятти. Самарская обл.
Пользователь №: 20 249



Нужно использовать различные обработчики прерывания в зависимости от случая. Например в начале программы
обработчик_пр = функция 1
Код
ISR(INT1_vect)
{
обработчик_пр
}

а затем где-то по далее необходимо заменить его на
обработчик_пр = функция 2
Как это грамотно сделать в WinAVR?


--------------------
Если все, то не я...
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
733259
сообщение Dec 16 2008, 11:24
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 205
Регистрация: 8-03-05
Пользователь №: 3 146



А в своем теле функция никакие регистры не использует?
Даже r24?
ИМХО можно так делать, если вызываемые функции написать на ассемблере (проанализировать листинг) и самостоятельно сохранять регистры.
Кстати Ваш ужас реализуется куда короче и с правильным сохранением:
Код
SYGNAL(SIG_INTERRUPT1){
  asm("icall"::"z"(vector_int1);
}
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Dec 16 2008, 11:38
Сообщение #3


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(733259 @ Dec 16 2008, 15:24) *
А в своем теле функция никакие регистры не использует?

Понятно. Забыл о том, что из асма сишные функции никогда в жизни не вызывал и что за сохранение call-used отвечает вызывающий. Тогда это действительно проблема.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- PhX   Замена обработчика прерывания в WinAVR   Dec 16 2008, 04:23
- - 733259   ИМХО никак, т.к. в AVR адреса векторов фиксированы...   Dec 16 2008, 04:35
- - MrYuran   Определить указатель на функцию и поставить его в ...   Dec 16 2008, 05:59
|- - PhX   Цитата(MrYuran @ Dec 16 2008, 09:59) Опре...   Dec 16 2008, 06:13
|- - ReAl   Цитата(PhX @ Dec 16 2008, 08:13) Кодint m...   Dec 16 2008, 07:49
|- - PhX   Цитата(ReAl @ Dec 16 2008, 11:49) Оно, ко...   Dec 16 2008, 09:19
|- - defunct   Цитата(PhX @ Dec 16 2008, 11:19) Ну хоть ...   Dec 20 2008, 01:03
- - Qwertty   Вызов функции по указателю внутри обработчика веде...   Dec 16 2008, 08:36
|- - MrYuran   Цитата(Qwertty @ Dec 16 2008, 11:36) Вызо...   Dec 17 2008, 11:34
|- - _Pasha   Цитата(MrYuran @ Dec 17 2008, 15:34) а чт...   Dec 17 2008, 11:46
|- - Сергей Борщ   Цитата(_Pasha @ Dec 17 2008, 13:46) Не, т...   Dec 17 2008, 14:31
- - _Pasha   Векторизация прерываний. Например, int1 Soft_vect...   Dec 16 2008, 09:19
|- - _Pasha   Цитата(_Pasha @ Dec 16 2008, 13:19) Прост...   Dec 16 2008, 09:38
|- - aesok   Цитата(_Pasha @ Dec 16 2008, 12:19) Векто...   Dec 16 2008, 10:23
|- - _Pasha   Цитата(aesok @ Dec 16 2008, 14:23) Компил...   Dec 16 2008, 10:48
|- - _Pasha   Цитата(aesok @ Dec 16 2008, 14:23) Компил...   Dec 16 2008, 18:10
- - ARV   в некоторых случаях можно делать перезапись вектор...   Dec 16 2008, 17:04
- - singlskv   Господа, Вы занимаетесь просто какой-то х.р..й ......   Dec 16 2008, 18:44
|- - _Pasha   Цитата(singlskv @ Dec 16 2008, 22:44) Гос...   Dec 16 2008, 19:50
|- - singlskv   Цитата(_Pasha @ Dec 16 2008, 22:50) Т.е. ...   Dec 16 2008, 20:03
- - 733259   ЦитатаСправедливости ради, такой подход имеет один...   Dec 17 2008, 02:01
|- - _Pasha   Цитата(733259 @ Dec 17 2008, 06:01) прави...   Dec 17 2008, 10:17
|- - singlskv   Цитата(_Pasha @ Dec 17 2008, 13:17) Следо...   Dec 17 2008, 11:09
|- - ReAl   Цитата(_Pasha @ Dec 17 2008, 12:17) Есть ...   Dec 20 2008, 16:00
|- - _Pasha   Цитата(ReAl @ Dec 20 2008, 20:00) посмотр...   Dec 20 2008, 16:26
- - Rst7   Не знаю, можно ли все, что я тут напишу, реализова...   Dec 17 2008, 07:42
- - 733259   Что Ваш вариант в 20 тактов, что через icall в 21....   Dec 17 2008, 07:55
- - Rst7   ЦитатаЧто Ваш вариант в 20 тактов, что через icall...   Dec 17 2008, 08:19
- - ReAl   Я погонял компиляцию этого дела в разных режимах. ...   Dec 20 2008, 16:34
- - _Pasha   Цитата(ReAl @ Dec 20 2008, 20:34) что даё...   Dec 20 2008, 16:49


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

 


RSS Текстовая версия Сейчас: 19th July 2025 - 16:11
Рейтинг@Mail.ru


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