Подскажите пожалуйста!
Не могу заставить уйти МК в сон. Точнее могу, во всех частях программы где есть сон все ок!
Но вот в одном месте хоть убей не засыпает, как будто игнорирует строки со сном.
Хотя в симуляторе все норм.
Отслеживаю эту ситуацию осциллографом.
Ниже приведен кусок кода который не корректно отрабатывается, данный кусок кода вызывается через "GOTO",
"SLEEP" не выполняет а все остальное отрабатывает. В другой части кода есть также слипы собранные из разных
интервалов времени и все прекрасно работает. ДШ читал, никаких оговор не увидел(
В дизассемблере все норм, строки не выкинуты)
Спойлер
Код: Выделить всё
asm_MARK(sleep_89ms);
LATA1 = 0; //__Отключение ИК приемника.
T2CONbits.TMR2ON = 0;
WDTCON = 0x0D; //__Сон на 64мс.
asm("SLEEP"); //
asm("nop"); //__Последняя инструкция до сна.
WDTCON = 0x09; //__Сон на 16мс.
asm("SLEEP"); //
asm("nop"); //__Последняя инструкция до сна.
WDTCON = 0x07; //__Сон на 8мс.
asm("SLEEP"); //
asm("nop"); //__Последняя инструкция до сна.
OPTION_REG = 0b01000111; //__Настройка таймера (делитель = 256),
TMR0 = 225; //__960мкс.
INTCONbits.TMR0IF = 0;
asm_MARK(rec_6); //__Ожидание флага переполнения таймера.
asm_BTFSS(rec_6, INTCON, d_TMR0IF); //
asm("GOTO rec_0"); //__Возврат в начало подпрограммы приемника.