18F46K22 ile 240x128 Grafik Ekran Uygulaması

Başlatan musti463, 21 Eylül 2013, 04:36:39

musti463

Merhaba arkadaşlar,bu foruma kayıt olduğumdan beri büyük faydalarını gördüm,görmeyede devam ediyorum.Bende kendi çapımda foruma bir faydam olsun düşüncesiyle,çam sakızı çoban armağanı birşeyler hazırladım :)

Bu proje, 18F46K22 ile 240x128 piksel SAP1024B (T6963C ile eşdeğer) çipli ABG240128N00-BIW-R model bir Grafik Ekranı CCS C derleyicisiyle kullanmaya çalıştık.ABG240128N00-BIW-R model Grafik Ekran üzerinde SAP1024B çipi vardır ve T6963C ile hemen hemen aynıdır bu nedenle T6963 kütüphanesi SAP1024B çipli grafik ekranlar içinde kullanılabilir.CCS C derleyicinizde T6963 kütüphanesi yoksa "C:\Program Files\PICC\Drivers" dizinine kopyalamanız gerekir.Proje için gerekli tüm dosyalara en aşağıdaki download linkinden ulaşabilirsiniz.

Bu projede temel olarak aşağıdaki işlemler yapıldı:

1)Resim Basma (Basacağımız resimleri öncelikle 240x128 piksel yapmamız gerekiyor bunun için Office Picture Manager'ı kullanabilirsiniz ardından Paint ile gerekli düzenlemeleri yaptıktan sonra Farklı Kaydet deyip Tek Renk şeklinde kaydedin daha sonra en alttaki linkte mevcut olan program ile resminizin hex kodlarını alın ve Resimler.h'ı açıp herhangi biriyle değiştirin)
2)Geometrik Şekil Çizme
3)Yazı Yazdırma

Videodan da anlaşılacağı gibi stoklarımızda 20MHz kristal kalmadığından 4MHz'lik bir kristalle çalıştık bu yüzden Grafik Ekran biraz yavaş çalışıyor.

http://youtu.be/wcbI8TbP-2E

Dikkat edilmesi gereken hususlar:

CD: Register seçme ; CD=1 komut registeri, CD=0 için veri registeri seçilmektedir.
RD:Okuma (RD=0 okuma) T6963C'den okuma
WR: Yazma (WR=0 yazma) T6963C'ye yazma
CE: Çip seçme (CE=0 çip seçme) Bu pin mutlaka toprağa bağlanmalıdır +5V'ye bağlanırsa birşey göremezsiniz,boşta bırakırsanız ekrandakiler bozuk çıkar
DB: İki yönlü veri hatları. T6963C ile işlemci arasındaki tüm veri ve kontrol bilgisi okuma ve yazma bu hatlar üzerinden gerçekleştirilir.
RES:Sıfırlama (RES=0 T6963C sıfırlama)
FS: Font seçme FS=1(+5V) ise yazılarınız 6x8 piksel fontta görünür , FS=0(0V) ise 8x8 piksel fontta görünür

Grafik Ekranların çalışma şekilleri hakkında ayrıntılı bilgi için en alttaki linklere bakabilirsiniz

[IMG]http://i44.tinypic.com/15wfdpz.jpg[/img]

[IMG]http://i41.tinypic.com/2lcb281.jpg[/img]

[IMG]http://i43.tinypic.com/1z2kkep.jpg[/img]

[IMG]http://i40.tinypic.com/10f54s3.jpg[/img]

[IMG]http://i40.tinypic.com/2ai37lt.jpg[/img]

Kaynaklar:

http://elektronikvelemciler.blogspot.com/2013/07/atmega32-islemcisi-ile-t6963c-kontrolcu.html

https://www.picproje.org/index.php/topic,38512.msg282277.html#msg282277

İNDİR

http://dosya.co/c6loua89cj7l/18F46K22_ile_Grafik_Ekran_Uygulamas%C4%B1_%28by_musti463%29.rar.html
Mustafa Emir SADE

LukeSkywalker

#1
18f46k22'de PLL var. 4MHz osilatör bağlasan bile yüksek hızlara çıkman mümkün. 64MHZ'e kadar çıkıyor. Fakat girişe 16MHZ uygulaman lazım 64MHZ'e çıkabilmen için. Bunu da dahili osilatör bloğu ile halledebilirsin. Ayrıca osilatör bağlamana gerek kalmaz.

Murat Mert

Alıntı yapılan: LukeSkywalker - 21 Eylül 2013, 09:12:45
18f46f22'de PLL var. 4MHz osilatör bağlasan bile yüksek hızlara çıkman mümkün. 64MHZ'e kadar çıkıyor. Fakat girişe 16MHZ uygulaman lazım 64MHZ'e çıkabilmen için. Bunu da dahili osilatör bloğu ile halledebilirsin. Ayrıca osilatör bağlamana gerek kalmaz.
Katılıyorum k serisi ile çalışmalarım oldu. Dahili ile 64 mhz yptım gayet hızlı ve kararlı çalıştı.
mert07

sadogan

Güzel olmuş gayretlerini taktir ediyorum...

serdararikan

Alıntı yapılan: LukeSkywalker - 21 Eylül 2013, 09:12:45
18f46k22'de PLL var. 4MHz osilatör bağlasan bile yüksek hızlara çıkman mümkün. 64MHZ'e kadar çıkıyor. Fakat girişe 16MHZ uygulaman lazım 64MHZ'e çıkabilmen için. Bunu da dahili osilatör bloğu ile halledebilirsin. Ayrıca osilatör bağlamana gerek kalmaz.

bende 18f26k22 ile çalışıyorum dahili osilatör ile PLL açıp 64MHz yapmaya çalıştım fakat bir türlü PLL i aktif edemedim.

homer380

#5
Hangi dilde program yazdığınızı bilmiyorum. ben proton'a göre veriyorum.

OSCCON = %01110010      ;16 mhz iç osilator 
OSCTUNE =%01000000           ;PLL aktif 16x4 = 64 mhz hızında


config ayarlarından da iç osilatörü seçmeniz gerek.

serdararikan


konfigrasyon için aşağıdaki kodu

__CONFIG(1,FOSC_INTIO67 & PLLCFG_ON & FCMEN_ON & IESO_ON);
__CONFIG(2,PWRTEN_ON & BOREN_OFF & WDTEN_OFF);
__CONFIG(3,PBADEN_OFF & MCLRE_INTMCLR);
__CONFIG(4,STVREN_ON & LVP_OFF & XINST_OFF & DEBUG_OFF);__CONFIG(5,CP0_ON & CP1_ON & CP2_ON & CP3_ON & CPB_ON & CPD_ON);



PLL ve dahili osilator için


[/code]   OSCCON=0b01110011;
   OSCTUNEbits.PLLEN=1;
[font=Verdana][size=78%]
[/font][/size]
[font=Verdana][size=78%]kodunu kullanıyorum.nette araştırdım çok ihtimal denedim ama muvaffak olamadım.[/font][/size]


mesaj birleştirme:: 21 Eylül 2013, 13:53:38

Alıntı yapılan: serdararikan - 21 Eylül 2013, 13:52:40
konfigrasyon için aşağıdaki kodu

__CONFIG(1,FOSC_INTIO67 & PLLCFG_ON & FCMEN_ON & IESO_ON);
__CONFIG(2,PWRTEN_ON & BOREN_OFF & WDTEN_OFF);
__CONFIG(3,PBADEN_OFF & MCLRE_INTMCLR);
__CONFIG(4,STVREN_ON & LVP_OFF & XINST_OFF & DEBUG_OFF);__CONFIG(5,CP0_ON & CP1_ON & CP2_ON & CP3_ON & CPB_ON & CPD_ON);



PLL ve dahili osilator için


[/code]   OSCCON=0b01110011;
   OSCTUNEbits.PLLEN=1;



kodunu kullanıyorum.nette araştırdım çok ihtimal denedim ama muvaffak olamadım.

musti463

#7
Alıntı yapılan: LukeSkywalker - 21 Eylül 2013, 09:12:45
18f46k22'de PLL var. 4MHz osilatör bağlasan bile yüksek hızlara çıkman mümkün. 64MHZ'e kadar çıkıyor. Fakat girişe 16MHZ uygulaman lazım 64MHZ'e çıkabilmen için. Bunu da dahili osilatör bloğu ile halledebilirsin. Ayrıca osilatör bağlamana gerek kalmaz.

Evet hocam PLL olduğunu biliyorumda nasıl kullanıldığını bilmiyordum.O zaman 4MHz'lik kristal ile 16MHz hıza çıkabiliriz değil mi hocam?

mesaj birleştirme:: 21 Eylül 2013, 14:15:06

Alıntı yapılan: sadogan - 21 Eylül 2013, 11:59:51
Güzel olmuş gayretlerini taktir ediyorum...

Teşekkürler hocam
Mustafa Emir SADE

LukeSkywalker

Evet 4MHz osilatör ile 16MHz'e çıkabilirsiniz. Çok keskin, sapmasız bir osilatör katına ihtiyacınız yok ise dahili RC osilatörü kullanarak (16Mhz) 64 MHZ'e çıkabilirsiniz.

musti463

Alıntı yapılan: LukeSkywalker - 21 Eylül 2013, 14:40:14
Evet 4MHz osilatör ile 16MHz'e çıkabilirsiniz. Çok keskin, sapmasız bir osilatör katına ihtiyacınız yok ise dahili RC osilatörü kullanarak (16Mhz) 64 MHZ'e çıkabilirsiniz.

Hocam peki 20Mhz krsital taksak harici olarak ve PLL açsak sonuç ne olur? yine 64MHz de mi çalışıyor yoksa PIC hiç çalışmaz mı?
Mustafa Emir SADE

LukeSkywalker

Overclock etmiş olursunuz işlemciyi. Sapıtır büyük ihtimalle.

fatih6761

Hocam PIC'lerde PLL kullanmadım ama ayarlarının olması gerekir. Max 64MHz ise 20mhz kristal ile 60 mhz'e çıkılabilmeli. 20 * 6 / 2 gibi bir ayarlama olabilir.

homer380

18f46k22'deki pll'de çarpma söz konusu.pic'ine göre farklılık gösterebiliyor.Harici osilatoru en fazla 16 mhz cıkar(pll kullanıldığı varsayılıyor.). 16x4 = 64 mhz olur. Datasheet'inde ayrıntılı bir şekilde bahsediliyor. 20mhz ve pll açık olsa bile sapıtacaktır.

LukeSkywalker

#13
Bu mikrodenetleyicide USB birimi bulunmadığı için PLL birimine pek özenmemişler.
Ayrıca minimum 4MHz ile besleyin diyolla PLL birimini.

musti463

Alıntı yapılan: LukeSkywalker - 21 Eylül 2013, 16:24:40
Bu mikrodenetleyicide USB birimi bulunmadığı için PLL birimine pek özenmemişler.
Ayrıca minimum 4MHz ile besleyin diyolla PLL birimini.

16MHz kristal taksak ve PLL'i açsak ve bu mcu yu endüstriyel bir ortamda çalıştırsak sıcaklık değişimleri mcu çalışmasını etkiler mi? Dahili osilatör kullanımında böyle bir sıkıntı varmış acaba PLL kullanırsak da böyle sorun yaratır mı?
Mustafa Emir SADE