Столкнулся с очень странным поведением __delay_cycles.
Все прерывания запрещены, ничего лишенего не работает.
Но импульс с порта С имеет совершенно разные длительности, причём разница значительна:
//если батарея подключена - можно включить питание DC/DC 3.3v
if(SYSTEM.flag_BatteryPower)
{
PORTC |= (1<<DC3v3);
__delay_cycles(_1ms); //Вот тут задержка строго равна 1ms
PORTC &=~(1<<DC3v3);
if(CHECKBIT(PINF, CameraVolt)) SYSTEM.flag_CameraPower = true;
else
{
PORTC |= (1<<DC3v3);
__delay_cycles(_1ms); //А вот тут уже 20ms
PORTC &=~(1<<DC3v3);
}
}