Komut seti indirgenmiş işlemci mimarisi • MIPS (Mega Instruction Per Second) – Bir işlemcinin 1 saniyede işlediği komut sayısını milyon cinsinden gösteren birim. • 1 MIPS = 1 milyon komut/saniye • 8-bit işlemci ailesinden olan 16F serisi 5 MIPS’lik işlem kapasitesine sahiptir. Yine 8-bitlik 18F serisi ise 10 MIPS’lik işlem kapasitesindedir.
yazılabilen bellek türü • ROM (Read Only Memory) – Sadece okunabilen bellek türü • EEPROM (Electrically Erasable Programmable Read Only Memory) – Elektriksel olarak silinebilen programlanabilir ROM
anlamları: Flash Denetleyici •Defalarca programlanabilir F OTP (One Time Programmable) •Bir kez programlanabilir C Low Voltage •Düşük voltajlarda da çalışabilir L
PIC’lerde ise PORTA[i], PORTB[i] şeklinde adlandırılan, donanımlardan bilgi girişi yada donanımlara bilgi çıkışı sağlarlar. (i = 1,2 ...) • CCP (Capture Compare PWM) – PWM sinyalini oluşturmak, karşılaştırmak veya ölçmek amaçıyla kullanılan port türüdür.
sinyalini PIC türünün hassasiyeti oranında (8 bit, 10 bit gibi) dijital değerlere çeviren port türüdür. • 10 bit’lik ADC en fazla 210 = 1024 değer ile bir analog sinyali örnekleyebilir, bu özelliğine ADC’nin çözünürlüğü denir. • Karşılaştırıcı – İki analog voltaj sinyalini karşılaştırıp durumlarına göre çıkış elde edilmek üzere kullanılan port türüdür.
arabirimi az sayıda port ile sağlanan bir seri iletişim modülüdür. • Verilen 8 bit uzunluğunda senkronize olarak alınır ve gönderilir. Bazı PIC’ler tarafından desteklenir. • I2C (Inter Integrated Circuit) – Veri alma ve gönderme hızının önemli olmadığı, – Kullanılacak port sayısının önemli olduğu durumlarda kullanılan seri haberleşme protokolüdür.
gereksinimi olmadan PIC ve diğer donanımlar arasında haberleşmeyi sağlar. – Özellikle otomotiv uygulamaları için geliştirilmiştir. • USART (Universal Synchoronous Asynchoronous Receiver-Transmitter) – Verileri paralel ya da seri biçimde aktarmak için kullanılan modüldür.
ve bitiminde başa döner – En fazla değerlerinde kesme oluşturabilirler. • Timer0 → 8 bit; 28 = 256; [0,255] • Timer1 → 16 bit; 216 = 65536; [0,65535] • Watch Dog Timer – PIC programının istenmeyen bir şekilde kilitlenmesini durumunda programı sıfırlamak üzere kullanılır.
çalışan programı durdurup ilgili kesme fonksiyonunun çalıştırmasıdır. – Öncelikli fonksiyonlardır. – PIC modeline göre kesme türleri ve sayısı değişiklik gösterir.
PIC Derleyici SDCC PIC16 ve PIC18 ailesi için C derleyici JAL PIC için Pascal benzeri derleyicisi Ücretli Devre tasarım ve simülasyon Proteus MultiSim PIC Derleyici CCS-C MPLAB
Standart C dili özelliklerini, CCS-C tarafından hazırlanmış dahili kütüphaneleri ve hazır kodları içerir. IDE (Integrated Development Environment) Program yazma Derleme Hata ayıklama
ürününü desteklemektedir. – www.ccsinfo.com/devices.php?page=devices • Farklı OPCODE uzunluğundaki işlemler için farklı derleyiciler bulunur. – OPeration CODE; gerçekleştirilecek işlemleri belirten makine dili komut parçalarıdır.
sonları ve kontrol yapıları haricinde her satır sonu “;” ile bitirilmelidir. • Program içinde “//” ile başlayan yazılar ve “/* */” karakterleri arasında yazılan her şey derleyici tarafından açıklama olarak algılanır.
edilmelidir; – int değişken; // yanlış kullanım – int degisken; – int 0degisken; // yanlış kullanım – int degisken0; • Değişken isimlerinde Türkçe karakter bulunmamalıdır. • Harf yada “_” ile başlamalıdır.
bırakılmamalıdır. • C dilinin anahtar kelimeleri; if, while, else, for değiştirilerek kullanılabilir. Örneğin if1, _for • CCS-C derleyicisi ön tanımlı olarak büyük küçük harf ayrımında bulunmaz.
• Önceliği aynı olan işlemlerde, soldaki işlem uygulanır. – int sonuc = a+b/c*d; // b, c’ye bölünür, d ile çarpılıp a ile toplanır. Parantez içerisi Çarpma Bölme Toplama Çıkarma
oluşturduğu veri bütünüdür. – <tür> <isim> [<boyut>]; – int sayi[5] = {1,2,3,4,5}; – char bilgi[3] = {‘d’,’e’,’u’}; – char bilgi[] = {“deu”}; • Dizi indisleri 0 dan başlar. • Boyut verilmezse, dizinin eleman sayısına göre otomatik olarak ayarlanır. Veri gösterimi Açıklama 25 Ondalıklı sayı 031 Sekizlik sayı 0x19 Onaltılık sayı 0b00011001 İkilik sayı ‘t’ Karakter ifade
Çıkarma * Çarpma / Bölme % Modül > Büyük < Küçük <= Küçük eşit >= Büyük eşit == Eşit Operatör Açıklama != Eşit değil && Mantıksal Ve || Mantıksal Veya ! Mantıksal Değil ~ Değil (bit tabanında) << Sola öteleme (bit tabanında) >> Sağa öteleme (bit tabanında) & Ve (bit tabanında) ^ Özel Veya (bit tabanında) | Veya (bit tabanında)
– x = 0b11010010; y = 0b10011001 (153) – x & y = 0b10010000 – x | y = 0b11011011 – x ^ y = 0b01001011 (karşılıklı değerler aynı ise 0, değilse 1 ) – x << 2 = 0b01001000 (soldan bit kaybeder) – y >> 1 = 0b01001100 (sağdan bit kaybeder) (76) • Sağa kaydırmak, sayıyı 2n’e bölmek demektir.
yapısının işlemi gerçekleşir. • Hiç bir koşul sağlanmaz ise “else” işlemi gerçekleştirilir. if(<koşul>) { <işlem> } else if(<koşul>) { <işlem> } else { <işlem> }
adım adım kontrol eder, uyan durumun işleminin yapar. switch(<değer>) { case <durum>: <işlem> break; ... default: <işlem> break; } • Genelde çok fazla durum içermeyecek kontrol yapılarında terçih edilir. Örneğin menü kontrol kod bloğunda.
olduğu sürece işlemi gerçekleştirir. • “do – while” döngüsünde işlem en az bir kez gerçekleştirilir. while(<koşul>) { <işlem> } do { <işlem> } while(<koşul>);
“for” döngüsü içindeki işlem gerçekleştirilir. • Genelde sayma işlemlerinde çok kullanılır. for(<başlangıç değeri>;<koşul>;<artış miktarı>) { <işlem> }
– #priority ile kesmelerin önceliği belirlenebilir. Kesme fonksiyonu Açıklama #INT_RB, #INT_RC B yada C portunun 4-7 pinlerinde değişiklik olunca #INT_EXT[i] Dış kesme (i = 1,2, ...) #INT_TIMER[j] Zamanlayıcı (j = 0,1,2, ...) #INT_RDA RS232’den veri alınınca #INT_EEPROM EEPROM yazma işlemi bitince
gecikme sağlar. – instruction time = 4 / saat frekansı • 4MHz → IT = 4 / 4000000 = 0.000001 sn = 1 us • 20MHz → IT = 4 / 20000000 = 0.0000002 sn = 200 ns • #use_standart_io(<port>) : Program içinde pin’in durumu giriş olarak kullanıldıysa, pin giriş olur; çıkış olarak kullanıldıysa ise çıkış olucaktır. – Ön tanımlı olarak kullanılır. – Başka bir Giriş/Çıkış direktifine kadar geçerliliğini korur.
halidir. • #use_fast_io(<port>) : Mutlaka “tris” komutlarıyla port’a ait pinlerin Giriş/Çıkış ayarları yapılmalıdır. – Başka bir Giriş/Çıkış direktifine kadar geçerliliğini korur.
veya çıkış durumunu tanımlar. – set_tris_a(0x01); – set_tris_c(0b11110000); • get_tris_X() : ilgili porta ait “tris” bilgisi okunur. – portBilgi = get_tris_a();
kullanılır. – output_b(216); // İkilik sistemde 11011000 • output_bit(<pin>,<değer>) : ilgili pin’in değeri değiştirilebilir. – output_bit(pin_B1,0); // B portunun 1’inci pinin durumu giriş yapıldı.
okunup, 8 bitlik bir değişkene aktarılır. – int veri = input_a(); • input(<pin>) : istenilen pin’in durum bilgisini boolean ya da int1 olarak verir. – if(input(pin_B1)) { output_low(pin_A3) ; }
• bit_set(<değişken>,<bit>) : değişkenin istenilen bit değeri “1” olarak değiştirilir. – int a = 5; bit_set(a,1); – 5 = 0b00000101 → 0b00000111 = 7 • bit_clear(<değişken>,<bit>) : değişkenin istenilen bit değeri “0” olarak değiştirilir.
Değer 1 veya 0 olarak döndürülür. • swap(<değişken>) : değişkenin düşük dörtlü bitleriyle, yüksek dörtlü bitleri yer değiştirir. – int a=0b00110101 → swap(a) → 01010011 Yüksek Düşük
duyar. • Adaptörler ve diğer donanımlar genelde 9V- 12V arasında olduğundan, 7805 gibi regülatör elemanlarıyla besleme 5V’a sabitlenir. • Tüm devre elemanlarının toprakları ortak olmalıdır.
yapıldığında mikrodenetleyici çalışır. • “#fuse” direktifi ve “NOMCLR” komutu kullanılarak bu özellik devre dışı bırakılır. – İlgili pin giriş portu olarak kullanılabilir.
ve OSC2 pinlerine bağlı kristal tarafından yada dahili RC osilatör tarafından sağlanır. – #fuse direktifine INTRC kodu ile dahili osilatör kullanılabilir. – INTRC_IO kodu ile dahili osilatör kullanımı yanında osilatör için ayrılan pinler giriş/çıkış pinleri olarak kullanılabilir.
geçirildiğinde ışık veren devre elemanıdır. – İleri Akım (Forward Current) : Genelde 20 mA’dir. – İleri Voltaj (Forward Voltage) : Üzerinden geçen akıma göre üzerindeki ileri yönde gerilim düşüm miktarı – Ters Voltaj (Reverse Voltage) : Ters bağlandığında tölere edebileceği gerilim seviyesi
– RLED = (Vkaynak - VF ) / IF – Kaynak gerilimimiz PIC kullandığımız için genelde 5V’dur. Renk İleri Voltaj İleri Akım Kırmızı 2.0 V 30 mA Yeşil 2.2 V 25 mA Mavi 4.5 V 30 mA R mA x V V R kıırmız LED 100 10 30 2 5 ) ( 3
anahtarlama için kullanılan elektronik bir devre elemanıdır. – Az enerji tüketirler. Düşük gerilimde çalışabilirler. – Çok uzun çalışma ömürlerine sahiptirler.
çalışan elektriksel bir anahtardır. – Transistörler ile benzer görevleri olsada, üzerlerinden çok daha yüksek akım geçirebilirler ve direnç ile birlikte kullanımı zorunlu değildir. 1 – 2 bacakları besleme ve toprak olarak bağlanır. 3 – 4 bacakları kumanda edilecek devreye bağlanır.