Ответ: (+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено (+) 17 марта 2004 г. 16:40
В ответ на: функции #asm("cli"/"sei") отправлено ZHIA 17 марта 2004 г. 14:55

asm("cli") - запретить прерывания (сбрасывает бит i в SREG)
asm("sei") - разрешить прерывания (устанавливает бит i в SREG)
Пример:
char m_func(void)
{
asm("cli");
.........
.........
asm("sei");
}
можно сделать более коррктно:

#define EnderCriticalSection()\
asm("push r16");\
asm("in r16,SREG");\
asm("push r16");\
asm("cli")

#define ReleaseCriticalSection()\
asm("pop r16");\
asm("out SREG,r16");\
pasm("pop r16")

пример:
char m_func(void)
{
EnderCriticalSection();
.........
.........
ReleaseCriticalSection();
}

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru