Итак, смотрим на схему программатора ART2003:
Спойлер

Видим, что вывод PGM микроконтроллера PIC18F2550 соединён с MCLR и очевидно подаётся на него лог. 1 при записи - это режим низковольтного программирования (LVP). В рабочем режиме задействованная ножка МК PGM не работает как цифровая и должна быть притянута к общему проводу через резистор.
А вот теперь схема EXTRAPIC:
Спойлер

Вывод PGM через 1к притянут к земле - это режим высоковольтного программирования (HVP).
Притягивается этот вывод потому, что изначально (с завода) в МК может быть включен режим LVP и ножка МК PGM как цифровая не работает, а используется только для LV-программирования. После прошивки в режиме HVP, снимается бит конфигурации "LVP" и ножка PGM начинает работать как цифровая!
Теперь смотрим схему PICkit 2:
Спойлер

Здесь вывод PGM подтянут к +Vdd и на нём висит кнопка! Значит этот вывод работает как цифровой! И значит программироваться МК должен в режиме HVP!
Что получается при программировании МК в режиме LVP?
Вывод PGM не может быть использован как цифровой и кнопка загрузчика работать не будет! К тому же он должен быть притянут к "земле" через резистор (см. выше). А в данной схеме он подтянут к лог. 1. Отсюда неустойчивая работа и отваливание от USB в лучшем случае, в худшем - устройство просто не определяется и не работает - поскольку находится не в рабочем режиме, а в режиме LVP!



с 

Всем советую поступать аналогично!