Цитата(smk @ Jan 6 2011, 00:04)

Байт калибровки точно затерт т.к. делался полный сброс контроллера и было предупреждение. о том. что этот байт будет тоже потерян. Это критично? Другая программа же работает.
Это предположение или констатация факта?
"полный сброс контроллера" - имеется в виду Bulk Erase? Дык любой разумный программатор в соответствии со спецификацией программирования должен прочитать байт калибровки и биты BGx перед Bulk Erase и восстановить их после. Если софт программатора этого не делает, то я бы поискал что-нить более пристойное.
Если по адресу байта калибровки не будет восстановлен хотя бы код инструкции (0x34XX == retlw 0xXX), а останется 0x3fff (после стирания; == addlw 0xff), то после addlw будет выполнена инструкция по адресу 0x0000.
Другая программа может работать, если в ней не используется call 0x3fe .. retlw 0xXX
Варианты лечения:
- в опциях компилятора снять галку "Use OSCCAL" (в проге в качестве костыля можно добавить что-нить вроде OSCCAL = 0x80; // установит OSCCAL на середину диапазона);
- оставить галку, в проге добавить что-нить вроде 0x3480 @ 0x3fe (тоже самое, только в профиль);
- каким-либо образом откалибровать по-новой внутренний генератор и вписать полученное значение вместо XX в 0x34XX @ 0x3fe;
- взять новый контроллер, а запиленный прибить гвоздём на видном месте.