18f87k22 ile led blink devresi

18f87k22 ile led blink devresi

Beni cezbeden özellikleri nelerdi?

1-      128 kilobyte hafızası var, en önemli sebebi bu, 18f4620 kullanıyordum 64kb hafızası yetmeyince, 18f4685 aldım 96kb hafızası var diye, baktım o da yetmiyor bu çipi aldım.

2-      KDV dahil 13,24TL fiyatı oldukça ucuz geldi, çünkü bu çipten daha düşük özellikli olan picler 30TL gibi fiyatlarla satılıyor.

3-      80 pinlik olan bu çipte bir sürü giriş çıkış portu var. Unutmayın 18f84 ile başladığımızda 18 adet pin olan bu çipte bacakları çoğu devrede aracı entegrelerle çoğaltıyorduk.

4-      2 adet seri port(rs232) yani UART donanımı.

5-      64mhz hız ile çalışma.

Elemanı tanıyalım:

1.8V to 5.5V arası çalışma gerilimi var.

Dahili 3.3volt regülatörü var.

Program hafızası, yani flash memory’si 128 Kb

Dahili EEPROM 1,024 Byte yani 1Kilo byte

4kbyte lık SRAM

24 adet 12 bitlik dahili anolog/digital çevirici

Dahili RTC(real time clock) bulunuyor. Yani içinde saat devresi var. Hatta alarmı bile var.

2 adet spi, 2 adet uart, 2 adet I2C

Besleme:

Tablodan göreceğiniz üzere:

11,31,51 ve 70 numaralı pinler vss yani gnd yani low yani toprak yani 0 volttur.

32,48 ve 71 numaralı pinler vdd yani 1.8V ila 5.5V arası giriş gerilimi

AVDD pini yani 25. pin vdd pinlerine bağlanmalıdır,

AVSS pini yani 26. pin vss pinlerine bağlanmalıdır,

ENVREG pini yani 24.pin 3.3v dahili regülatörün açıp kapatılması için kullanılan pindir. Harici 3v3 regülatör ile pic besliyorsanız ENVREG low olmalı.

VDDCORE/VCAP pini yani 12.pin bir kondansatör ile GND hattına bağlanmalı, 100nf taktım oldu.

VDD ve VSS ler arasına birer tane 100nf kondansatör koyunuz.

18f87k22 yi programlamak için dikkat edilecek hususlar:

Bu pic smd yani yüzey montajlı olduğu içni zif soket ile değil icsp yöntemi ile programlamanız gerekir.

Program atabilmek için kristale gerek yoktur. Pickit3 cihazınızı mplab ide si ile kullanmanız gerekir. Harici program ile bazı picler programlanabiliyor ancak bu pic, harici programın listesinde yok. Devrenize voltaj girip girmeyeceğinizi mplabdan belirtmeniz gerekir. Default olarak giriş voltajını haricen bağlamanız gerektiği seçilidir. Programmer menüsüne girip setings seçeneğine tıklayıp, gelen pencereden power tabına tıklayıp, Power target circuit from PICkit3 yazısındaki tiki işaretlerseniz devrenize harici besleme girmenize gerek kalmaz, beslemeyi pickit3 sağlar. 52(pgc), 47(pgd), 9(mclr), vss pinleri ve vdd pinleri icsp soketine doğru bir biçimde bağlanmalıdır.

Bir ayrıntı: Ben ilk başta biraz tereddüt ettim 1 numarali pini yuvarlak çentiğe göre mi alacağım yoksa yazıya göre mi diye… Sonra düşündüm çentiği mantıklı buldum. Aslında neden böyle yapmışlar bilemiyorum normalde yazıyı okurken çentiğin sol üst köşede olması gerekir. Ama öyle yapmamışlar çentik yazının sol alt köşesine düşüyor ve saat yönünde pin numaraları ilerliyor.

http://images.gittigidiyor.com/7275/Microchip-PIC18F66K80-I-PT__72757735_0.jpg?_=1358408678

18f87k22 picini burdan satınalabilirsiniz, zaten başka bir yerde görmedim: https://www.dorukanstore.com/PIC18F87K22-IPT-RoHS,PR-17040.html

18f87k22 yeni nesil pic olduğundan pickit2 ve benzeri ürünlerle programlayamazsınız. Bu yüzden pickit3 almanız gerekmekte. Ben expkits’ten pickit3 ün klonunu aldım ve orjinaline göre daha ucuz ve zif soketide var. Expkits ürünlerini dorukan store ile alabilirsiniz, tavsiyemde budur çünkü pic18f87k22 yide dorukandan almanız gerekmekte. Pickit3 linki: https://www.dorukanstore.com/PICKIT3,PR-18101.html

Peki pic18f87k22 yi nasıl devremize montaj edeceğiz fotoğrafta kocaman duruyor ama elimize aldığımızda çıt parmağımızın tırnağı kadar küçük, küpe gibi bişey. Bu ürünü alın: https://www.dorukanstore.com/05mm-Universal-TQFP-Header,PR-10488.html

ve çok rahat bir şekilde lehimleyin iddia ediyorum dip kılıflı entegrelerden daha basittir lehimlemek. Pastayı lehim yüzeyine sürün biraz sonra çipi hizalayın havyanızın ucunda pislik varsa temizleyin çok az bir lehim değdirin havya ucuna, hatta değdirmeseniz bile olur. Aman fazla kaçırmayın lehimi. Neyse ürün burda: https://www.dorukanstore.com/05mm-Universal-TQFP-Header,PR-10488.html

Buraya kadar pici, programlayıcıya tanıtmayı ve minimum bağlantı devresi yapmayı anlattık. Şimdi devremizi denemek için led blink programı yazıp derleyip, yükleyelim.

Öncelikle led blink yazılımını mikroc ile yazdık, bunun bir sebebi yok isterseniz c18 ile de yazabilirsiniz, ben farklı dillerde ürettiğiniz hex dosyaları yükleyebildiğinizi göstermek için mikroc ile örnek yaptım. Kodlar burda:

void main() {

TRISA = 0;           // set direction to be output

TRISB = 0;           // set direction to be output

TRISC = 0;           // set direction to be output

TRISD = 0;           // set direction to be output

TRISE = 0;           // set direction to be output

do {

LATA = 0x00;       // Turn OFF LEDs on PORTA

LATB = 0x00;       // Turn OFF LEDs on PORTB

LATC = 0x00;       // Turn OFF LEDs on PORTC

LATD = 0x00;       // Turn OFF LEDs on PORTD

LATE = 0x00;       // Turn OFF LEDs on PORTE

Delay_ms(1000);    // 1 second delay

LATA = 0xFF;       // Turn ON LEDs on PORTA

LATB = 0xFF;       // Turn ON LEDs on PORTB

LATC = 0xFF;       // Turn ON LEDs on PORTC

LATD = 0xFF;       // Turn ON LEDs on PORTD

LATE = 0xFF;       // Turn ON LEDs on PORTE

Delay_ms(1000);    // 1 second delay

} while(1);          // Endless loop

}

 

Mikroc de yeni proje oluşturun, 18f87k22 yi seçin kristali 8mhz seçtim ben. Sonra kodları kopyala yapıştır yapın ve derleyin.

Mplab ide yi açın, configure menüsünden select device’ye tıklayın, açılan pencereden 18f87k22 yi seçin. Sonra menülerden programmer kısmını bulun, select programmer kısmından pickit3 ü seçin.File menüsüne gelin import… ‘a tıklayın. Hex dosyanızı seçin. Programmer menüsünden program’a tıklayın. Bir sorun yoksa pic’iniz programlanacak. Devrenizi çalıştırmak için mclr ve vdd arasına 10k direnç takmayı unutmayın, eğer mclr pinini vdd ye direkt bağlarsanız program atarken mclr ye gelen 13voltluk gerilim picinize zarar verecektir.

 

Yazan: M. Gökhan BEKEN

6 thoughts on “18f87k22 ile led blink devresi

  1. pickit3 ile 18f87k22 okuyamıyorum devamlı device : no device found yazıyor

    11,31,51 ,70 numaralı pinler vss ye bağladım

    32,48 ,71 numaralı pin lere vdd ye bağladım

    AVDD ve AVSS bağladım

    ENVREG pinini devreyi +5 volt ile beslediğim için high yaptım.

    VDDCORE 100 nf ile gnd çektim (ne işe yaradığını bilmiyorum tam )

    VDD ve VSS ler arasına birer tane 100nf taktım

    icps için bagladıgın bacaklar
    pgc pgd gnd vss mclr
    52 47 9

    pickit3 ile bir türlü okuma yapamadım acaba nerede yanlışlık yapıyorum

  2. Sorunu Hallettim benim pickit 3 mblab modunda degilmiş.
    Yalnız bir sorum daha var dahili çalişma freankası en yuksek 16 mhz ?
    64mhz çaliştirmak için kristal mı takmak gerekiyor eger gerikiyorsa ccs c de ne gibi kod yazcaz.

  3. 18f87k22 yi 5v ile çalıştıracağım bunun içinde yapmış olduğum bağlantılar şunlar:
    11 nolu pin vss.
    12 nolu pin 10uF ve oradan vss.
    24 ile 25 nolu pinler vdd.
    26 nolu pinler vss.
    25 ve 26 nolu pinler arasına 100nF koydum.
    31 nolu pin vss .
    32 nolu pin vdd.
    31 ve 32 nolu pinler arasında 100nF koydum.
    48 nolu pin vdd.
    51 nolu pin vss.
    48 ve 51 nolu pinler arasına 100nF koydum.
    70 nolu pin vss.
    71 nolu pin vdd.
    70 ve 71 nolu pinler arasına 100nF koydum.

    ICSP bağlantılarıda şöyle:
    yukarıda vermiş olduğunuz devre şemasına göre;
    ıcsp’nin
    1 nolu pini vpp ve bu 18f87k22 nin 9 nolu pinine gidiyor. (MCLR bağlantısı)
    2 nolu pin vddd ve bu 10k ile vpp ICSP nin 1 nolu pinine bağlı.
    3 nolu pin gnd.
    4 nolu pin 18f87k22 nin 47 nolu pinine gidiyor.
    5 nolu pin 18f887k22 nin 52 nolu pinine gidiyor.

    Sorunum şu:
    Bu bağlantılara göre pickit3 ile 18f87k22 ye program yüklerken 18f87k22 yanıyor. Bunun sebebi ne olabilir ?

Bir Cevap Yazın