avatar_ete

PIC Basic Ders-01 (Pic Micro işlemciler Hakkında)

Başlatan ete, 28 Ağustos 2011, 14:38:25

ete

Ders -1 :
----------
Pic Micro işlemciler hakkında kısa bilgi.
-----------------------------------------
Pic mikro işlemciler  teknik özellikleri  ve kılıfları açısından farklılıklar gösterirler. Her şeyden önce  birden fazla bacağa (pin) sahip olan işlemcilerin bacakları giriş veya çıkış olarak çalıştırılabilirler. Özellikleri açısından da bir kere programlanabilenler (C serisi) programları ultraviyole ile silinip yeniden programlanabilenler ve birden fazla silinip programlanabilenler olarak sınıflandırılabilirler.
Biz genelde FLASH olarak tarif edilen birden fazla silinip programlanabilen tipler üzerinde çalışacağız.Pic'ler taşıdığı ekstra özellikler açısından da bir kaç kategoriye ayrılırlar. Örnek olarak üzerin de;

1) Analog-Digital Çeviricisi olanlar,
2) Komparatör olanlar,
3) Donanımsal olarak seri haberleşme ünitesi olanlar,
4) HPWM ünitesi olanlar gibi Pic'ler mevcuttur. İleriki bölümlerde bunların kullanımına ait örnekler vereceğiz.

Pic işlemcilerin pinlerinin hem giriş hem de çıkış olarak çalıştırılabildiğinden bahsetmiş idik. Açıklamalarımızla ilgili uygulamalarımıza "Proje" adını vereceğiz ve her projemizin bir numarası olacaktır. Şimdi Pic <pin> lerinin organizasyonu işlemlerine kısa bir göz atalım.

Kullanacağımız Pic 16F84A olacak. Bu işlemcinin toplam 18 bacağı vardır.5 nolu bacak(-),ve 14 nolu bacak(+) besleme ,15-16 nolu bacaklar (XTAL) osilatör bacakları ve PortA (0-4 arası 5 adet pin) < 17,18,1,2,3 nolu bacaklar > ve PortB (0-7 arası 8 adet pin) <6,7,8,9,10,11,12,13 nolu bacaklar > olmak üzere toplam 13 adet (Giriş-Çıkış) pin'e sahip bir işlemcidir.

Devamı, ilişikteki Ders-1 isimli RAR dosyasında pdf olarak verilmiştir.

Ete

ferdi0435

hocam 16f877a port a nın tum pinlerini çıkış yapmak istiyrum fakat porta.4 te bir sorun veriyor. pull up direnci falan bağlanıyormuş bunu resimle gösterebilirmisiniz ????

ete

PortA.4 hemen hemen bir çok pic de Open Collector tipinde bir çıkıştır. Ne demek diyeceksiniz tabiiki bilmeyenler.
Çıkışın bir transistör üzerinden yapıldığını düşünün ve transistörün Emitteri GND ye bağlı. Beys'ine sinyal verince Collectordan LOW çıkartır. Ama aynı Collectordan HIGH çıkamaz. Çünki Collector High çıkarmak için her hangi bir +5V kaynağına bağlı değildir. O halde ne yapmak lazım. Bu pine 4K7 direnç ile bir pullup direnci bağlamanız gerekir. Size Low lazım olunca o pinden LOW çıkar. Ama High lazım olunca Pullup direnci High çıkmasını sağlar. Bazı arkadaşlar bu pine Led bağlamaktadırlar. Bir yandan Pullup direnci bir yandan da Led direnci ortaya saçma bir görüntü çıkar. Şayet bu pine led bağlamak zorunda iseniz pullup direnci olarak led direncini kullanabilirsiniz. O zaman bu direnci mümkünse 330 Ohm olarak kullanın.
Tabiiki en iyisi bu çıkışı bir transistörle kuvvetlendirerek low yada high almak olacaktır. Bu pine bağlanacak elemana göre bir şekil vermek daha doğru olacaktır. Aslında çıkışı ne için kullanacağını söylesen belki farklı bir uygulama yapılabilirdi ama ben yinede standart çıkışlara göre bağlantı şekillerini aşaıda vereyim.

Ete

Reytabu

Ete hocam

ekteki devreyi kurdum.

Aşağıdaki programı da derleyip pic e yükledim.
fakat led yanmıyor. beslemem 4.25 volt.
bütün çıkış pinlerde 2.75 v  gerilim,
5 nolu gnd pininde de 3.10 v gerilim,
haliyle de 4 nl ve 14 nolu pinlerde de 4.25 var.

nerede hata yapıyorum.


TRISA=0

PORTA=0
BASLA:
HIGH PORTA.1
PAUSE 1000
LOW PORTA.1
PAUSE 500
GOTO BASLA
END

ete

Baskılı devrende tek eksik led için seri direnç. Pic bacağından bir adet 330 ohm dirence girecek onun çıkışını led'e gireceksin.
4,25V işlemci için uygun değil tam 5V olması gerek.
Ayrıca ölçü aletinin kırmızı probu 14 nolu pinde ve siyah probu da 5 nolu pinde olunca görmen gereken voltaj 4,5 - 5V olmalıdır.
5 nolu gnd pini 0 v pinidir. Orada 3 küsür volta göremezsin. Bir yanlışın var.

Ete

Reytabu

 :)   oh nihayet hocam çok şükür.
Çok  teşekkür ederim.

Sonunda ledi yaktırdım. Çocuklar gibi havaya sıçradım oldu diye. Led'e GND gelmiyormuş lehimini tazeledim oldu.

İşin temelini attım sayenizde.

ete

Hadi hayırlı olsun bakalım.
Çalışmaya devam.

Ete

hako83

Hocam pic lerdeki herhangi bir donanımı kullandığımızda, o donanım picdeki programdan bağımsızmıdır acaba. Örneğin PWM donanımını kullandığımızda picdeki programda olası aksaklıklar veya gecikmeler pwm sinyalini bozarmı.

ete

Bazı piclerde yer alan donanım özellikleri yazdığınız programdan bağımsız geri planda (picin kendi romunda kayıtlı programa göre) çalışır ve sizin programınızı etkilemezler. HPWM de bunlardan birisidir. CCP1 ve CCP2 (veya yalnızca birisi) olan pic lerde bu özellik vardır. Elbette sinyalin frekansını ve duty değerini siz komutla belirlersiniz. Ama onun çalışması sizi en ufak bir şekilde etkilemez.

TMR1 geri planda çalışır, TMR0 geri planda çalışır. Bütün timer lar hep geri planda çalışırlar.

Mesela USART kontrolü geri planda çalışır ve veri geldiğinde kesme oluşturur.

Ete

hako83

Hocam cevabınız için teşekkür ederim.

veli dayı

ete  hocam yukarıda ra4 pinine direnç takılmasıyla ilgili resimleriniz var.oradaki arkadaş çalıştıramamasıyla ilgili meselesini çözmüş ve ilk adımı atmış(pic konusuna) fakat ben bir türlü ilk adımı atamadım.ben de aynı onunkine benzer bir devre yapmıştım.basit bir flaşör devresi 16f84a entegresiyle.
PROGRAM KODLARI:
@ DEVICE PIC16F84
@ DEVICE PIC16F84, WDT_OFF
@ DEVICE PIC16F84, PWRT_OFF
@ DEVICE PIC16F84, PROTECT_OFF
@ DEVICE PIC16F84, XT_OSC
DEFINE OSC 4
TRISA=%00000
TRISB=%00000000
PORTA=0
PORTB=0

LABEL:
HIGH PORTB.0
PAUSE 1000
LOW PORTB.0
PAUSE 1000
GOTO LABEL
END
şeklinde
yukarıdaki arkadaşınkınden tek farkı çıkışın portb.0 dan yapılması
devre olarak da lm7805 ile yapılmış bir regülatör devresi ve 22pf lerle oluşturulmuş 4 mhzlik bir de osc devresi.
ne yaptıysam çalıştıramadım.
derlemeyi microstdio programında yaptım.entegre yükleme kartınıda satın aldım içinden bir adet cd çıktı onun kurulumunu yaptım.ve entegreye yükledim.yüklendiğine dair ok yazısı da çıktı.fakat bir türlü çalıştıramadım devreyi.bu flaşör devresi benim pic entegreye ilk adımım olacaktı ama ben arkadaş gibi ilk adımı atamadım.bir yardımcı olabilir misiniz.ben programda yada yüklemede mi bir hata yapıyorum yada ekstradan başka donanımamı ihtiyacım var.

greatgonzo

Pic programmer OK verdiyse o kısımda sorun olduğunu sanmam. Pic in VDD bacağı ile ground arasına kondansatör koydunmu acaba. Pic in çalışmasında hayati önem taşıyabilir. Birde breadbord üzerinde bağlantı yapıyorsan devrede temassızlık varmı diye kontrol et.
İyi çalışmalar.

ete

Programı düzgün şekilde derlediğini ve devrende doğru besleme değerleri (+5V) olduğunu kabul edersek yaptığın devrenin çalışması gerekir. Ben yinede buraya 16F84A nın bu devresinin çalışması için devrede fiziki olarak nelerin olması gerektiğini yazayım sen yaptıklarınla karşılaştır.

1. 16F84A 18 pinli bir işlemcidir. Bu işlemcinin 14 nolu bacağı +5V besleme girişidir. 5 Nolu bacağıda 0V yani GND besleme girişidir.  Şimdi 7805 kullandığına göre bunun OUT bacağından gelen ucu 14 numaraya bağlayacaksın. 7805 in orta ucu GND dir. Burayıda 5 nolu pine bağlayacaksın.
Her ihtimale karşı entegre pinlerini ölçmeye çalış. Ölçü aleti Kırmızı probu 14 nolu pinde, Siyah probuda 5 Nolu pinde oalcak şekilde Voltaj kademesine al ve kaç volt okuduğuna bir bak istersen. 5V okuman gerekiyor. Fazlası varsa entegren yanmış demektir yenisini kullan. Daha az bir voltaj var ise bir yerlerde kısa devre veya geçirmeyen bir bağlantı var demektir.

2. İşlemcinin 4 nolu bacağı MCLR bacağıdır bu pinin 1K-10K arası bir direnç ile +5V ta bağlanması gerekir.

3. Kristal bağlantıları isis şemasında gözükmektedir. Kristal uçları 15 ve 16 nolu pinlerdir. Kristal bu pinlere bağlanacak ve bu pinler ayrıca 22pF kondansatörle GND ye bağlanacaktır.

4. Led yakılması için pic çıkışına 330 Ohm (veya 470 ohm) seri dirneç bağlanması gerekiyor. Led ışıklar kutupludur. Yani anot ve Katodu bulunur. Uçlar ters bağlanır ise led yanmaz. Bu nedenle yönü kontrol edin. GND ye bağlanacak uç da genelde düz bir kesilmiş bölge bulunur. Yada Pozitif beslemeye (pic pinine) bağlanacak taraf ayakları daha uzundur. Kısa olan taraf GND ye bağlanır.

Hepsi bu kadar . Bunları yaptın ise ledinde yanması gerekir.

Programında eksik olan şey yalnızca açılış gecikmesidir. Her program ilk çalıştığında verilen registerleri pic hafızasına yerleştirir. TRIS registerleri ve diğer özel registerlerine default değerler verilir. Bunları yapılması zaman alır. Bu nedenle programı başlatmadan evvel mutlaka bir 200ms bekleme koyulmalıdır. Bu her şeyin yerli yerine yerleşmesi için yeterli bir süredir. Bu nedenle LABEL etiketinden önce PAUSE 200 şeklinde bir gecikme yerleştir ve yeniden derleyerek programı pic'e yükle.

Derleme sonucunda bir Hex dosyası oluşturabiliyorsan hatasız derleme yapıyorsun demektir.  Hex dosyasını programlayıcı kullanarak Pic e yazıyorsun. Yazıp yazmadığından emin olabilmek için yazdıktan sonra birde Verify kontrolü yaptır. Bu işlemde hafızaya alınan Hex dosyası ile pice yazılan dosya bir biri ile karşılaştırılır. Uyumsuzluk var ise ekrana hata mesajı çıkar yoksa success şeklinde sorunsuz karşılaştırma yapıldığı bildirilir.

Bu açıklamaların ışığı altında yeniden kontrollerini yap ve sonucu bildir bakalım.
Ete

veli dayı

Hepinizden Allah razı olsun.ben ne olur ne olmaz belki pic filan arzalı olabilir diye 16f84a entegresi ısmarladım.
hepinizin dediklerini göz önünde bulundurup tekrar deneyeceğim.inşallah olumlu haberlerle dönerim sizlere.
         inanın şimdi kendimi daha iyi hissediyorum arkam sağlam diye.ete hocamın dersleri bir taraftan.yardım sever form arkadaşlarım bir taraftan.hepinize çok çok teşekkür ederim.

veli dayı

Ete hocam dediklerini yaptım.lede 390 R   direnç taktım.1k ile ra4 ü +5 volta bağladım mclrd 10k lık direnç var + ya bağlanmış vaziyette.programda etiketten önce 200 ms süre koydum.5 nolu ayakla 14 nolu ayak arasındaki voltaj değeri tam 5 volt.olmadı çalışmadı meret.sanki kristal osc üretmiyor gibime geliyor ama sizlere bir sorayımda öyle değiştireyim dedim.
         transistörleri kullanarak kristalli osc devreleri yaptığımda 10 mhz den aşağı olan kristalleri çalıştırmada zorlanırdım.10 mhz üstü tek seferde çalışırdı.
hani bundada öyle bir durumla filan mı karşılaşıyorum ki.

Powered by EzPortal