|
__raw прерывания |
|
|
|
 |
Ответов
|
Jun 12 2007, 15:56
|

Местный
  
Группа: Свой
Сообщений: 479
Регистрация: 8-05-07
Из: г. Ставрополь. Северный Кавказ. Россия
Пользователь №: 27 606

|
Вы совеошенно правы прерывание мешает другое (адс) а это привёл как пример. В преврывании от адс вообше запрещать ничего не надо, лиш обозначить. Не в майне же флаги опрашивать. Напишу на иар. Если скажут что так нельзя присоединюсь к =АВР= тк. в этом случае ИАР это фикция. Не зря же в mcs51 80 годов разработки 4 приоритета прерыаний. Цитата(singlskv @ Jun 12 2007, 17:59)  Вы это о чем ? Есть очень простое решение... Нужное прерывание описываем на ASM. Функцию на С которая должна выполнятся дальше описываем как любое гарантировано незадействованное прерывание. В нужном нам прерывании дергаем ногой (сохраняя/восстанавливая если нужно SREG) и дальше прыгаем jmp на адрес нашего "фиктивного" прерывания(функции). Все.  Вот это пожалуйста поподробней!!! Так и пытался сделать но не пойму с синтаксисом (в С новичок). Не принимает он у меня jmp через функцию.
Сообщение отредактировал Т.Достоевский - Jun 12 2007, 15:58
|
|
|
|
|
Jun 12 2007, 16:15
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(Т.Достоевский @ Jun 12 2007, 19:56)  Вот это пожалуйста поподробней!!! Так и пытался сделать но не пойму с синтаксисом (в С новичок). Не принимает он у меня jmp через функцию. jmp на АСМе на абсолютный адрес где лежит jmp "фиктивного" обработчика(нужной С функции). На С скорее всего такой трюк (jmp) описать не получится, тк нужно сохранять/восстанавливать используемые для этого регистры
|
|
|
|
|
Jun 12 2007, 16:19
|

Местный
  
Группа: Свой
Сообщений: 479
Регистрация: 8-05-07
Из: г. Ставрополь. Северный Кавказ. Россия
Пользователь №: 27 606

|
Цитата(singlskv @ Jun 12 2007, 20:15)  jmp на АСМе на абсолютный адрес где лежит jmp "фиктивного" обработчика(нужной С функции). На С скорее всего такой трюк (jmp) описать не получится, тк нужно сохранять/восстанавливать используемые для этого регистры Получится, если фиктивное сделать без __raw. Не получается абсолютный адрес, нету такой, есть только относительный RJMP. Если сделать так то и асма не нужно тк С код будет соизмерим. Но не вызывает он функции обозначенные как __interrupt!
Сообщение отредактировал Т.Достоевский - Jun 12 2007, 16:24
|
|
|
|
Сообщений в этой теме
Т.Достоевский __raw прерывания Jun 11 2007, 22:07 rezident Вам в пустыне уже все разжевали, теперь еще и тут ... Jun 11 2007, 22:50 Т.Достоевский Это СОВСЕМ не то что мне нужно, тк он НЕ СОХРАНИЛ ... Jun 11 2007, 23:10 rezident Опс! Ну да. Вы правы. Я забыл что это прерыван... Jun 11 2007, 23:32 Т.Достоевский Но тогда придётся сохранять юзанные регистры ручка... Jun 11 2007, 23:39 Сергей Борщ Цитата(Т.Достоевский @ Jun 12 2007, 02:39... Jun 12 2007, 06:34 IgorKossak Цитата(Т.Достоевский @ Jun 12 2007, 02:39... Jun 12 2007, 07:37  Сергей Борщ Цитата(IgorKossak @ Jun 12 2007, 10:37) Э... Jun 12 2007, 10:30 singlskv Цитата(Т.Достоевский @ Jun 12 2007, 03:39... Jun 12 2007, 13:59 Т.Достоевский "Ваша ошибка в самом алгоритме, вам на нее =A... Jun 12 2007, 11:29 Сергей Борщ Цитата(Т.Достоевский @ Jun 12 2007, 14:29... Jun 12 2007, 12:46 Т.Достоевский Принцип такой tc0 это прерывание по переполнению
t... Jun 12 2007, 13:58 Сергей Борщ Цитата(Т.Достоевский @ Jun 12 2007, 16:58... Jun 12 2007, 14:57  singlskv Цитата(Сергей Борщ @ Jun 12 2007, 18:57) ... Jun 12 2007, 16:05   Т.Достоевский Цитата(singlskv @ Jun 12 2007, 20:05) Есл... Jun 12 2007, 16:14   singlskv по Вашей ссылке прерывания ADC не увидел, дальше н... Jun 12 2007, 16:36 Т.Достоевский В том то и дело, в меге нету абсолютного jmp!.... Jun 12 2007, 16:48 slog Ты и тут уже :-)
__indirect_jump_to((unsigned lon... Jun 12 2007, 17:11 Т.Достоевский Цитата(slog @ Jun 12 2007, 21:11) Ты и ту... Jun 12 2007, 17:15  singlskv Цитата(Т.Достоевский @ Jun 12 2007, 21:15... Jun 12 2007, 17:21   rezident Цитата(singlskv @ Jun 12 2007, 23:21) не.... Jun 12 2007, 19:57 Т.Достоевский Цитата(slog @ Jun 12 2007, 21:11) __indir... Jun 12 2007, 20:14  rezident Цитата(Т.Достоевский @ Jun 13 2007, 02:14... Jun 12 2007, 20:37 Т.Достоевский __indirect_jump_to((unsigned long)&Имя_функции... Jun 12 2007, 20:49 Сергей Борщ Цитата(Т.Достоевский @ Jun 12 2007, 23:49... Jun 13 2007, 07:07  Т.Достоевский Цитата(Сергей Борщ @ Jun 13 2007, 11:07) ... Jun 13 2007, 09:50   IgorKossak Цитата(Т.Достоевский @ Jun 13 2007, 12:50... Jun 13 2007, 14:19    Т.Достоевский Цитата(IgorKossak @ Jun 13 2007, 18:19) Т... Jun 13 2007, 17:02     IgorKossak Цитата(Т.Достоевский @ Jun 13 2007, 20:02... Jun 13 2007, 18:21      Т.Достоевский Цитата(IgorKossak @ Jun 13 2007, 22:21) Н... Jun 13 2007, 19:24 slog Незнаю
#pragma vector = TIMER0_OVF0_vect
__interr... Jun 13 2007, 04:03 Rst7 Делаю так обычно, ужос конечно, но что поделать:
... Jun 13 2007, 08:12 SasaVitebsk Извините, что я вмешиваюсь в столь лихо закрученну... Jun 13 2007, 20:20 Т.Достоевский Цитата(SasaVitebsk @ Jun 14 2007, 00:20) ... Jun 13 2007, 21:04 Rst7 Про недокументированные модификаторы для AVR поищи... Jun 14 2007, 05:12 SasaVitebsk В этом смысле платформы для микропроцессоров даже ... Jun 14 2007, 17:44 Dog Pawlowa Цитата(SasaVitebsk @ Jun 14 2007, 20:44) ... Jun 14 2007, 18:37 Т.Достоевский Цитата(SasaVitebsk @ Jun 14 2007, 21:44) ... Jun 14 2007, 18:42 IgorKossak Вот и славненько!
На этой мажорной ноте предла... Jun 14 2007, 21:04 Т.Достоевский Цитата(IgorKossak @ Jun 15 2007, 01:04) В... Jun 14 2007, 21:39
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|