Top Banner
Mikroişlemciler Microchip PIC Öğr. Gör. M. Ozan AKI r1.1
34

Veri Yapıları ve Algoritmalar · 2016-02-22 · sayma gibi işlemler bu fonksiyon içerisinde yapılabilir. ... cismin kenarına koyacağımız bir sensör ile her turda 1-0 bilgisini

Mar 08, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Veri Yapıları ve Algoritmalar · 2016-02-22 · sayma gibi işlemler bu fonksiyon içerisinde yapılabilir. ... cismin kenarına koyacağımız bir sensör ile her turda 1-0 bilgisini

Mikroişlemciler

Microchip PIC

Öğr. Gör. M. Ozan AKI

r1.1

Page 2: Veri Yapıları ve Algoritmalar · 2016-02-22 · sayma gibi işlemler bu fonksiyon içerisinde yapılabilir. ... cismin kenarına koyacağımız bir sensör ile her turda 1-0 bilgisini

Microchip PIC Mikrodenetleyiciler

www.microchip.com

Page 3: Veri Yapıları ve Algoritmalar · 2016-02-22 · sayma gibi işlemler bu fonksiyon içerisinde yapılabilir. ... cismin kenarına koyacağımız bir sensör ile her turda 1-0 bilgisini

Microchip PIC Mikrodenetleyiciler

Page 4: Veri Yapıları ve Algoritmalar · 2016-02-22 · sayma gibi işlemler bu fonksiyon içerisinde yapılabilir. ... cismin kenarına koyacağımız bir sensör ile her turda 1-0 bilgisini

Microchip PIC Mikrodenetleyiciler

Page 5: Veri Yapıları ve Algoritmalar · 2016-02-22 · sayma gibi işlemler bu fonksiyon içerisinde yapılabilir. ... cismin kenarına koyacağımız bir sensör ile her turda 1-0 bilgisini

Microchip PIC Mikrodenetleyiciler

Page 6: Veri Yapıları ve Algoritmalar · 2016-02-22 · sayma gibi işlemler bu fonksiyon içerisinde yapılabilir. ... cismin kenarına koyacağımız bir sensör ile her turda 1-0 bilgisini

Microchip PIC Mikrodenetleyiciler

Page 7: Veri Yapıları ve Algoritmalar · 2016-02-22 · sayma gibi işlemler bu fonksiyon içerisinde yapılabilir. ... cismin kenarına koyacağımız bir sensör ile her turda 1-0 bilgisini

Microchip PIC Mikrodenetleyiciler

Page 8: Veri Yapıları ve Algoritmalar · 2016-02-22 · sayma gibi işlemler bu fonksiyon içerisinde yapılabilir. ... cismin kenarına koyacağımız bir sensör ile her turda 1-0 bilgisini

Microchip PIC Mikrodenetleyiciler

Page 9: Veri Yapıları ve Algoritmalar · 2016-02-22 · sayma gibi işlemler bu fonksiyon içerisinde yapılabilir. ... cismin kenarına koyacağımız bir sensör ile her turda 1-0 bilgisini

Microchip PIC Mikrodenetleyiciler

Page 10: Veri Yapıları ve Algoritmalar · 2016-02-22 · sayma gibi işlemler bu fonksiyon içerisinde yapılabilir. ... cismin kenarına koyacağımız bir sensör ile her turda 1-0 bilgisini

Microchip PIC Mikrodenetleyiciler

Page 11: Veri Yapıları ve Algoritmalar · 2016-02-22 · sayma gibi işlemler bu fonksiyon içerisinde yapılabilir. ... cismin kenarına koyacağımız bir sensör ile her turda 1-0 bilgisini

Microchip PIC Mikrodenetleyiciler

Page 12: Veri Yapıları ve Algoritmalar · 2016-02-22 · sayma gibi işlemler bu fonksiyon içerisinde yapılabilir. ... cismin kenarına koyacağımız bir sensör ile her turda 1-0 bilgisini

Microchip PIC Mikrodenetleyiciler

Page 13: Veri Yapıları ve Algoritmalar · 2016-02-22 · sayma gibi işlemler bu fonksiyon içerisinde yapılabilir. ... cismin kenarına koyacağımız bir sensör ile her turda 1-0 bilgisini

Microchip PIC Mikrodenetleyiciler

Page 14: Veri Yapıları ve Algoritmalar · 2016-02-22 · sayma gibi işlemler bu fonksiyon içerisinde yapılabilir. ... cismin kenarına koyacağımız bir sensör ile her turda 1-0 bilgisini

Microchip PIC Mikrodenetleyiciler

Page 15: Veri Yapıları ve Algoritmalar · 2016-02-22 · sayma gibi işlemler bu fonksiyon içerisinde yapılabilir. ... cismin kenarına koyacağımız bir sensör ile her turda 1-0 bilgisini
Page 16: Veri Yapıları ve Algoritmalar · 2016-02-22 · sayma gibi işlemler bu fonksiyon içerisinde yapılabilir. ... cismin kenarına koyacağımız bir sensör ile her turda 1-0 bilgisini

Gömülü Yazılım Geliştirme

•PIC Mikrodenetleyiciler için yazılım geliştirme araçları ücretiz olarak üreticisi olan www.microchip.com adresinden indirilebilir. (MPLAB IDE ve CX8 derleyici)

•Ancak üçüncü parti üreticilerde benzer geliştirme araçları vardır. Genellikle ücretlidirler. (CCS PIC, MicroC, HI-TECH v.s.)

•Denemeleri yapabilmek için şunlardan biri gereklidir;•Bilgisayarda sanal ortamda denemek için simülatör,•Gerçek bir fiziksel devre

Page 17: Veri Yapıları ve Algoritmalar · 2016-02-22 · sayma gibi işlemler bu fonksiyon içerisinde yapılabilir. ... cismin kenarına koyacağımız bir sensör ile her turda 1-0 bilgisini

Gömülü Yazılım Geliştirme

Yazılım geliştirme işleminin aşamaları şunlardır;•Problemin tanımlanması ve sınırlarının çizilmesi•Çözümün üretilmesi ve tasarlanması

•Giriş – Çıkış bağlantı ve sayılarının belirlenmesi•ADC, PWM, CAPTURE, TIMER, COUNTER gibi kullanılacak özel donanımların belirlenmesi•Kullanılacak mikrodenetleyicinin seçilmesi•Devre şemalarının çıkarılması ve prototip imalatı•Yazılımın geliştirilmesi•Prototip üzerinde deneme•Donanımsal ve yazılım hatalarının düzeltilmesi

Page 18: Veri Yapıları ve Algoritmalar · 2016-02-22 · sayma gibi işlemler bu fonksiyon içerisinde yapılabilir. ... cismin kenarına koyacağımız bir sensör ile her turda 1-0 bilgisini

Gömülü Yazılım Geliştirme

Mikrodenetleyici Yazılımının Temel Yapısı•Bir mikrodenetleyici temel olarak iki bölümden oluşur;

•Initialization, setup, mikrodenetleyiciyi çalışmaya hazırlama. Bu kısım, mikrodenetleyiciye ilk enerji verildiğinde ya da resetlendiğinde sadece bir kez çalışır ve donanımsal ayarlamaları yapar. •Main Loop, Infinity Loop, Ana döngü, Sonsuz döngü, mikrodenetleyici çalıştığı sürece çalışacak olan kodun olduğu kısımdır.

!!! Mikrodenetleyicilerde, programın sonlanması söz konusu değildir. Mikrodenetleyici çalıştığı sürece ana döngüde dönmelidir ve bu şekilde tasarlanmalıdır.

Page 19: Veri Yapıları ve Algoritmalar · 2016-02-22 · sayma gibi işlemler bu fonksiyon içerisinde yapılabilir. ... cismin kenarına koyacağımız bir sensör ile her turda 1-0 bilgisini

Mikrodenetleyici Çevrebirimleri

•Port•Interrupt•Timer•ADC (Analog to Digital Converter)•DAC (Digital to Analog Converter)•PWM (Pulse Width Modulation)•I2C (Inter-Integrated Circuit)•SPI (Serial Peripheral Interface)•USB (Universal Serial Bus)

Page 20: Veri Yapıları ve Algoritmalar · 2016-02-22 · sayma gibi işlemler bu fonksiyon içerisinde yapılabilir. ... cismin kenarına koyacağımız bir sensör ile her turda 1-0 bilgisini

InterruptPIC Mikrodenetleyicilerinde sadece bir Interrupt (Kesme) vektörü bulunmasına karşın birçok Interrupt kaynağı vardır. Bunlardan en çok kullanılanları şunlardır;

•TMR0 Interrupt: Ayarlanan zaman aralıklarında interrupt fonksiyonu çağırılır. Display sürme, buton okuma, zaman sayma gibi işlemler bu fonksiyon içerisinde yapılabilir.

•INT Interrupt: RB0 pini, ayarlanan lojik seviyeye geçiş yaptığında interrupt fonksiyonu çağırılır

•PORTB Interrupt: PORTB nin üst 4 bitinden herhangi birinin (RB4,RB5,RB6,RB7) lojik seviyesi değiştiğinde interrupt fonksiyonu çağırılır.

Page 21: Veri Yapıları ve Algoritmalar · 2016-02-22 · sayma gibi işlemler bu fonksiyon içerisinde yapılabilir. ... cismin kenarına koyacağımız bir sensör ile her turda 1-0 bilgisini

TMR0 InterruptTMR0 Kesmesi, 8 bitlik bir kaydedici olan TIMER0 kaydedicisinin taşması (255 -> 0) sonucu meydana gelir.

TIMER0 kaydedicisi, kristal frekansına bağlı olarak sürekli bir şekilde artması ya da RB4 pin girişinden gelen kare dalgaları sayması sağlanabilir.

Kristaller, tam olarak üzerinde yazan frekansta osilasyon sağlayan elektronik devre elemanlarıdır. Bu nedenle tüm saat devrelerinde de kullanılır. Eğer TIMER0 kaydedicisi kristal frekansına bağlanırsa, bu kesinlikte bir Interrupt elde edilecektir.

Page 22: Veri Yapıları ve Algoritmalar · 2016-02-22 · sayma gibi işlemler bu fonksiyon içerisinde yapılabilir. ... cismin kenarına koyacağımız bir sensör ile her turda 1-0 bilgisini

TMR0 InterruptTMR0 kesmesini kullanmak için 2 register ayarlanmalıdır

Page 23: Veri Yapıları ve Algoritmalar · 2016-02-22 · sayma gibi işlemler bu fonksiyon içerisinde yapılabilir. ... cismin kenarına koyacağımız bir sensör ile her turda 1-0 bilgisini

TMR0 InterruptOPTION_REG kaydedicisinde;•TMR0 saat frekans kaynağı ve önbölen (prescalar) değerleri seçilir.•PIC, dışarıdan devresine bağlı olan kristal frekansının ¼ zamanında çalışır. O halde T=1/F formülünden birim çevrim (cycle) zamanını bulabiliriz. (4Mhz -> 1MHz -> 1uS)

•Örneğin, yaklaşık her 1 milisaniyede bir Interrupt çağırılmasını istiyorsak; •TIMER0 kaydedicisi 8 bit olup her 255 sayısında bir taşma meydana gelir. •hiç bölen kullanmazsak, 255 mikrosaniyede bir kesme çağırılır. • önbölen değerini 4 olarak ayarlarsak, 255 x 4 = 1020 mikrosaniye, yani yaklaşık 1 milisaniyede bir kesme çağırılır.

Page 24: Veri Yapıları ve Algoritmalar · 2016-02-22 · sayma gibi işlemler bu fonksiyon içerisinde yapılabilir. ... cismin kenarına koyacağımız bir sensör ile her turda 1-0 bilgisini

TMR0 InterruptTMR0 kesmesini kullanmak için 2 register ayarlanmalıdır

Page 25: Veri Yapıları ve Algoritmalar · 2016-02-22 · sayma gibi işlemler bu fonksiyon içerisinde yapılabilir. ... cismin kenarına koyacağımız bir sensör ile her turda 1-0 bilgisini

TMR0 InterruptINTCON kaydedicisi, tüm kesme işemleri için toplu bir kontrol kaydedicisidir. TMR0 kesmesini devreye almak için, •GIE (Global Interrupt Enable), 1 yapılmalıdır,•T0IE (Timer 0 Interrupt Enable), 1 yapılmalıdır•T0IF biti ise, interrupt fonksiyonu çağırıldığında, hangi interruptların oluştuğunu kontrol etmek amacıyla kullanılır. T0IF biti 1 olmuş ise, demekki TMR0 interruptu oluşmuş anlamına gelir.

Page 26: Veri Yapıları ve Algoritmalar · 2016-02-22 · sayma gibi işlemler bu fonksiyon içerisinde yapılabilir. ... cismin kenarına koyacağımız bir sensör ile her turda 1-0 bilgisini

INT InterruptINT kesmesi, RB0 pini okuma pini yapıldığında, dışarıdan gelen bir lojik sinyal 0’dan 1’e çıktığında ya da 1’den 0’a düştüğünde meydana gelen bir kesmedir. Sadece yükselen ya da düşen kenarlarda meydana gelir.

Örneğin, dönen bir cismin devrini ölçme istiyorsak, bu cismin kenarına koyacağımız bir sensör ile her turda 1-0 bilgisini okuyup, arada geçen süreyi ölçerek devir hızılı bulabiliriz.

Page 27: Veri Yapıları ve Algoritmalar · 2016-02-22 · sayma gibi işlemler bu fonksiyon içerisinde yapılabilir. ... cismin kenarına koyacağımız bir sensör ile her turda 1-0 bilgisini

INT InterruptBu kesmeyi kullanmak için sadece INTCON kaydedicisini ayarlamak yeterlidir.

Öncelikle INTCON kaydedicisinin 7. biti olan GIE (Global Interrupt Enable) biti 1 yapılır.

INTCON kaydedicisinin 4. biti olan INTE biti 1 yapılarak bu kesme devreye sokulur.

Daha sonra 1. bit olan INTF bitinden ise, interrupt fonksiyonu çağırıldığında bu kesmenin oluşup oluşmadığı kontrol edilir.

Page 28: Veri Yapıları ve Algoritmalar · 2016-02-22 · sayma gibi işlemler bu fonksiyon içerisinde yapılabilir. ... cismin kenarına koyacağımız bir sensör ile her turda 1-0 bilgisini

Buton ve Mekanik siviç okumakMikrodenetleyicinin dış dünyadan okuduğu bilgilerin en çok kullanılanı buton, siviç ve sensör bilgileridir.

Ancak bunlardan buton ve siviçler, mekanik temas yoluyla çalışan mekanizmalar olduğundan, basma ve bırakma sırasında parazitler meydana gelir.

Page 29: Veri Yapıları ve Algoritmalar · 2016-02-22 · sayma gibi işlemler bu fonksiyon içerisinde yapılabilir. ... cismin kenarına koyacağımız bir sensör ile her turda 1-0 bilgisini

Buton ve Mekanik siviç okumakBu parazitler (teknik olarak gürültü olarak isimlendirilir), mikrodenetleyicinin hatalı okuma yapmasına ve butona bir kez basmada sanki birden çok kez basılmış gibi işlem yapmasına neden olur.

Bunu engellemek için mikrodenetleyicilerde “DEBOUNCE” adı verilen yazılımsal bir filtre kullanılır.

Bu filtre, mikrodenetleyicinin ancak buton ancak belirli bir süre boyunca kararlı bir şekilde basılı kaldıysa işlem yapmasını sağlar.

Page 30: Veri Yapıları ve Algoritmalar · 2016-02-22 · sayma gibi işlemler bu fonksiyon içerisinde yapılabilir. ... cismin kenarına koyacağımız bir sensör ile her turda 1-0 bilgisini

7 Segment DisplaySadece sayısal gösterim yapan birçok cihazda düşük maliyeti ve basit tasarımı nedeniyle 7 segment display (7 parçalı gösterge) tercih edilmektedir.

Yapısı basit olarak, her bir rakamı kolayca oluşturacak şekilde dizilmiş çubuk parçaları şeklinde ışık veren 7 adet LED ten oluşur.

Her bir rakam için belirli segmentler (parçalar) yakılarak rakamlar oluşturulur.

Devreyle bağlantı için 7 bağlantıya ihtiyacı vardır. Bunun dışında, LEDlerin diğer uçları ise birleştirilerek dışarıya ortak uç olarak çıkartılmıştır.

Page 31: Veri Yapıları ve Algoritmalar · 2016-02-22 · sayma gibi işlemler bu fonksiyon içerisinde yapılabilir. ... cismin kenarına koyacağımız bir sensör ile her turda 1-0 bilgisini

7 Segment Display

Page 32: Veri Yapıları ve Algoritmalar · 2016-02-22 · sayma gibi işlemler bu fonksiyon içerisinde yapılabilir. ... cismin kenarına koyacağımız bir sensör ile her turda 1-0 bilgisini

7 Segment DisplayLEDlerin hangi uçlarının dışarıya ortak olarak çıkarıldığına bağlı olarak içi türde üretilirler.

•Ortak Katot: Segmentleri oluşturan LEDlerin tümünün Katot uçları birleştirilerek dışarıya çıkarılmıştır. Ortak ucu şaseye (-) bağlanır ve hangi LED (segment) yakılmak isteniyorsa o LEDin diğer (Anot) ucuna (+) gerilim verilir. En çok kullanılan çeşididir.

•Ortak Anot: Segmentleri oluşturan LEDlerin tümünün Anot uçları birleştirilerek dışarıya çıkarılmıştır. Ortak ucu artıya (+) bağlanır ve hangi LED (segment) yakılmak isteniyorsa o LEDin diğer (Katot) ucu şaseye bağlanır.

•Her dijit ancak ve ancak sadece bir sayı basamağını temsil ettiğinden dolayı, cihazda en çok kaç basamaklı sayı gösterilecek ise o kadar dijit kullanılmalıdır.

Page 33: Veri Yapıları ve Algoritmalar · 2016-02-22 · sayma gibi işlemler bu fonksiyon içerisinde yapılabilir. ... cismin kenarına koyacağımız bir sensör ile her turda 1-0 bilgisini

LCD GöstergelerEğer cihaz, sadece sayılardan başka kullanıcıya yazıyla da bildirimde yapması gerekiyorsa, ASCII tablosundaki karakterleri destekleyen Text LCD ekranlar kullanılır.

Bunlar, mikrodenetleyici ile 11 ya da 7 bağlantı üzrerinden haberleşir.

İsimlendirilmelerinde satır sayısı x karakter sayısı kullanılır.1x8, 2x8, 1x16, 2x16, 4x20 gibi çeşitli seçeneklerde üretilirler.

Page 34: Veri Yapıları ve Algoritmalar · 2016-02-22 · sayma gibi işlemler bu fonksiyon içerisinde yapılabilir. ... cismin kenarına koyacağımız bir sensör ile her turda 1-0 bilgisini

LCD GöstergelerLCD datasheet kataloğunda, devreye bağlantısı ve haberleşme ile ilgili tüm bilgileri bulabilirsiniz.

Haberleşme fonksiyonlarını tamamen kendiniz yazabileceğiniz gibi, daha önceden yazılmış hazır bir kütüphane de kullanabilirsiniz.

Kütüphaneleri özelleştirirken, kendi devrenizin bağlantılarına göre kütüphane üzerinde değişiklikler yapmanız gerekecektir.

Text LCD göstergelerin yaznında birde Grafik LCD göstergeler vardır. Bunlar çok daha fazla işlemci gücü ve hafıza gerektirdiği için genellikle daha güçlü mikrodenetleyicilere sahip projelerde kullanılabilir.