16F628A programlama sorunu

Başlatan Analog, 19 Kasım 2023, 00:36:45

Analog

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.

ete

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

istinaf duvarı

#2
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?

ete

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

istinaf duvarı

#4
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.


onurinci

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..

istinaf duvarı

Hangi konularda bilgi istiyorsunuz E.T.E. hocam?

ete

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

istinaf duvarı

#8
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:

Bu eki görüntüleyemezsiniz.

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.

Bu eki görüntüleyemezsiniz.

 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.

Bu eki görüntüleyemezsiniz.

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.






ete

Güzel açıklama teşekkür ederim.

Ete

elektro77

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ı.


"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

mehmet

#11
Gerilimi düşürün. 2.5V dan başlayın
yukarı çıkarın, kademe kademe.
3.5V civarı çalışabilir.
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
http://www.mehmetbilgi.net.tr
CC BY

elektro77

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?
"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

mehmet

Resimde sağda 5.0 yazan yerdeki gerilimi.
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
http://www.mehmetbilgi.net.tr
CC BY

istinaf duvarı

#14
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.


Powered by EzPortal