Замучился я уже шаманскими плясками заниматься. Может я хожу по известным граблям и кто нибудь подскажет чего?
Есть плата, питание 5 вольт, достаточно несложная, пара периферийных чипов на SPI, кое какое барахло на портах, не существенное для вопроса (вынуто сейчас из панелек и ноги сделаны выходами). На ней был изначально PIC18LF4620. В процессе поиска источника проблемы вместо него был напаян 18LF448 (распиновка та же в QFP, просто ничего другого под рукой не нашлось с той же распиновкой).
Компилятор - EWPIC18-EVAL, резервируемые под ICD области в раме и флеше не задействованы (проверил по map файлу линкера).
Программируется все на ура. Но при попытке запустить дебаггер в MPLAB - почти всегда ICD0083: Debug: Unable to enter debug mode. В редких случаях, когда оно таки входило в дебаг, очень быстро все разваливалось. Простенький код, выдранный с модификацией из прошлых проектов, запрограммированный тем же ICD в режиме программатора работает корректно (типа на прерываниях помигать светодиодом с частотой 1 герц - проверил частотомером в режиме измерения интервалов, 0.99983 сек период). Т.е. кварц (20 мгц) в порядке.
Для программирования и попыток отладки использовался проверенный в многочисленных боях клон ICD2, без USB еще, на 16F877 (без А). В процессе проверялся с другими платами (с чипами 16F876, 18F258, 18F4585) - никаких проблем, и отладка, и программирование без вопросов.
Пробовал:
- Добавлять емкости по 22 пики на шины PGD/PGC.
- Обвешивать чип дополнительными блокировочными кондерами
- Укорачивать кабель до 8 см
- Питать плату от батареи (была легкая паранойя что лабораторный источник блудить начал, осциллограф был не на ходу, как завел - убедился что все ок).
- Отключать все что только можно в фльюзах (WDT, PWRT, BOD - все отключено, дебаг включен в описаниях фьюзов в компиляторе, MPLAB этот фьюз не показывает).
Ситуация не меняется. При этом другая плата, с 18F258, работает великолепно во всех режимах с тем же набором отладочных средств (EWPIC/MPLAB/ICD2) даже с 25 см кабелем. Схемотехника обвязки ноги MCLR идентична.
Думал что 18LF4620 мне хреновый попался, запаял 18LF448 на то же место, поправил инициализацию - нет, то же самое, чуть почаще получается войти в дебаг, но так же быстро оно отваливается.