И еще. Зачем вы тактируете ядро (MCLK) от кварцевого генератора, если используете режимы энергосбережения? При выходе из режима энергосбережения MCLK будет работать от DCO, а не XT2. И чтобы перейти на тактирование от XT2 нужно каждый раз программно сбрасывать OFIFG и потом переключать MCLK на XT2, вызывая вашу функцию StartXT2. Можно эту функцию повесить на обработчик прерывания по вектору NMI, но спрашивается зачем, если проще будет затактировать MCLK сразу от DCO?