M@ik (25.07.2007 17:48, просмотров: 1) ответил Petr_ на Вопрос по использованию инструкции DISI в dsPIC
Компилятор в общем случае не догадывается, сколько тактов выполняется код, так как в коде могут быть циклы, с числом итераций неизвестным на этапе компиляции. А для запрещения прерываний на время предназначены макросы от микрочипа SET_AND_SAVE_CPU_IPL и RESTORE_CPU_IPL
(находятся заголовочных файлах на каждый процессор, например в p33FJ256GP710.h)
<c>
// Перед входом в критический участок
// установка максимального уровня приоритета процессора
// и сохранение старого значения
int temp;
SET_AND_SAVE_CPU_IPL(temp,7);
...
критический код
// восстановление старого уровня приоритета
RESTORE_CPU_IPL(temp);
</c>