avatar_Mastercodex

Pic 18F2550 Kesme KUllanımı

Başlatan Mastercodex, 18 Eylül 2012, 21:18:17

ete

Bu iki işlemci ile hiç çalışmamıştım. Dolayısıyla  osilatör seçeneklerinide pek incelemedim. Durum farklıymış.
Anladım olayı.
Bir ara 18F lerde PLL olayını incelerken dikkatimi çekmişti yazdıklarım. PLL için osc frekansı 4 ile çarpılır diye. Tabiiki bazıları düz mantık uygulayarak o halde 20 Mhz takarsam 80 Mhz de çalışır işlemci demişlerdi. Data sheetlerde epeyce araştırmama rağmen bu konuda bir açıklama bulamadım. Ama PLL ile maksimum 40Mhz açıklaması yer alıyordu.
Demekki işlemci bazında farklılıklar mevcut. Buda olsa olsa USB biriminin donanımsal yer aldığı işlemciler için geçerli olsa gerek. Zira USB nin 48 Mhz de çalışma zorunluluğu var. Neyse bir şey daha öğrenmiş olduk. teşekkür ederim bilgiler için.

Ete

Mastercodex

Ben sistemimde 20 Mhz osilatör kullandım ve bunu _PLLDIV_5_1L ile 4 Mhz'e indirgeyerek aynen mucit23 arkadaşımında dediği gibi 96 Mhz PLL elde edilir.Sonrasında CPUDIV_OSC1_PLL2_1L ayarı ile PLL 2'ye bölünerek 48 Mhz elde edilir.Elde edilen bu frekans Timerlarda FOSC / 4 olduğu için 12Mhz işlemci frekansına varılır.

Tüm ayarlarımı buna göre yaptım ve devre çok stabil çalışıyor.Sistemnimdeki config ayarları ise aynen şöyle.

asm                                                                   
__CONFIG _CONFIG1L, _PLLDIV_5_1L & _CPUDIV_OSC1_PLL2_1L
__CONFIG _CONFIG1H, _FOSC_HSPLL_HS_1H & _FCMEN_OFF_1H & _IESO_OFF_1H
__CONFIG _CONFIG2L, _PWRT_ON_2L & _BOR_OFF_2L & _VREGEN_OFF_2L
__CONFIG _CONFIG2H, _WDT_OFF_2H
__CONFIG _CONFIG3H, _MCLRE_ON_3H & _LPT1OSC_OFF_3H & _PBADEN_OFF_3H & _CCP2MX_OFF_3H
__CONFIG _CONFIG4L, _STVREN_OFF_4L & _LVP_OFF_4L &_XINST_OFF_4L  & _DEBUG_OFF_4L
__CONFIG _CONFIG5L, _CP0_OFF_5L & _CP1_OFF_5L & _CP2_OFF_5L & _CP3_OFF_5L
__CONFIG _CONFIG5H, _CPB_OFF_5H & _CPD_OFF_5H
__CONFIG _CONFIG6L, _WRT0_OFF_6L & _WRT1_OFF_6L & _WRT2_OFF_6L & _WRT3_OFF_6L
__CONFIG _CONFIG6H, _WRTB_OFF_6H & _WRTC_OFF_6H  & _WRTD_OFF_6H
__CONFIG _CONFIG7L, _EBTR0_OFF_7L & _EBTR1_OFF_7L & _EBTR2_OFF_7L & _EBTR3_OFF_7L
__CONFIG _CONFIG7H, _EBTRB_OFF_7H
endasm
DEFINE OSC 48

Tabiki hızlı işlemci kullanmak istememin asıl sebebide komut gecikmelerini en aza indirebilmek.Çünkü Picbaisc Pro ASM'ye göre çok çok alt bir dil olduğu için komut gecikmeleride normal diye düşünüyorum.Yaptığım projede Timer1 ve Timer3 değerlerini hesapladığımda OSc frekansının Focs / 4 olduğunu net görebiliyorum.Eğer burada bir yanlışım varsa düzeltmenzi rica ederim.Çünkü bu konuda çok fazla bilgili değilim ve Mucit23 arkadaşım tamda anlattığın gibi Pic 18F4550/2550 işlemcisinin ayarları şöyle.


Eğer HSPLL osilatörü seçersek , _FOSC_HSPLL_HS_1H bayrağı seçilerek _FOSC_INTOSC_HS_1H ve _FOSC_HS_1H bayrakları seçilmeyecek.
_PLLDIV_5_1L  bayrağı ile devre üzerindeki 20Mhz crystal 5'e bölünerek PLL için gerekli olan 4Mhz x 24 çarpanı elde ediliyor ve sonuçta 96Mhz PLL sinyalini elde ediyoruz.Eğer devre üzerinde farklı bir crystal kullansaydık şu ayarları değiştirmemiz gerekecekti.

PLLDIV = 1 No prescale (4 MHz oscillator input drives PLL directly)
PLLDIV = 2 Divide by 2 (8 MHz oscillator input)
PLLDIV = 3 Divide by 3 (12 MHz oscillator input)
PLLDIV = 4 Divide by 4 (16 MHz oscillator input)
PLLDIV = 5 Divide by 5 (20 MHz oscillator input)
PLLDIV = 6 Divide by 6 (24 MHz oscillator input)
PLLDIV = 10 Divide by 10 (40 MHz oscillator input)
PLLDIV = 12 Divide by 12 (48 MHz oscillator input)

_CPUDIV_OSC1_PLL2_1L bayrağı ilede PLL ile elde edilen 96Mhz sinyal 2'ye bölünerek 48Mhz merkez OSC frekansı elde ediliyor.Bundan sonraki hesaplar ise Timerlar için gerekli olan Fosc / 4 olan 12Mhz frekansı üzerine oluyor.Buraya kadar doğru anlamışmıyım.

Daha önce ete hocamada bahsettiğim gibi benim yaptığım projeyi daha öncesinde Xlinx XC9572XL FPGA işlemcisi ile yapmışlar ve hiçbir gecikme yaşanmamış.Çünkü işlemcinin sistem frekansı 178Mhz.Burada benim elde ettiğim 12Mhz lik frekans ile kesme oluşma süresi olan   0,167usn bana zaten yetiyor ama belki daha üst bir işlemci varsa ona geçiş yaparım diye düşünmüştüm.

Ete hocam ,Mucit23 arkadaşım yardımlarınız ve gerekli açıklamalarınız çin çok teşekkür ederim.Eğer yanlışım varsada sizlerin üst düzey bilgilerinizden yaraklanıp yanlışlarımı düzeltmekte isterim.

Saygılarımla






Mastercodex® 3D Teknoloji
----------------------------------
http://www.mastercodex.com
info@mastercodex.com

Mastercodex

Arkadaşlar 18f2550 işlemci ile tamamlamış olduğum devrem için arada bir kod güncelleme ihtiyacı duyuyorum.Devreyi breadboard üzerinden artık PCB ye geçireceğim ama daha öncesinde her seferinde işlemciyi devre üzerinden çıkartıp  pickit2 ile programlayıp tekrar yerine takmak çok zahmetli geliyor.Bu durumu önlemek için Bootloader kullanamak istiyorum.Böylece her seferinde işlemciyi devre üzerinden çıkarmama gerek kalmayacak.

Aslında internnete nasıl bağlantı yapılacağı yazıyor ama mesela Bootloader butonunu hangi pine tanımlayacağım.Neler yapmam lazım hiç bilmiyorum.Bir kere uygulasam hemen olayı kapacağım.Picbasic pro'da hazır devremin üzerine bu devreyi kurmam konusunda bana yardım edebilirmisiniz.

İşlemcim hali hazırda USB haberleşmesi için zaten 48Mhzde çalışıyor.
Mastercodex® 3D Teknoloji
----------------------------------
http://www.mastercodex.com
info@mastercodex.com

ete

PicKit2 nin ICSP (ın circuit serial Programming) pin çıkışları vardır. Yapman gereken yalnızca ,
- MCLR
- PortB.6
- PortB.7
- GND
- +5V
pinlerini kartın üzerinde oluşturmak ve bunlardan port pinlerini direk buraya bağlaman ve ana devreden araya 10K direnç kullanarak onları izole etmendir. Direnç sakınca oluşturuyor ise bu pinleri birer sürgülü anahtardan geçirerek programlama esnasında direk ICSP pinlerine bağlanmalarını onun haricinde ise direk devreye bağlanmalarını da sağlayabilirsin. Sonra bir ara kablosu ile bunları PicKit2 deki sokete taktığın zaman programlamayı işlemci kartın üzerinde iken yapabilirsin. Bootloader denilen sistemini anlamadım. Nerede gördün ve duydun?
Ete


ete

#20
Bu bilgiyi şimdi hatırladım. Ama yaklaşık 4-5 sene önce okumuşturm. O zaman PC lerde Seri port var idi. Pek ihtiyacım olmadı sonradan da kafamdan silinmiş anlaşılan.
Bilgi için teşekkürler.
Ben yinede ICSP yi tercih ederim doğrusu. Hazır elinde PicKit2 var iken bir de bootloader ile uğraşmak yersiz tabiiki bu benim kişisel tercihim.

Ete

KAZIMUGUR

Hocam dediğiniz gibi ICSP kolaylık.
Bootloader hani belki uzaktan - bir şekilde internete bağlı ise program değişikliği upgrade gibi bir şey için olabilir.

Mastercodex

İlginiz için çok teşekkür ederim ama şunu belirtmek istiyorum.Devremde PortA ve PortB çıkışları komple dolu.PGC VE PGD pinlerinde LCD  Data6 ve Data7 uçları bağlı.Şöyle yapsam olurmu , LCD RW ,RS pinlerini PORTC ye kaydırsam  LCD Data pinlerinide PORTB.1 den başlatsam ve dediğiniz gibi ICSP bağlantısını yapsam olurmu ?

PORTB.0=Sinyal girişi
PORTB.1=LCD / RW
PORTB.2=LCD / RS
PORTB.3=BOŞ
PORTB.4=LCD/D4
PORTB.5=LCD/D5
PORTB.6=LCD/D6
PORTB.7=LCD/D7

Bootloader bağlantısında ise şöyle bir uygulama bulunuyor.Pickit2 veya benzeri programlayıcıları hiç kullanamadan direk USB bağlantısı ile HEX dosyası PC'den atılabiliyor.Bununla ilgili bağlantı resminide eke koyuyorum.Tabiki elimde Pickit var ama Pickitin olmadığı yerlerdede sadece USB üzerinden program atmak bana cazip geldiği için böyle bir eğilimde bulundum.Böylelikle programlayıcı bağımlılığı ortadan kalmış oluyor.Zaten Pickit2 'yide sizin sayenizde satın aldım.Pickit2 nin Logic analizör özelliğini kullanmak için.Sizce hangi sistemi uygulamalıyım.Tabiki sizin dediğiniz sistemi yarın hemen uygulayacağım ama diğer bootloader olayınıda merak ediyorum.

Mert Öztoprak arkadaşımız sitesinde Adım Adım PIC18F2550 ile USB İletişim işlemini anlatmış ama CCS C ile yapmış.Bir bakarsanız memnun olurum.



Mastercodex® 3D Teknoloji
----------------------------------
http://www.mastercodex.com
info@mastercodex.com

Mastercodex

Hocam aslında Kazımuğur arkadaşımız kafamdan geçeni okumuş çünkü ileride firmware gibi bir güncelleme yapmak istersem diye düşünmüştüm ama şimdi ise sadece işlemciyi her seferinde çıkarıp takmaktan usandığım için böyle birşey düşündüm.
Mastercodex® 3D Teknoloji
----------------------------------
http://www.mastercodex.com
info@mastercodex.com


Mastercodex

Verdiğin linkte her türlü anlatım mevcut ve aşağı yukarı olayı kavradım.Her iki sistemide uygulayacağım.Böylece her iki sistemide öğrenmiş olacağım.
Mastercodex® 3D Teknoloji
----------------------------------
http://www.mastercodex.com
info@mastercodex.com

Mastercodex

Ete hocam dediğim gibi PORTB.6 ve PORTB.7 pinlerini boşaltırsam dediğiniz gibi izolasyon için direnç kullanmak zorunda kalmayacağım değilmi ? Ozaman şöyle bir bağlantı işimi görürmü.

Mastercodex® 3D Teknoloji
----------------------------------
http://www.mastercodex.com
info@mastercodex.com

Mastercodex

Ete Hocam dediğiniz gibi ICSP bağlantısını oluşturacağım ama LCD data pinleri bağlı olan PORTB.6 ve PORTB.7 pinlerini boşaltmam gerekiyor.Bu nedenden dolayı LCD data uçlarını
PORTC 4,5,6,7 nolu pinlere taşıdım ama LCD aktif hale gelmiyor.Tekrar PORTB ye geri aldığımda ise LCD aktif oluyor.Nerede yanlış yapıyorum sizce.

LCD RW biti direk GND ucuna bağlı

PORTB için LCD ayarları
--------------------------
DEFINE LCD_DREG PORTB
DEFINE LCD_DBIT   4
DEFINE LCD_RSREG PORTB
DEFINE LCD_RSBIT 1
DEFINE LCD_EREG   PORTB
DEFINE LCD_EBIT   2
DEFINE LCD_BITS   4
DEFINE LCD_LINES 2
DEFINE LCD_COMMANDUS 2000
DEFINE LCD_DATAUS 50

PORTC için LCD ayarları
--------------------------
DEFINE LCD_DREG PORTC
DEFINE LCD_DBIT   4
DEFINE LCD_RSREG PORTC
DEFINE LCD_RSBIT 1
DEFINE LCD_EREG   PORTC
DEFINE LCD_EBIT   2
DEFINE LCD_BITS   4
DEFINE LCD_LINES 2
DEFINE LCD_COMMANDUS 2000
DEFINE LCD_DATAUS 50

LCD uçlarını PORTC 'ye taşıyamazsam ICSP için başka seçeneğim yok değilmi ?
Mastercodex® 3D Teknoloji
----------------------------------
http://www.mastercodex.com
info@mastercodex.com

ete

#28
Önce seçeneğini açıklayayım. B portunda lcd pinlerini 1k lık direnç üzerinden bağla hatta kurtarıyorsa daha büyük değerli bir direnç kullan. ICSP pinlerini ise direk PorttB.6 ve PortB.7 ye bağla  . Bu şekilde hem Icsp programlama çalışır hemde lcd çalışır. Böylece port değiştirmen gerekmez.
PortC deki soruna gelince pinlerin mutlka alternatif bir kullanımı vardır. Neyse bulup onuda iptal etmek gerekiyordur. Yoksa verdiğin tanımlama doğru. 
Edit: Data sheet'e baktım. Oradaki açıklamaya bakarsan PortC.4 ve PortC.5 yalnızca digital giriş pini olarak kullanılabiliyor. Çıkış yapılamıyor. Sorunun kaynağı bu.!!!!!!!!!!!!!!!

Ete

Mastercodex

Hocam aynen dediğiniz gibi 10K dirençler ile deneyeceğim ve çalışacağınada eminim.PORTC'yi hiç kullanamayacağım.Çok teşekkür ederim.
Mastercodex® 3D Teknoloji
----------------------------------
http://www.mastercodex.com
info@mastercodex.com

Powered by EzPortal