Sıfırdan PIC ve PIC16 İle LED Yakma
Daha önceki yazımız da PIC hakkında bilgiler vermiştik, şimdi bu yazı dizimide PIC16 serisi ile LED yakma işlemi yapıyoruz. Kodumuzu compile etmek için “MPAB XC8 Compiler” şema oluşturmak için ise “MPLAB X IDE” programını kullanacağız, bu program Microchip tarafından geliştiricilere Windows, Linux ve Mac için sunulmuş çok fonksiyonlu bir compiling/IDE programıdır. İki programın da çalışması için Java ‘nın bilgisayarınızda kurulu olması gerekiyor, projede PIC16 serisinden 16F877A kullanıldı, ilk adımlara geçelim;
Hazırlık Bölümü
MPLAB X IDE yi açarak başlıyoruz.
File >> New Project ile devam ediyoruz.
- Microchip Embedded >> Standalone Project ‘I seçip “Next” ile devam ediyoruz…
- Family ve Device bölümünü elimizdeki PIC yongasına göre seçiyoruz.
- Buradan Programmerımızı seçiyoruz, eğer desteklenmiyor ise proje bitince tekrardan “burn” yükleme şansımız olucak.
· Buradan Compiler XC8 seçip devam ediyoruz…
- Projemizin; isim, konum gibi bilgilerini dolduruyoruz.
- Project Tree ‘den Source Files e sağ tıklıyoruz.
- New >> C Main File yi seçip devam ediyoruz.
- Tekrardan isim ve konum belirliyoruz
- Gelen .c dosyasına kodlarımızı yazacağız.
Kodlama Bölümü
PIC mikroişlemcilerinin I/O pinleri farklı gruplara bölünmüştür, 16F877A, 8 bitlik bir mikroişlemci ,bu yüzden her PORT 8 I/O içermiş oluyor ve bu PORTlar iki register ile ilişkilendiriliyor bunlardan biri TRIS ve diğeri PORT (TRISB, PORTB, TRISD, PORTD).Kullandığımız “PIC 16F877A” 5V ile çalışan bir mikroişlemci, bu yüzden VDD çıkışı 5V ve VSS çıkışı 0V tur.
TRIS Register Nedir?
TRIS Tri-State etkinlikler için kullanılır, buda her GPIO pinin değerini belirler, Logic 1 durumunda TRIS kayıdı pini INPUT, Logic 0 durumunda TRIS kayıdı pini OUTPUT yapar, ayrıca bütün Input pinleri Hi-Impedance yani yüksek empedans durumunda bekler.
PORT Register Nedir?
PORT kayıdı ise pinden veri okuma yada veri yazmak için kullanılır, OUTPUT Pin yani TRIS Bit “0” iken, PORT Logic 1 olur, bu sayede kayıt o pini Logic High (VDD) yapar ve Logic 0 iken PORT aynı pini Logic Low (VSS) yapar. PORT okuma işlemi yaparken ilgili pinin voltaj değerini bakar eğer potansiyel olarak VDD’ye yakın ise, PORT biti Logic 1 olur eğer potansiyel olarak VSS’ye yakın ise PORT biti Logic 0 olur.
Registerları Kod İçerisinde Tanımlama
PORT ve TRIS registerlarını ister pin başına ister hepsini bir kerede tanımlayabiliriz.
Bit ile Tanımlama
TRISC0 = 1; // PORTC Inputun 0. biti
TRISC5 = 0; // PORTC Outputun 5. biti
RB3 = 1; // PORTB at Logic High 3. biti
RB7 = 0; // PORTB at Logic Low 7. biti
Tüm Registerı Tanımlama
‘0b’ önekli numaralar binary(ikili) sayıdır.
‘0’ önekli numaralar octal(sekizli) sayıdır.
‘0x’ önekli numaralar hexadecimal(onaltılık) sayıdır.
öneksiz numaralar ise decimal(ondalık) sayıdır.
Bu tablo ile daha mantıklı gelebilir;
PORTB = 0xFF; //PORTB nin tüm pinlerini Logic High yapar
TRISC = 0x00; //TRISC pinlerini Output yapar.
PORTD = 128; //PORTD’nin 7. bitini Logic High yapar.
Kodumuz
#define _XTAL_FREQ 8000000 #include // CONFIG AYARI - BU DERLEMEDEKI PIN AYARLAMAYI BİRAZ AŞAĞIDA ANLATTIM BUNUN YANINDA MID-RANGE OLARAK BIR POST PAYLASTIK #pragma config FOSC = HS // HS osilatörü #pragma config WDTE = ON // Watchdog WDT zamanlayıcısını açma #pragma config PWRTE = OFF // Power-up PWRT kapatma #pragma config BOREN = ON // Brown-out BOR açma #pragma config LVP = OFF // Düşük voltajlarda kapalı tutuyoruz #pragma config CPD = OFF // EEPROM yazma korumasını kapatıyoruz #pragma config WRT = OFF // FLASH Bellek korumasını kapıyoruz #pragma config CP = OFF // Kod korumasını kapatıyoruz int main() { TRISB0 = 0; //RB0 OUTPUT olarak tanımladık while(1) { RB0 = 1; // LED AÇIK __delay_ms(1000); RB0 = 0; // LED KAPALI __delay_ms(1000); } return 0; }
_XTAL_FREQ ile saat hızımızı ayarladık ve xc.h ilede __delay_ms() satırını tanımlı kıldık.
Config Bölümündeki Bit Ayarları
“CONFIG AYARI” Kısmındaki pinleri buradan ayarlıyoruz .MPLAB IDE ile mikroişlemcimize bit mid-range ayarlarını yapıyoruz. Daha detaylı anlamak ve pin-bit anlamları için buradaki yazımızı inceleyin
Window >> PIC Memory Views >> Configuration Bits
- Generate Source Code to Output butonuna basıyoruz.
Mid-Range Bit ayarını oluşturduktan sonra doğrudan kodumuza yapıştırıyoruz ve projemizi “BUILD” ediyoruz.
Run Project ile kodumuzu hazırlayıp doğrudan PICe yazdırıyoruz
Arzu edersek sonradan yazmak için yada aktarmak için Build Project ile sadece .hex dosyasını oluşturuyoruz. .hex dosyası en başta belirttiğimiz klasörün içindedir
Devre Şeması
Bu yazı dizimizin de sonuna geldik, yorumlarınızı ve sorularınız bildirmekten çekinmeyin!
Yorum yapma özelliği, forum tarafından gelen istek sebebiyle kapatılmıştır. Lütfen tartışmalar ve sorularınız için topluluk forumumuza katılın.