16F628A kontrolcüye pickit2 ile programı yazdırıyorum. Pic'i yerine takdığımda çalışmadı.Pic'i tekrar programlayıcıya takıp okutturduğumda ilk satırın farklı olduğunu görüyorum. Programı yazdırdığımda ilk satırda 287A okuyorum. Pic'i tekrar okuttuğumda ise ilk satır 2000 oluyor. Bu neden kaynaklanıyor ve nasıl düzeltebilirim. Yardımlarınız bekliyorum değerli arkadaşlar. İlgili resmi ekledim.
Ekran resimlerine bakınca senin işlemciye ait Device ID si gözükmüyor.
Programlamaya çalıştığın o işlemci Çakma olabilir.
Ben kendi programlayıcım ile 16F628A yı programlamaya çalıştığımda
Device......16F628A (ID=1060) ibaresi çıkıyor. Sende ise Device ....16F628A çıkmış sadece.
Diğer bir konuda User IDs karşılığı yazarken doğru, okurken ilk rakam 00 olarak çıkıyor.
Bu durumda iki şeyden şüphelenebiliriz. Ya program pice yazıldıktan sonra çalışıp bu değerleri değiştiriyor yada senin işlemcinde ilk adres $0000 e bir şey yazılamıyor yada değiştirilemiyor.
Bu arada ara yüzde yukarıda Programmer seçeneğine tıklayıp açılan pencerede yer alan,
- Verify on Write
- Clear Memory Buffers on Erase
seçeneklerinin seçili olduğundan emin ol.
Programın Config değerine bakınca 2106 olarak görüyorum.
Bu konuda tek söyleyebileceğim şey HS OSC nin seçilmiş olduğudur. Şemanı veya programını göremediğim için doğru OSC frekansı seçilmişmi kontrol etmen gerekir.
Ete
Alıntı yapılan: ete - 19 Kasım 2023, 09:33:18Ekran resimlerine bakınca senin işlemciye ait Device ID si gözükmüyor.
Programlamaya çalıştığın o işlemci Çakma olabilir.
Ben kendi programlayıcım ile 16F628A yı programlamaya çalıştığımda
Device......16F628A (ID=1060) ibaresi çıkıyor. Sende ise Device ....16F628A çıkmış sadece.
Diğer bir konuda User IDs karşılığı yazarken doğru, okurken ilk rakam 00 olarak çıkıyor.
Bu durumda iki şeyden şüphelenebiliriz. Ya program pice yazıldıktan sonra çalışıp bu değerleri değiştiriyor yada senin işlemcinde ilk adres $0000 e bir şey yazılamıyor yada değiştirilemiyor.
Bu arada ara yüzde yukarıda Programmer seçeneğine tıklayıp açılan pencerede yer alan,
- Verify on Write
- Clear Memory Buffers on Erase
seçeneklerinin seçili olduğundan emin ol.
Programın Config değerine bakınca 2106 olarak görüyorum.
Bu konuda tek söyleyebileceğim şey HS OSC nin seçilmiş olduğudur. Şemanı veya programını göremediğim için doğru OSC frekansı seçilmişmi kontrol etmen gerekir.
Ete
Normal Pickit2 yazılımında ID çıkmıyor. ID gösterme Pickit- yazılımının bir özelliği.
VDD kutusunun yanında Check yazıyor. Bu voltaj kontrolü olmayan klon olduğuna işaret ediyor. Voltaj kontrollü klonlarda harici VDD bağlı değilse VDD kutusunun yanında On yazar. PIC16F628A'nın programlama datasheetinde Vpp before VDD yöntemi ile programlama moduna sokulması gerektiği yazıyor. Voltaj kontrolü olmayan klonlar Vpp before VDD yapamıyor. Bu bir problem olabilir mi?
Klonlar içinde vdd den önce vpp yapan varki pic16F628A yı programlayabiliyor. En azından benim klon bunu yapabiliyor.
Bildiğim kadarı ile pic16F628A ya önce VDD verilirse içindeki program çalışabiliyor. Önce Vpp verilirse direk program yazılıyor. Bu bilgiyi mantıksal değerlendirme yaparak söylüyorum. Umarım yanlış değildir.
Aslında Istinaf duvar'nın pickit2 konusunda epeyce bilgisi var bu seçenekleri sıralı açıklasada öğrensek fena olmazdı.
Ete
Programı yazdıktan sonra Verify ettin mi?
İkincisi fast programming açık mı? Fast programming açıkken icsp bağlantısı ve programlayıcı cihaz kalitesine bağlı olarak veri hataları çıkabilir.
nadir olsa'da bende aynı durumu yaşadım, ucuz aldığım işlemciler sorun çıkardılar ,
Config tanımlamasında LVP OFF yaparak bu durumu aşmıştım. bazılarındada hiçbir teknik yorumlaması yok ,
4K7 ile çipin LVP pin'ini GND yaparak çözmüştüm.çok kısaca izah edeyim
,bu yönteme niçin baş vurduğumu .çipin üstüne parmağımı koyarsam normal programlanıyordu..
Hangi konularda bilgi istiyorsunuz E.T.E. hocam?
Pickit2 arayüz de;
- Use vpp first program entry ne amaçla kullanılır
- Display unimplemented config bits seçeneğinde hangisini seçmek daha uygun olur. Neden böyle bir seçenek mevcut acaba?
- Ekranda görülen VDD / Target (Pickit2) başlığı altındaki ON ve MCLR kutuları ne işe yarar seçilince ne olur seçilmeyince ne olur?
Şimdilik bu kadar.
Ete
Use vpp first program entry seçeneği, PIC'i programlama moduna geçirirken ilk önce Vpp'nin uygulanmasını sağlar. Vpp before Vdd dediğimiz şeyi ifade eder.Bazı PIC serilerinde Microchip firması bu yöntemi önermektedir. (Örnek PIC16F628A) PIC'e önce 12V verilir, 5us sonra VDD voltajı verilir. Bu yöntemi uygulayabilmek için programlayıcının VDD voltajını açıp kapatabilmesi gerekir.
MCLR bacağı disable edilmişse ve dahili osilatör kullanılmışsa, bu PIC'e tekrar program atabilmenin yolu use Vpp first program entry seçeneğini kullanmaktır. Önce Vpp verilerek PIC2in normal çalışma moduna geçmesi engellenir. Bu mod sadece dahili VDD ile kulanılabilir, harici VDD ile kullanılamaz. Örnek bir diyagram:
Screenshot 2023-11-20 at 08-42-12 41196G.book - 41196g.pdf.png
Display unimplemented config bits(kullanılmayan yapılandırma bitlerini göster) seçeneği bu kullanılmayan bitlerin 0 mı 1 mi olarak gösterileceğini ayarlamamızı sağlar. Sadece gösterim şekli ile ilgili bir ayardır. PIC içerisindeki config bitlerinin durumunu etkilemez.
Mesela PIC18F25K50'nin FVRCON registeri, Burada bit3:0 kullanım dışı bırakılmıştır.
Screenshot 2023-11-20 at 08-55-44 PIC18(L)F2X45K50 Data Sheet - 30000684B.pdf.png
FVRCON registeri 1010xxxx olarak ayarlı iken sondaki kullanılmayan xxxx'lerin ne olarak gösterileceğini display unimplemented config bits kısmından ayarlarız. Bu binary gösterim için önemli olmasa da hex formatına çeviriken önemlidir. x bitlerini 1 olarak kabul edersek sonuç 0xAF iken, 0 kabul edersek sonuç 0xA0 olacaktır. Bu PIC'ten okuduğumuz değer ile program kodunun ilgili satırındaki yapılandırma değerini karşılaştırırken işe yarayabilecek bir özelliktir.
On kutusu VDD'yi elle açıp kapatmaya yarar. Mesela devredeki PIC'e bir kod attınız. Devreyi sökmeden hemen hızlıca çalışıp çalışmadığını test etmek istiyorsunuz diyelim. On kutusunu işaretlersiniz. PICkit2 devreye VDD voltajı gönderir. Devreyi bu voltajla çalıştırabilirsiniz. Sadece Programlama yapılmıyorken kullanılabilen bir seçenektir. Programlama moduna geçildiğinde PICkit2 VDD kontrolünü eline alır.
PICkit2 harici VDD algıladığında ekranda buna ilişkin bir bildirim gösterir. VDD kutusu grileşir, yanındaki On yazısı Check'e dönüşür. Check'i işaretlediğinizde Harici VDD'nin voltaj değerini 0.1V hassasiyetle ekranda gösterir. Bunu U5 pin 1'e yüksek lojik sinyal göndererek yapar.
Screenshot 2023-11-20 at 09-16-21 PICkit 2 Programmer_Debugger User's Guide - PICkit2 User Guide 51553E.pdf.png
VDD kutusu gri olarak kalıyor ve yanında check yazıyorsa kullandığınız klonda voltaj kontrolü yok demektir. Voltaj kontrolü olmayan klonlarda VDD kutusu gri olarak kalır. Bunun sebebi PICkit2 açılırken VDD kontrolü yapar. VDD kapalıyken voltaj algılarsa harici VDD moduna geçer. VDD kontrolü olmadığında sistemde sürekli VDD olduğu için otomatikman harici VDD moduna geçer öyle kalır. Klonun voltaj kontrollü olup olmadığını içini açmadan bu şekilde basitçe anlayabilirsiniz.
VDD kaynağı PICkit2 menüsünden seçilebilir. Varsayılan auto detect'tir. Bu ayarda kalabilir.
Force Target, sürekli harici VDD kullan;
Force PICkit2 ise sürekli dahili VDD kullan anlamına gelir.
/MCLR kutusu programlandıktan sonra PIC'i resette tutmaya yarar. Bu seçeneği işaretlediğinizde programlama yapılmıyorken Q8 transistörüne yüksek lojik gönderilerek VPP çıkışı pull-down yapılır. Programlama biter bitmez PIC resette tutulur. PIC'teki programı çalıştırırken GND ve MCLR bağlantısını PICkit2'ye yaparsanız program penceresinden /MCLR'yi işaretleyerek PIC'i resetleyebilirsiniz. Bu seçenek işaretli değilken VPP çıkışı float(yüzer) durumdadır.
Güzel açıklama teşekkür ederim.
Ete
Yeni yaptığım 18f25k50 li pickit2 programlayıcıda ıcsp hattından 16f628A programlayamıyorum.
Okuma yapıyor ama pici 12F615 olarak görüyor. Tasarımın ICSP devresinde sorun yok.
Yazma yaptırmak istediğimde ise aşağıdaki hatayı veriyor.
Bunun için bir çözüm var mı? 2 seri pic denedim yine aynı.
(https://i.ibb.co/PQ7KLm3/Ekran-Al-nt-s.png) (https://ibb.co/PQ7KLm3)
Gerilimi düşürün. 2.5V dan başlayın
yukarı çıkarın, kademe kademe.
3.5V civarı çalışabilir.
Alıntı yapılan: mehmet - 06 Mart 2024, 18:18:37Gerilimi düşürün. 2.5V dan başlayın
yukarı çıkmaya, kademe kademe.
3.5V civarı çalışabilir.
Hangi gerilimi?
Resimde sağda 5.0 yazan yerdeki gerilimi.
PIC16F628A'nın ID'si 0x1060'tır. Sizinkisi hatalı olarak 0x2180 olarak okuyor. (Benim de başıma benzer bir şey gelmişti. PIC18F86J72, PIC18F66J90 olarak okunuyordu. PIC'in ID'si hatalı okunuyordu. Ama bu PIC'ten kaynaklı bir sorundu.)
PIC16F628A'nın bağlı olduğu devre fazla akım çekiyorsa bağlantı kopması durumları yaşanabilir. Sadece programlanacak PIC'i bağlayın. Pickit2'den akım çeken başka şeyler olmasın devrede. Mümkünse bir de harici VDD ile deneme yapın.
Bana da oluyor bazen, ICSP'den fazla güç çekildiğinde bazen pickit2 bağlantısı kopabiliyor.
Hiç bir değişiklik yapmadan evdeki expkit pickit2 ile denedim. Sorunsuz yüklendi.
Sayın istinaf duvarı 18f25k50 ile yaptığım klon ile expkit arasındaki farklar nedir?
Nedir bu sorunların arkasında yatan sebep? Expkit i bu kadar başarılı kılan nedir?
Alıntı yapılan: elektro77 - 06 Mart 2024, 22:40:23Hiç bir değişiklik yapmadan evdeki expkit PICkit™2 ile denedim. Sorunsuz yüklendi.
Sayın istinaf duvarı 18f25k50 ile yaptığım klon ile expkit arasındaki farklar nedir?
Nedir bu sorunların arkasında yatan sebep? Expkit i bu kadar başarılı kılan nedir?
PICkit™2 donanımının nasıl çalıştığına dair bir yazı hazırlamıştım aslında. Bölüm içerisinde sabit konu olarak yer alıyor.
https://etepic.com/index.php/topic,5132.0.html
Sizdeki programlayıcı dahili osilatörle çalışıyor. Dahili osilatör kristal kadar stabil değil maalesef. Dahili osilatör bazen frekans kaydırabiliyor, bu da iletişim hatasına sebebiyet verebiliyor. Ben bunu fark ettiğim için PIC18F25K50 için PICkit™2 programı yazarken dahili osilatörü iptal edip kristale geçirdim tekrardan.
Şimdi sizin programlayıcının şemasını açtım inceliyorum.
VDD girişinde orjinal PICkit™2'de bulunan 2,7k'lık deşarj direnci yok. Bu direnç olmadığında C8 kondansatöründe biriken enerji, PICkit™2'yi USB portundan çıkarıp geri taktığında PIC18F25K50'nin resetlenmesine engel olur. Bir şekilde VDD ile GND arasına 2,7k direnç ekleyin.
Vpp boost converter katına geçiyorum. 12V üretimi için kullanılan kapasite değeri (C10, C11, C12) 3x10uF toplam 30uF. Bu biraz düşük, özellikle normalden fazla Vpp akımları gerektiğinde sorun çıkarır, kondansatörde yeterli enerji depolanamadığı için akım çekildiğinde voltaj çöker. Oradaki kondansatörün ikisini 22uF ile değiştirerek kapasite değerini 54uF'ye çıkarın.
Q8 transistörünün Base ile Emitter bacağı arasında bulunan R30 direncinin değeri oraya göre biraz düşük. Direnci 100k'ya çıkarın. Bu direncin değerinin düşük olması gelen akımın base yerine kısa yoldan bu direnç üzerinden akmasına sebep olur. Bu da Q8'in base akımını düşürerek drop yapmasına sebep olur.
Vpp'yi yük altında test edebilmek için Vpp ile GND arasına 1k direnç bağlayın. Troubleshoot bölümünden Vpp voltaj testi yapın. Vpp voltajının 11 voltun altına düşmemesi gerekir. Vpp voltajı düşük çıkıyorsa 1k'lık R12 direncinin değerini bir miktar azaltın. 680R deneyebilirsiniz.
Expkits PICkit™2'nin şeması elimde olmadığı için nasıl bir yapısı var bir şey söyleyemiyorum.
Kristal hariç hepsini deneyeceğim. 680ohm direnç işe yaramadı...Daha önce denedim. Şu an üzerinde 470ohm var yine işe yaramadı.
Testler için kullandığım 25K50'li PICkit™2 üzerinde PIC16F628A ile deneme yaptım. Herhangi bir sorun gözükmüyor. Normal PICkit™2 yazılımı hem de Pickit - yazılımı ile test yaptım.
25K50 üzerindeki firmware JAKA'nın Firmware'i üzerinden modlama yapılmış bir Firmware.
Sizin yaşadığınız sorun programlayıcıdaki donanımdan kaynaklı bir sorun gibi görünüyor. Yukarıda ayrıntılı yazdım zaten.
webmaster@kair.us adresine geri bildirim mesajı atın isterseniz. Programlayıcıyı yapan kişi yapılan geri bildirimleri dikkate alıyor. Size mutlaka dönüş yapacaktır.
(https://i.ibb.co/Gd0CFTg/IMG-20240307-183100-1.jpg) (https://i.ibb.co/fY2SBgD/pk2m-test.jpg) (https://i.ibb.co/p3hXMMX/pk2-test-1.jpg)