Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

Народ, подскажите, можно ли реализовать вложенные прерывания (nested interr...{+}(+)

Отправлено mayn 06 февраля 2008 г. 02:45


Текст заголовка сообщения полностью: Народ, подскажите, можно ли реализовать вложенные прерывания (nested interrupts) без написания процедур на ассмблере и макросов IENABLE/IDISABLE? (+)

Проблема следующая.
У меня ARM микроконтроллер (LPC2148), среда uVision3, компилятор RealView.
Нужно реализовать 2 прерывания, одно из которых (хотя бы) может прерывать процедуру прерывания другого (nested interrupts). Предлагается писать процедуры ISR на ассемблере (очень не хочется) или использовать макросы

/* routines from KEIL */
#define IENABLE \
__asm { MRS LR, SPSR } \
__asm { STMFD SP!, {LR} } \
__asm { MSR CPSR_c, #0x1F } \
__asm { STMFD R15!, {LR} } \

#define IDISABLE \
__asm { LDMFD SP!, {LR} } \
__asm { MSR CPSR_c, #0x92 } \
__asm { LDMFD SP!, {LR} } \
__asm { MSR SPSR_cxsf, LR } \

Но в компиляторе RealView (который только и прилагается в evaluation version с сайта Keil) такие ассемблерные вставки не работают (identifier "LR" is undefined и т.п.)

На форуме с сайта Keil пишут вскользь, что этими макросами пользоваться нельзя и, типа, надо писать процедуру на ассемблере. Хочется быть уверенным в этом, при том, что кто-то видел и другие, извращенные макросы, но они тоже не работали (здесь вообще не понимаю, что за хрень):
/* routines from NXP */
static uint32 sysreg; /* used as LR register */
#define IENABLE __asm \
{ MRS sysreg, SPSR; MSR CPSR_c, #SYS32Mode; STMFD SP!, {sysreg} }

#define IDISABLE __asm \
{ MSR CPSR_c, #(IRQ32Mode|I_Bit); MSR SPSR_cxsf, sysreg }


Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 47:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru