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

 
 
3 страниц V  < 1 2 3  
Reply to this topicStart new topic
VladislavS
сообщение May 18 2011, 07:34
Сообщение #31


Местный
***

Группа: Свой
Сообщений: 475
Регистрация: 14-04-05
Из: Москва
Пользователь №: 4 140



Можно перед выходом из прерывания настроить таймер, чтобы он через некоторое количество тактов сработал и использовать его прерывание для реакции на команду.
Go to the top of the page
 
+Quote Post
brag
сообщение May 18 2011, 12:24
Сообщение #32


Профессионал
*****

Группа: Свой
Сообщений: 1 047
Регистрация: 2-12-06
Из: Kyiv, Ukraine
Пользователь №: 23 046



Цитата
То есть, ваш вариант "в определенный момент выйти из прерывания (UART) в требуемую точку, а уж оттуда потом продолжить выполнения с места, где возникло прерывание" практически полностью эквивалентен варианту "в конце прерывания вызвать нужную функцию".

да нет, выпав с прерывания в определенную точку то же самое прерывание может выполнится еще раз, вернувшись опять в ту точку и так рекурсивно sm.gif
Скорее рекурсивный глюк выйдет sm.gif
Хотя для кортексов это все не нужно, там есть svc,pendsv,systick, все с настраиваемыми приоритетами, все с tail-chaining, те все быстро и красиво,
Go to the top of the page
 
+Quote Post
_Pasha
сообщение May 18 2011, 14:56
Сообщение #33


;
******

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



Цитата(brag @ May 18 2011, 15:24) *
все быстро и красиво,

Да, с вложенными прерываниями - гораздо краше. Код тяжелого обработчика в SVC
Go to the top of the page
 
+Quote Post
d__
сообщение May 19 2011, 06:35
Сообщение #34


Частый гость
**

Группа: Свой
Сообщений: 197
Регистрация: 26-08-04
Пользователь №: 548



Можно попробовать механизм setjmp & longjmp. При этом не забыть в контроллере прерываний деинициализировать текущее прерывание.
Go to the top of the page
 
+Quote Post
zovsilab
сообщение May 20 2011, 11:59
Сообщение #35


Участник
*

Группа: Участник
Сообщений: 17
Регистрация: 3-04-09
Из: УССР
Пользователь №: 47 140



Правильно ли сделал запись по формированию и вызову программного прерывания? Keil (LPC2468)

Код
.
.
#define SoftwareInterrupt asm (" swi #1")
.
.
void SWI_ISR(void) __attribute__ ((interrupt("SWI")));
main
{
    SoftwareInterrupt;    
while(1);
}
.
.
.

void SWI_ISR(void)
{
   бла-бла-бла
}


--------------------
Многие вещи нам непонятны не потому, что наши понятия слабы,
а лишь потому, что сии вещи не входят в круг наших понятий.
Go to the top of the page
 
+Quote Post
brag
сообщение May 20 2011, 12:20
Сообщение #36


Профессионал
*****

Группа: Свой
Сообщений: 1 047
Регистрация: 2-12-06
Из: Kyiv, Ukraine
Пользователь №: 23 046



ну типа правильно, не помню только что там с приоритетами, armv4 не юзал давно
Go to the top of the page
 
+Quote Post

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

 


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


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