Pıc12f675 ile Led yakıp söndüremiyorum kod mu hatalı derleyicide mi sorun çözemedim
@ DEVICE_pic12F675_PROTECT_Off 'Kod Protek kapalı
@ DEVICE_pic12F675_MCLR_Off 'MCLR pini kullanılmıyor.
@ DEVICE_pic12F675_INTRC_OSC_CLKOUT 'Dahili osilatör kullanılacak
@ DEVICE_pic12F675_WDT_Off 'Watch Dog timer kapalı
@ DEVICE_pic12F675_PWRT_Off 'Power on timer kapalı
DEFINE OSC 4
ANSEL = 0
TRISIO=%000000
CMCON=7
BASLA:
GPIO.2=1
pause 100
GPIO.2=0
pause 100
GOTO BASLA
END]
Oscal değerini yazdırmak gerekli.. silindiyse çözümü olmayabilir..
pickit2 ile otomatik yaptım led direk yanıyor
Bundan sonrasını Ete hocam bilir..
23.satır END] yerine END mi olacak acaba.
ic prog ile config bitleri düzenledim çalıştı, MPASM ile doğru config bitler ayarlanmıyor demek ki
Sondaki parantez mevcutken derlemesi enteresan..
INTRC_OSC_CLKOUT
ile bir pinden osc frekansı dışarıya verilmiştir
Bu kısmı
INTRC_OSC_NOCLKOUT
yaparak pin kurtulmuş olur.
Derleyici, End sonrasında yazılan hiç bir şeyi galiba dikkate almıyor
Denedim
galiba 64bit bilgisayar yüzünden config bitlerini tam olarak doğru derlenemiyor, sorun var
derlediğim hexi icprog ile açtığımda osilatör değeri intOSC GP4 olarak ve diğer config değerlerde çoğu kapalı olmasına rağmen Açık gözüküyor
Pic 12F675 en çok sorun yaşanan işlemcilerden birisidir. Sorun aslında tek tir. Program hafızasının en son adresinde OSCAL değeri yani işlemcinin dahili osilatör ile çalışacağı zaman kullanacağı kalibrasyon değeri kayıtlıdır. Bu kayıtlı değer olmadan dahili osilatör doğru çalışmaz. Yada öyle yavaş çalışırki işlemciniz kilitlendi sanırsınız.
Şayet bu işlemciyi programlarken önce erase(silme) yaparsanız OSC değeriniz silinir. Her programlamada işlemci hafızası yeniden yazıldığı için tedbir almazsanız bu OSCAL değeriniz silinir ve işlemciniz çalışmaz hale gelir.
Basic de alınacak tedbir şudur. Programın başlarında bir yere,
DEFINE OSCCAL_1K 1 'bu komut mutlaka olacak OSCCAL değerini yeniden pice yazdırıyor
satırını eklemenizdir. Bu sayede işlemci programlanmadan yada silinmeden önce son hafızada yer alan OSCAL değeri oradan alınıp progranlamadan sonra yeniden aynı yere yazılır. Böylece işlemciyi kaybetmemiş olursunuz.
Yaşadığınız olay bu sorunu çağrıştırıyor.
OSCAL değeri kaybolmuş işlemcilerde Pickit2 programlayıcı bunu geri getirebilecek seçeneğe sahiptir. Aslında bunu kendinizde yapabilirsiniz. Ama bir frekansmetreniz olması gerekir.
Yapılan iş restgele bir OSCAL değeri ile işlemci çalıştırıp sigorta seçeneklerinden OSC pinlerinden birisinin CLK_Out yapılması ve çıkan frekansın ölçülmesine dayanır. Frekansın 4Mhz'e en yakın olduğu anda OSCAL değerinin sabitlenip tekrar yerine yazılması şeklindedir.
Şimdi yapacağınız işi şöyle açıklayabiliriz.
1. Yukarıda belirtilen Define satını programın baş kısmına ekleyin.
2. Programlayıcınızı açın ve READ komutu ile işlemci içinde kayıtlı programı program yok ise tüm program hafızasını okutun. Hafızanın enson adresine ($3FF)gidip bakın. Orada şayet 3FFF şeklinde bir bilgi kayıtlı ise bu oradaki bilginin kaybolduğunu gösterir. Orada en azında 3FFF değerinden daha küçük bir değer olmalıdır.
3. Şayet OSCAL değeriniz kayboldu ise ve elinizde pickit2 var ise TOOLS menüsünden OSCAL seçip Auto Regenerate seçeneğini seçerek yeniden oluşturmaya çalışın. Başarılı olursanız sorun yok. Olmazsanız Pic'e yüklenecek programı Pickit2 ye yükledikten sonra gidip o son adrese 34FC gibi rastgele bir değer yazın. Enazından bu değer işlemciyi belirli bir hızda çalıştıracak ve programın çalıştığını görebileceksiniz.
Progamı yazdıktan sonra BASLA satırından bir önceki satıra braz gecikme ekleyiniz. Bu gecikme miktarı en azından 200 ms dolayında olsun. Bu sayede ilk açılışta işlemci registerleri ayarlayıp gerekli yerlere yerleştirme zamanı bulacaktır. Aksihalde program rastgele değerlerle çalışmaya başlarkı bu çoğu zaman programın abuk subuk çalışmasına sebep olabilir. Pic işlemcilerde MCLR yani reset pini bulunur. Bu pin reset pini olarak kullanılıyor ise o pine bir pullup direnci bağlanmalıdır. Sigorta ayarlarından MCLR_OFF yapılarak pinin reset özeelliği kapatılabilir. Bu durumda pine bir şey bağlamak gerekmez. Ama sigorta ayarlarından belirli bir ayar vermemek için o satırı kapatırsanız default değerler işin içine girer. Bu nedenle satırları kapatmayınız.
MPASM ile derleme yaptığınızda sigorta ayarlarınız devreye kesin olarak alınır. Alınmadığını hiç gözlemlemedim.
Başkada söylenecek bir şey göremiyorum.
Ete
Bu şekilde düzgün çalıştı ve C içinde PBP doyasının içindeki ilgili INC. dosyasının içideki config değerinin önüne ; gerekliymiş çalışan kod aşağıda
@ __config _INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_OFF & _MCLR_OFF & _CPD_OFF & _BODEN_OFF & _CP_OFF
DEFINE OSC 4
ANSEL = 0
'CMCON=7
TRISIO=%000000
BASLA:
GPIO.2=1
pause 100
GPIO.2=0
pause 100
GOTO BASLA
END