PIC Mikrodenetleyici Neden Programlanmaz?
PIC Mikrodenetleyici Neden Programlanmaz?
Bir PIC devresi programlayıcıya bağlandığında alınan “device not found”, “programming failed” veya doğrulama hatası çoğu zaman entegre arızası anlamına gelmez. PIC mikrodenetleyici neden programlanmaz sorusunun cevabı; besleme gerilimi, ICSP bağlantısı, pin çakışması, yanlış cihaz seçimi ve konfigürasyon bitleri arasında aranmalıdır. Rastgele entegre değiştirmek yerine ölçerek ilerlemek, hem servis süresini hem de parça maliyetini düşürür.
PIC mikrodenetleyici neden programlanmaz: İlk ayrım
Arızayı doğru sınıflandırmak için önce iki durumu ayırın: Programlayıcı PIC’i hiç görmüyor mu, yoksa yazma işleminden sonra doğrulama mı başarısız oluyor? İlk durumda temel şüpheliler VDD-VSS beslemesi, MCLR/VPP hattı, PGC-PGD bağlantıları ve cihaz seçimidir. Yazma başlayıp doğrulamada hata veriyorsa besleme kararlılığı, veri hattındaki yük, yanlış program belleği ayarı veya fiziksel olarak sorunlu mikrodenetleyici öne çıkar.
Bir başka kritik ayrım da şudur: PIC programlanıyor fakat devre çalışmıyor olabilir. Bu, programlama arızası değildir. Osilatör seçimi, konfigürasyon word ayarları, watchdog, brown-out reset ve port yönleri bu ikinci aşamada incelenmelidir. Programlayıcının “write successful” mesajını vermesi, uygulama devresinin doğru çalıştığını tek başına kanıtlamaz.
Besleme gerilimini programlama sırasında ölçün
PIC programlamada en sık gözden kaçan konu, beslemenin yalnızca var olması değil, programlama anında kararlı kalmasıdır. Programlayıcı bazı modellerde hedef devreyi kendi besler, bazı modellerde ise harici besleme bekler. Her iki kaynağın aynı anda ve uyumsuz biçimde devreye bağlanması, VDD hattında istenmeyen akım oluşmasına yol açabilir.
Önce PIC’in VDD ve VSS pinlerinde gerçek gerilimi multimetreyle ölçün. 5 V ile çalışan bir PIC için 4,5 V seviyesine düşen, dalgalanan veya programlama sırasında çöken besleme hata üretebilir. 3,3 V tasarlanmış devreye 5 V seviyesinde ICSP sinyali uygulamak ise yalnızca yazma hatası değil, kalıcı hasar riski de doğurur.
Her VDD-VSS çiftine yakın konumlandırılmış 100 nF seramik bypass kondansatörü, programlama sırasında da gereklidir. Özellikle röle, MOSFET sürücü, LCD, RF modül veya yüksek akım çeken başka yüklerin bulunduğu kartlarda besleme hattı programlayıcı bağlandığında beklenenden daha fazla zorlanabilir. Şüpheli kartta röle bobini, motor sürücü beslemesi ve harici modülleri geçici olarak ayırmak, teşhisi hızlandırır.
Hedef besleme mi, programlayıcı beslemesi mi?
Programlayıcı ayarındaki hedef besleme seçeneği kartın gerçek bağlantısıyla uyumlu olmalıdır. Harici beslemeli bir kartı programlayıcının besleme çıkışıyla da sürmek veya tersine, harici besleme yokken programlayıcıda hedef gücünü kapalı bırakmak sık yapılan hatalardandır. Ölçüm noktası doğrudan PIC’in VDD pini olmalıdır; kartın giriş klemensinde görülen 5 V, ince hat, sigorta, diyot veya regülatör sonrası aynı değer olmayabilir.
ICSP hatları ve MCLR/VPP bağlantısını kontrol edin
PIC’lerde seri programlama için çoğunlukla VPP/MCLR, VDD, VSS, PGC ve PGD olmak üzere beş hat gerekir. Bazı serilerde PGM hattı da düşük voltaj programlama için devreye girebilir. ICSP soketindeki pin sırası ters bağlanmışsa, kablo yönü yanlış takılmışsa veya kart üzerindeki pin numaralandırması paket görünümüne göre hatalı yorumlanmışsa programlayıcı cihazı algılayamaz.
MCLR pini özellikle hassastır. Programlama esnasında bu hatta programlayıcının ürettiği VPP gerilimi uygulanır. MCLR’ye bağlı büyük değerli kondansatör, uygunsuz gerilim sınırlayıcı eleman, düşük değerli pull-up direnç veya başka bir aktif devre VPP yükselişini bozabilir. Reset hattındaki elemanları devreden tamamen sökmek her zaman gerekmez; ancak şüpheli durumda kondansatörü geçici olarak ayırmak ve MCLR seviyesini ölçmek doğru bir testtir.
PGC ve PGD pinleri uygulama içinde LED, buton, ekran, transistör sürücüsü veya başka bir entegreyle paylaşılmış olabilir. Bu bağlantılar programlama sinyalini yükler ya da veri hattını sabit seviyede tutar. Tasarım aşamasında ICSP kullanılan pinlerde seri direnç, jumper veya izolasyon imkanı bırakmak sonraki bakım işlerini kolaylaştırır. Servis aşamasında ise bu pinlere bağlı çevre birimleri geçici olarak devre dışı bırakılmalıdır.
Kablo ve soket kalitesi de hata kaynağıdır
Uzun, gevşek veya oksitlenmiş ICSP kablosu özellikle düşük kaliteli soketlerde doğrulama hatasına neden olabilir. Kısa bir kablo, sağlam bir 2,54 mm header ve doğru pin dizilimiyle yapılan deneme, karmaşık ölçümlerden önce uygulanabilecek hızlı kontroldür. Aynı programlayıcı ve aynı kabloyla çalışan referans bir PIC denemek, sorunun programlayıcı tarafında mı kart tarafında mı olduğunu netleştirir.
Yanlış PIC seçimi ve yazılım uyumsuzluğu
Programlama yazılımında seçilen cihaz adı, kart üzerindeki PIC’in tam koduyla eşleşmelidir. PIC16F877A ile PIC16F877, PIC18F2550 ile PIC18F2455 veya aynı ailenin farklı bellek kapasitesine sahip üyeleri birbirinin yerine seçilemez. Kılıf benzerliği, pin sayısı veya seri adı yeterli değildir. Entegre üzerindeki tam işaretleme, paket tipi ve varsa sıcaklık veya hız sınıfı kontrol edilmelidir.
Programlayıcı yazılımının eski olması da yeni veya farklı PIC serilerinde cihaz tanıma sorunu yaratabilir. Kullanılan programlayıcının desteklediği cihaz listesi, firmware sürümü ve yazılım sürümü birlikte değerlendirilmelidir. Özellikle klon programlayıcılarda firmware uyumsuzluğu, doğru bağlantı olsa bile cihaz kimliği okunamaması şeklinde görülebilir.
HEX dosyası da hedef cihazla uyumlu olmalıdır. Başka bir PIC modeli için derlenmiş dosya, bellek adresi taşması veya konfigürasyon alanı uyuşmazlığı oluşturabilir. Derleme çıktısındaki hedef cihaz tanımı ile programlayıcı ekranındaki seçim aynı olmalıdır. Üretimde birden fazla PIC modeli kullanılıyorsa dosya adı içinde cihaz kodu ve proje revizyonu bulundurmak karışıklığı azaltır.
Konfigürasyon bitleri, LVP ve kod koruması
Konfigürasyon bitleri PIC’in osilatör tipini, watchdog davranışını, brown-out reset seçimini, MCLR fonksiyonunu ve programlama modlarını belirler. Yanlış osilatör ayarı genellikle programlamayı engellemez, ancak yazılan kartın çalışmamasına neden olur. Bu nedenle “PIC yazıldı ama devre tepki vermiyor” şikayetinde konfigürasyon word değerleri mutlaka kontrol edilmelidir.
LVP yani düşük voltaj programlama aktifse, bazı PIC modellerinde PGM pini beklenmedik şekilde programlama modunu etkileyebilir. PGM hattının boşta kalması, uygulama devresinde yanlış seviyeye çekilmesi veya başka bir işlev için kullanılması sorun oluşturabilir. Üretim tasarımında LVP kullanılmayacaksa, ilgili ayarın proje gereksinimine göre kapatılması ve pinin fonksiyonunun netleştirilmesi tercih edilir.
Kod koruması konusunda da doğru beklenti kurulmalıdır. Kod korumalı bir PIC’in program belleği okunamaz veya beklenen şekilde doğrulanamaz. Ancak çoğu PIC’te toplu silme işlemi korumayı kaldırarak yeniden programlamaya imkan verir. Bu işlem mevcut uygulamayı geri döndürülemez biçimde siler. Servis kartında kaynak HEX dosyası yoksa, silme komutunu vermeden önce yedekleme ve üretim prosedürü gözden geçirilmelidir.
Kart üzerinde programlama mı, sokette programlama mı?
Kart üzerinde ICSP ile programlama hızlıdır; seri üretim, saha güncellemesi ve servis için avantaj sağlar. Buna karşılık kartın çevre devreleri PGC, PGD, MCLR veya besleme hatlarını etkiliyorsa teşhis zorlaşır. Şüpheli PIC’i uygun adaptör veya ZIF soket üzerinde programlamak, entegre ile kartı birbirinden ayıran en net test yöntemidir.
Sokette sorunsuz programlanan bir PIC kart üzerinde programlanmıyorsa, sorun büyük ihtimalle ICSP tasarımında, beslemede veya paylaşılan pinlerdedir. Sokette de algılanmayan parçada ise yanlış cihaz seçimi, programlayıcı uyumluluğu veya fiziksel arıza değerlendirilir. Yeni alınmış bir parçanın dahi yanlış paketlenme, ESD hasarı veya depolama kaynaklı risk taşıyabileceğini dikkate alın; bu nedenle kritik üretimlerde giriş testi yapmak maliyeti düşürür.
Hızlı ve sistematik kontrol sırası
Arızayı kısa sürede bulmak için aynı sırayı her kartta uygulayın:
- PIC’in tam parça kodunu okuyun ve programlayıcı yazılımında aynı cihazı seçin.
- VDD-VSS gerilimini PIC bacaklarında ölçün; hedef beslemenin programlama anında düşmediğini doğrulayın.
- ICSP soketinde VPP/MCLR, VDD, VSS, PGC ve PGD sırasını şemaya göre kontrol edin.
- MCLR üzerindeki kondansatör, koruma diyodu ve pull-up direncinin VPP hattını yüklemediğini test edin.
- PGC-PGD pinlerine bağlı LED, ekran, sürücü veya diğer çevreleri geçici olarak ayırın.
- Aynı kablo ve programlayıcıyla referans bir PIC deneyin; mümkünse şüpheli PIC’i sokette programlayın.
- HEX dosyasının hedef PIC için derlendiğini, konfigürasyon bitleri ile LVP ayarlarının projeye uygun olduğunu doğrulayın.
Bu sıralama, “önce entegreyi değiştir” yaklaşımından daha güvenilirdir. Özellikle tekrar eden servis işlerinde ICSP konnektör standardını, kablo renk sırasını ve test noktalarını kayıt altına almak zaman kazandırır.
Programlanmayan PIC için doğru çözüm çoğu zaman yeni bir mikrodenetleyici değildir; doğru ölçüm, doğru cihaz seçimi ve temiz bir ICSP hattıdır. Kartı tekrar enerjilendirmeden önce VDD, MCLR, PGC ve PGD seviyelerini doğrulayan kısa bir kontrol rutini oluşturmak, hem tekli prototiplerde hem de toptan üretim süreçlerinde gereksiz parça kaybını önler.