[an error occurred while processing this directive]
[an error occurred while processing this directive]
|
... без изходного текста, особенно когда речь идет о програмной ошибке. Поэтому, только несколько рекомендаций:
// # Part 1:
Внимательно просмотреть процедуры сохранения/восстановления контекста в процедуре ISR.
// # Part 2:
Обратить особое внимание на то, по какому признаку обрабатываются каждое конкретное прерывание. По условию
if (ZZZ-interrupt flag set ONLY); // bad metode
или
if (ZZZ-interrupt enable flag set && ZZZ-interrupt flag set); // good metode
// # Part 3:
Уж и не знаю, в первую или в последнюю очередь, внимательно просмотреть последовательность сброса/установки флагов GIE, ADIF, ADIE ну и т.п. имея ввиду тот факт, что манипуляции с этими флагами не должны приводить к 'неоднозначностям'. Имеется в виду установка флага GIE в процедуре ISR (это не криминал, но программист должен быть уверен, что ни чего другого в этот момент не должно произойти), запись/чтение регистров CCP и TMR1.
Ну и особе внимание - переключению банков всех этих регистров. Это ж - "The PIC!", ёлы палы ...
Успехов ...
__САмай_Злостный_Анонимус_Сергей
E-mail: info@telesys.ru