Petr_ (25.07.2007 16:06, просмотров: 1395)
Вопрос по использованию инструкции DISI в dsPIC Собственно использовать то ее несложно.
Есть макрос DisableInterrupts(cycles)
Но как это делать красиво?
Одно дело дергать вверх/вниз уровень прерываний.
<c>
for(i=1;i<=8;i++) //байт
{
Rez>>=1; //сдвиг
IPL=SRbits.IPL; //уровень прерываний
SRbits.IPL=0b111; //уровень прерываний 7
Termo_Pull(); //начало запроса бита
DelayMkS(2); //более 1ms
Termo_In(); //отпустили линию
DelayMkS(11); //время до момента sample
if(TERMO_PORT) Rez|=0b10000000; //прием 1-цы
SRbits.IPL=IPL; //восстановим уровень прерываний
DelayMkS(50); //время до конца slot+recovery time
}
</c>
А как посчитать на сколько инструкций нужно их
запретить для DISI ? Ставить "с запасом"
и некрасиво и неправильно в приведенном участке кода.
Т.е. как бы переложить подсчет количества инструкций
"от сих до сих" на компилятор.