- Programlamaya Hazırlanma:
- MPLAB-X kullanarak Yeni Bir Proje Oluşturma:
- Yapılandırma Kayıtlarını Tanıyın:
- MPLAB-X'te Yapılandırma Bitlerini Ayarlama:
- PIC'in LED'i Yanıp Sönmesi için Programlanması:
- Devre Şeması ve Proteus Simülasyonu:
Bu, PIC Eğitim Serimizin ikinci öğreticisidir. Önceki eğitimimizde PIC Mikroişlemciye Başlarken: PIC ve MPLABX'a Giriş, PIC mikro denetleyicimiz hakkında temel bilgileri öğrendik, ayrıca gerekli yazılımı kurduk ve yakında kullanacağımız yeni bir PicKit 3 programcısı satın aldık. Artık PIC16F877A'yı kullanarak İlk LED yanıp sönen Programımıza başlamaya hazırız . Ayrıca bu eğitimde Yapılandırma Kayıtlarını da öğreneceğiz.
Bu eğitim, gerekli yazılımı Bilgisayarınıza yüklemiş olmanızı ve PIC MCU ile ilgili bazı temel bilgileri bildiğinizi ummaktadır. Değilse, lütfen önceki eğitime geri dönün ve oradan başlayın.
Programlamaya Hazırlanma:
PIC16F877A'yı kullanmaya karar verdiğimizden beri, XC8 derleyicisiyle veri sayfalarına başlayalım. Eğitimimizde ilerledikçe bunlara sık sık atıfta bulunacağımız için, herkese PIC16F877A Veri Sayfasını ve XC8 Derleyici kılavuzunu indirmesini tavsiye ederim. Gerçekten programlamaya başlamadan önce herhangi bir MCU'nun Veri Sayfasının tamamını okumak her zaman iyi bir uygulamadır.
Şimdi, MPLAB-X'imizi açmadan ve programlamaya başlamadan önce, dikkat edilmesi gereken birkaç temel şey var. Her neyse, bu bizim ilk programımız olduğu için, siz insanları çok fazla teori ile taciz etmek istemiyorum ama programlarken burada ve orada duracağız ve size böyle şeyleri açıklayacağım. Tüm bunları okumak için yeterli zamanınız yoksa, o zaman bir göz atın ve sayfanın altındaki videoya atlayın.
MPLAB-X kullanarak Yeni Bir Proje Oluşturma:
Adım 1: Önceki sınıfta kurduğumuz MPLAB-X IDE'yi başlatın, yüklendikten sonra şuna benzer bir şeye benzemelidir.
Adım 2: Dosyalar -> Yeni Proje'ye tıklayın veya Ctrl + Shift + N kısayol tuşunu kullanın. Bağımsız Proje'yi seçip İleri'ye tıklamanız gereken aşağıdaki POP-UP'ı alacaksınız.
Adım 3: Şimdi proje için Cihazımızı seçmemiz gerekiyor. Bu nedenle, Aygıt Seç açılır bölümüne PIC16F877A yazın. Bir kez yapıldıktan sonra böyle olmalı ve ardından İleri'ye tıklayın.
Adım 4: Bir sonraki sayfa, projemiz için aracı seçmemize izin verecektir. Bu, projemiz için PicKit 3 olacaktır. PicKit 3'ü seçin ve ileriye tıklayın
Adım 5: Sonraki sayfa derleyiciyi seçmenizi, XC8 Derleyicisini seçmenizi ve ileriye tıklayın.
Adım 6: Bu sayfada projemize bir isim vermemiz ve projenin kaydedilmesi gereken yeri seçmemiz gerekiyor. Bu Projeyi Blink olarak adlandırdım ve masaüstüme kaydettim. Tercihinize göre adlandırabilir ve kaydedebilirsiniz. Projemiz, doğrudan MAPLB-X tarafından başlatılabilen .X Uzantısı ile bir klasör olarak kaydedilecektir. Bittiğinde Bitir'i tıklayın.
Adım 7: İşte bu !!! Projemiz oluşturuldu. En soldaki pencere proje adını gösterecektir (Here Blink), içindeki tüm dizinleri görebilmemiz için üzerine tıklayın.
Programlamaya başlamak için Kaynak dosya dizinimizin içine bir C Ana dosyası eklememiz gerekir. Bunu yapmak için, kaynak dosyaya sağ tıklayın ve aşağıdaki resimde gösterildiği gibi Yeni -> C Ana Dosya'yı seçin.
Adım 8: C dosyasının adının belirtilmesi gereken aşağıdaki iletişim kutusu görünecektir. Tekrar Blink'te isim verdim ama seçim sana kaldı. Dosya adı sütununda adlandırın ve bitir'e tıklayın.
Adım 9: C ana Dosyası oluşturulduktan sonra, IDE onu aşağıda gösterildiği gibi içinde bazı varsayılan kodlarla bizim için açacaktır.
Adım 10: İşte şimdi kodumuzu C-main Dosyasında programlamaya başlayabiliriz. Öğreticilerimizde varsayılan kod kullanılmayacaktır. Öyleyse onları tamamen silelim.
Yapılandırma Kayıtlarını Tanıyın:
Herhangi bir Mikroişlemciyi programlamaya başlamadan önce, yapılandırma kayıtlarını bilmemiz gerekir.
Peki bu Yapılandırma kayıtları nelerdir, bunları nasıl ve neden ayarlamalıyız?
PIC cihazları, Yapılandırma bitlerini veya sigortaları içeren birkaç konuma sahiptir. Bu bitler, osilatör modu, bekçi uygulaması zamanlayıcısı, programlama modu ve kod koruması gibi temel cihaz çalışmasını belirtir . Kodu çalıştırmak için bu bitlerin doğru ayarlanması gerekir, aksi takdirde çalışmayan cihazımız olur . Bu yüzden, Blink Programımıza başlamadan önce bu konfigürasyon Kayıtlarını bilmek çok önemlidir.
Bu Yapılandırma kayıtlarını kullanmak için Veri Sayfasını okumalı ve hangi farklı Yapılandırma bitlerinin mevcut olduğunu ve işlevlerini anlamalıyız. Bu bitler, bir yapılandırma pragması kullanılarak programlama gereksinimlerimize göre ayarlanabilir veya sıfırlanabilir.
Pragma aşağıdaki formlara sahiptir.
#pragma yapılandırma ayarı = durum-değeri #pragma yapılandırma kaydı = değer
burada ayar , bir konfigürasyon ayarı tanımlayıcısıdır, örneğin, WDT ve durum, istenen durumun metinsel bir açıklamasıdır, örn., KAPALI. Aşağıdaki örnekleri düşünün.
#pragma config WDT = ON // izleme zamanlayıcısını açın #pragma config WDTPS = 0x1A // zamanlayıcı son ölçek değerini belirtin
RAHATLAYIN!!….. SAKİN SAKİN!!…...
Kafamıza çok fazla girdiğini biliyorum ve bu Yapılandırma bitlerini ayarlamak bir acemi için biraz zor görünebilir !! Ancak, MPLAB-X'imizde meydan okurcasına değil.
MPLAB-X'te Yapılandırma Bitlerini Ayarlama:
Mikroçip, farklı Yapılandırma bitlerinin grafik gösterimlerini kullanarak bu yorucu süreci çok daha kolaylaştırdı. Şimdi onları ayarlamak için aşağıdaki adımları izlememiz yeterli.
Adım 1: Pencere -> PIC Bellek Görünümü -> Yapılandırma Bitleri'ne tıklayın. Aşağıda gösterildiği gibi.
Adım 2: Bu, aşağıda gösterildiği gibi IDE'mizin altındaki Yapılandırma Bitleri penceresini açmalıdır. Burası, her bir yapılandırma bitini ihtiyaçlarımıza göre ayarlayabileceğimiz yerdir. Adımlar boyunca ilerledikçe her bir biti ve amacını açıklayacağım.
Adım 3: İlk Bit, osilatör seçim bitidir.
PIC16F87XA, dört farklı osilatör modunda çalıştırılabilir. Bu dört mod, iki konfigürasyon biti (FOSC1 ve FOSC0) programlanarak seçilebilir:
- LP Düşük Güçlü Kristal
- XT Kristal / Rezonatör
- HS Yüksek Hızlı Kristal / Rezonatör
- RC Direnç / Kapasitör
Bizim projeleri için biz dolayısıyla biz gereken bir 20Mhz OSC kullandığınız HS seçmek açılan listeden.
Adım 4: Sonraki bit, bekçi köpeği zamanlayıcımız Etkin Bit'imiz olacaktır.
Watchdog Timer, herhangi bir harici bileşen gerektirmeyen, ücretsiz çalışan, çip üzerinde bir RC osilatördür. Bu RC osilatörü, OSC1 / CLKI pininin RC osilatöründen ayrıdır. Bu, aygıtın OSC1 / CLKI ve OSC2 / CLKO pinlerindeki saat durdurulsa bile WDT'nin çalışacağı anlamına gelir. Normal çalışma sırasında, bir WDT zaman aşımı bir cihaz Sıfırlaması oluşturur (Watchdog Zamanlayıcı Sıfırlama). Durum yazmacındaki TO biti, bir Watchdog Timer zaman aşımı üzerine silinecektir. Zamanlayıcı, yazılım kodlamamızda temizlenmezse, her WDT zamanlayıcı taşması üzerine MCU'nun tamamı sıfırlanacaktır. WDT, yapılandırma biti temizlenerek kalıcı olarak devre dışı bırakılabilir.
Programımızda WDT kullanmıyoruz, bu nedenle açılır kutudan KAPALI'yı seçerek temizleyelim.
Adım 5: Sonraki bit Power-up timer Bit olacaktır.
Güç Açma Zamanlayıcısı, yalnızca POR'dan güç verildiğinde sabit 72 ms nominal zaman aşımı sağlar. Powerup Timer, dahili bir RC osilatöründe çalışır. Çip, PWRT aktif olduğu sürece Sıfırlamada tutulur. PWRT'nin zaman gecikmesi, VDD'nin kabul edilebilir bir seviyeye yükselmesine izin verir. PWRT'yi etkinleştirmek veya devre dışı bırakmak için bir yapılandırma biti sağlanır.
Programımızda bu tür gecikmelere ihtiyacımız olmayacak, bu yüzden bunu da KAPATALIM.
Adım 6: Sonraki bit Düşük Voltaj Programlama olacaktır.
Yapılandırma kelimesinin LVP biti, düşük voltajlı ICSP programlamayı etkinleştirir. Bu mod, mikro denetleyicinin işletim voltajı aralığında bir VDD kaynağı kullanılarak ICSP aracılığıyla programlanmasına izin verir. Bu sadece VPP'nin VIHH'ye getirilmesi gerekmediği, bunun yerine normal çalışma voltajında bırakılabileceği anlamına gelir. Bu modda, RB3 / PGM pini programlama işlevine adanmıştır ve genel amaçlı bir G / Ç pini olmaktan çıkar. Programlama sırasında, VDD, MCLR pinine uygulanır. Programlama moduna girmek için, LVP bitinin ayarlanması şartıyla VDD'nin RB3 / PGM'ye uygulanması gerekir.
RB3'ü bir I / O pini olarak kullanabilmemiz için LVP'yi kapatalım. Bunu yapmak için, açılır kutuyu kullanarak bunu KAPATIN.
Adım 7: Sonraki bitler EEPROM ve Program belleği Koruma bitleri olacaktır. Bu bit açılırsa, MCU programlandıktan sonra hiç kimse programımızı donanımdan almayacaktır. Ama şimdilik üçünü de KAPALI bırakalım.
Ayarlar talimat verildiği gibi yapıldıktan sonra, İletişim kutusu şuna benzer görünmelidir.
Adım 8: Şimdi Çıktıya Kaynak Kodu Oluştur'a tıklayın, kodumuz şimdi oluşturulacak, sadece başlık dosyasıyla birlikte kopyalayın ve aşağıda gösterildiği gibi Blink.c C Dosyamıza yapıştırın.
Yani Konfigürasyon işimiz bitti. Bu konfigürasyona tüm projelerimiz için sahip olabiliriz. Ancak ilgileniyorsanız, onlarla daha sonra uğraşabilirsiniz.
PIC'in LED'i Yanıp Sönmesi için Programlanması:
Bu programda, bir I / O pinine bağlı bir LED'i yakmak için PIC mikrodenetleyicimizi kullanacağız. PIC16F877A ürünümüzde bulunan farklı I / O pinlerine bir göz atalım.
Yukarıda gösterildiği gibi PIC16F877, 5 temel giriş / çıkış bağlantı noktasına sahiptir. Genellikle PORT A (RA), PORT B (RB), PORT C (RC), PORT D (RD) ve PORT E (RE) ile gösterilirler. Bu bağlantı noktaları, giriş / çıkış arabirimi için kullanılır. Bu denetleyicide, "PORT A" yalnızca 6 bit genişliğindedir (RA-0 ila RA-5), "PORT B", "PORT C", "PORT D" yalnızca 8 bit genişliğindedir (RB-0 ila RB-7, RC-0'dan RC-7'ye, RD-0'dan RD-7'ye), ”PORT E” sadece 3 bit genişliğe sahiptir (RE-0'dan RE-2'ye).
Tüm bu bağlantı noktaları çift yönlüdür. Portun yönü, TRIS (X) kayıtları kullanılarak kontrol edilir (PORT-A'nın yönünü ayarlamak için kullanılan TRIS A, PORT-B'nin yönünü ayarlamak için kullanılan TRIS B, vb.). Bir TRIS (X) biti '1' ayarlandığında, karşılık gelen PORT (X) biti giriş olarak ayarlanır. Bir TRIS (X) bitini '0' temizlemek karşılık gelen PORT (X) bitini çıkış olarak ayarlayacaktır.
Projemiz için, LED'imizin bağlanabilmesi için PORT B'nin RB3 pinini çıkış olarak yapmalıyız. İşte LED PIC mikrodenetleyici ile yanıp için kod:
#Dahil etmek
Öncelikle #define _XTAL_FREQ 20000000 kullanarak harici Crystal frekansını belirledik. Sonra void main () fonksiyonunda, MCU'muza RB3'ü bir çıkış (TRISB = 0X00;) pin olarak kullanacağımızı bildirdik . Son olarak, LED'in yanıp sönmesinin sonsuza kadar yanması için sonsuz bir while döngüsü kullanılır. Bir LED'i yakıp söndürmek için onu fark edilir bir gecikmeyle AÇIK ve KAPALI konuma getirmemiz gerekir.
Kodlama tamamlandığında, Çalıştır -> Ana Proje Oluştur komutunu kullanarak Projeyi oluşturun. Bu, programınızı derlemelidir. Her şey yolundaysa (Olması gerektiği gibi) ekranın altındaki bir çıkış Konsolu, aşağıdaki resimde gösterildiği gibi YAPILANDIRMA BAŞARILI mesajını gösterecektir.
Devre Şeması ve Proteus Simülasyonu:
Bir Proje oluşturduktan sonra ve Oluşturma başarılı olursa, IDE'mizin arka planında bir HEX dosyası oluşturulur. Bu HEX dosyası aşağıdaki dizinde bulunabilir
Başka bir yere kaydetmişseniz, sizin için değişebilir.
Şimdi daha önce kurduğumuz Proteus'u hızlıca açalım ve bu proje için şemalar oluşturalım. Bu proje kapsamı dışında olduğu için bunu nasıl yapacağımızı açıklamayacağız. Ancak merak etmeyin, aşağıdaki videoda açıklanmıştır. Talimatı uyguladıktan ve şemaları oluşturduğunuzda, bunun gibi bir şeye benzemelidir.
Çıktıyı simüle etmek için, Hex dosyasını yükledikten sonra ekranın sol alt köşesindeki oynat düğmesine tıklayın. MCU’nun RB3’üne bağlı LED’i yanıp sönmelidir. Herhangi bir sorununuz varsa lütfen videoyu izleyin, hala çözülmediyse yardım için yorum bölümünü kullanın.
Şimdi ilk projemizi PIC mikro denetleyici ile yaptık ve simülasyon yazılımı kullanarak çıktıyı doğruladık. Programa gidin ve ince ayar yapın ve sonuçları gözlemleyin. Bir sonraki projemizde buluşana kadar.
Ohh bekle !!
Bir sonraki projemizde, bunu gerçek bir donanım üzerinde nasıl çalıştıracağımızı öğreneceğiz. Bunun için aşağıdaki araçlara ihtiyacımız olacak. O zamana kadar MUTLU ÖĞRENME !!
- PicKit 3
- PIC16F877A IC
- 40 pinli IC tutucu
- Perf kurulu
- 20Mhz Kristal OSC
- Dişi ve Erkek Bergstick pimleri
- 33pf Kapasitör - 2Nos
- 680 ohm Direnç
- Her renkte LED
- Lehimleme kiti.