Хочу предложить свои наблюдения, не вошедшие, к сожалению, в Еррату.
Камень - PIC16F630, задача - запись в EEPROM. В документации сказано, куда заносить адрес и данные, какой ритуал совершить с EECON2, какой бит подергать в EECON1. Еще сказано, что по завершении устанавливается флаг прерываний по завершению записи EEPROM, а так же сбрасывается бит WR, который я поднимал для, собственно, старта записи.
Смотрю в Еррату. Там говорится - упс! - флагом прерывания пользоваться нельзя. Возможны непредсказуемые искажения данных. Что ж это за контроллер такой? Прям как женщина беременная - от косого взгляда вспылить может. Ну ладно, нельзя - так нельзя, следим за битом WR. Только я решил, что пока он там пишет, я сэкономлю время и подготовлюсь к записи очередного байта, выставлю все указатели, щелкну счетчиками циклов... Клянусь, ничего относящегося к EEPROM или прерываниям я не трогал! Проверяю готовность WR и снова иду на запись или жду, пока сбросится. Оказалось, после того, как дана команда на запись, вообще лучше ничем больше не занимать контроллер! Единственная команда в цикле, опрашивающая бит WR регистра EECON1 - все, что можно сделать без порчи содержимого записываемой ячейки. Вот вам и многозадачность...
Кратко итог: после выдачи команды на запись байта в EEPROM крутить цикл "пока WR не равен нулю, повторять", иначе возможны варианты.
P.S. сброс WatchDog таймера в этом цикле делать можно, проверено.