EEM 306 Mikroişlemciler ve Lab. Doç.Dr. Mehmet SAĞBAŞ



Benzer belgeler
EEM 306 Mikroişlemciler ve Lab. Doç.Dr. Mehmet SAĞBAŞ

EEM 306 Mikroişlemciler ve Lab. Doç.Dr. Mehmet SAĞBAŞ

DERS 12 PIC 16F84 ile KESME (INTERRUPT) KULLANIMI İÇERİK

x86 Ailesi Mikroişlemciler ve Mikrobilgisayarlar

PIC16F877A nın Genel Özellikleri

Sayfa 2

MC6800. Veri yolu D3 A11. Adres yolu A7 A6 NMI HALT DBE +5V 1 2. adres onaltılık onluk bit 07FF kullanıcının program alanı

SAYI SİSTEMLERİ. 1. Sayı Sistemleri. Sayı Sistemlerinde Rakamlar

Emre EMANET ÖN SÖZ. Bu kitabın ülkemizdeki teknik insanlara yararlı olmasını diliyor, herkesin başarılı olmasını canı gönülden istiyorum.

DERS 5 PIC 16F84 PROGRAMLAMA İÇERİK. PIC 16F84 bacak bağlantıları PIC 16F84 bellek yapısı Program belleği RAM bellek Değişken kullanımı Komutlar

BM-311 Bilgisayar Mimarisi

Mikrobilgisayar Mimarisi ve Programlama

DERS 7 PIC 16F84 PROGRAMLAMA İÇERİK. PIC 16F84 örnek programlar Dallanma komutları Sonsuz döngü

BİLGİSAYAR MİMARİSİ. Bilgisayar Bileşenleri Ve Programların Yürütülmesi. Özer Çelik Matematik-Bilgisayar Bölümü

DERS 3 MİKROİŞLEMCİ SİSTEM MİMARİSİ. İçerik

Giris {\} /\ Suhap SAHIN

Mikroişlemcili Sistemler ve Laboratuvarı 6.Hafta

MIKRODENETLEYICILER. Ege Üniversitesi Ege MYO Mekatronik Programı

W SAYAC SAYAC SAYAC. SAYAC= ise, d=0 W

Bahar Dönemi. Öğr.Gör. Vedat MARTTİN

Komutların Yürütülmesi

PIC Mikrodenetleyicileri

DERS 13 PIC 16F84 ile DONANIM SAYICI KULLANIMI İÇERİK KESME

İLERI MIKRODENETLEYICILER. Ege Üniversitesi Ege MYO Mekatronik Programı

BÖLÜM 6 Seri Port Đşlemleri

Mikroişlemcili Sistemler ve Laboratuvarı

DENEY-5. SABANCI ATL ÖĞRETMENLERİNDEN YAVUZ AYDIN ve UMUT MAYETİN'E VERDİKLERİ DESTEK İÇİN TEŞEKKÜR EDİYORUZ

İÇİNDEKİLER ÖNSÖZ...3

D Duplex : Alıcı + Verici Çalışma Debouching : DMA : Direct Memory Access Data-Bus : Data Veri Yolu Data Flow : Veri Akışı Data Processing : Veri

Deney No Deney Adı Tarih. 3 Mikrodenetleyici Portlarının Giriş Olarak Kullanılması / /201...

Komut Seti Mimarisi (ISA)

Mikrobilgisayar Donanımı

LCD (Liquid Crystal Display )

MİKRODENETLEYİCİLER ÖRNEK PROGRAMLAR

Mikroişlemciler. Microchip PIC

Program Kontrol Komutları. Mikroişlemciler ve Mikrobilgisayarlar 1

BM-311 Bilgisayar Mimarisi

8051 Ailesi MCS51 ailesinin orijinal bir üyesidir ve bu ailenin çekirdeğini oluşturur çekirdeğinin temel özellikkleri aşağıda verilmiştir:

İÇİNDEKİLER 1. KLAVYE KLAVYE RB KLAVYE RBHIGH DİSPLAY... 31

Mikroişlemcili Sistemler ve Laboratuvarı

KOMUT TABLOSU İLE İLGİLİ AÇIKLAMALAR:

BÖLÜM 7 XTAL2 XTAL1. Vss. Şekil Mikrodenetleyicisi osilatör bağlantı şekli. Bir Makine Çevrimi = 12 Osilatör Periyodu

MSP430 Uyg.34 DS18B20 Sıcaklık Sensörü Uygulaması

Mikrobilgisayar Sistemleri ve Assembler

Embedded(Gömülü)Sistem Nedir?

Adresleme Modları. Mikroişlemciler ve Mikrobilgisayarlar

Quiz:8086 Mikroişlemcisi Mimarisi ve Emirleri

ENDÜSTRİYEL OTOMASYON TEKNOLOJİLERİ

Dr. Feza BUZLUCA İstanbul Teknik Üniversitesi Bilgisayar Mühendisliği Bölümü

8086 nın Bacak Bağlantısı ve İşlevleri. 8086, 16-bit veri yoluna (data bus) 8088 ise 8- bit veri yoluna sahip16-bit mikroişlemcilerdir.

KESME (INTERRUPT) NEDİR?

EEM 419-Mikroişlemciler Güz 2017

8051 Ailesi MCS51 ailesinin orijinal bir üyesidir ve bu ailenin çekirdeğini oluşturur çekirdeğinin temel özellikkleri aşağıda verilmiştir:

BM-311 Bilgisayar Mimarisi. Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü

Şekil. 64 Kelimelik Yığıtın Blok Şeması

7. Port Programlama. mikroc Dili ile Mikrodenetleyici Programlama Ders Notları -42- Şekil 2.1. Atmega16 mikrodenetleyici pin şeması

x86 Ailesi Mikroişlemciler ve Mikrobilgisayarlar

MİKROBİLGİSAYAR SİSTEMLERİ VE ASSEMBLER

Sistem Programlama. Kesmeler(Interrupts): Kesme mikro işlemcinin üzerinde çalıştığı koda ara vererek başka bir kodu çalıştırması işlemidir.

B.Ç. / E.B. MİKROİŞLEMCİLER

BÖLÜM 7 Kesmeler.

Hacettepe Robot Topluluğu

BÖLÜM Mikrodenetleyicisine Giriş

BÖLÜM 2 INTERRUPT ve TIMER İŞLEMLERİ

DERS 11 PIC 16F84 ile ALT PROGRAMLARIN ve ÇEVRİM TABLOLARININ KULLANIMI İÇERİK. Alt Program Çevrim Tabloları Program Sayıcı ( Program Counter PC )

İŞLETİM SİSTEMİ İşletim sistemi kullanıcıyla bilgisayar donanımı arasında iletişim sağlayan programdır.

Komut Seti Mimarisi (ISA)

İŞLEMCİ DURUM KAYDEDİCİSİ (PROCESSOR STATUS REGISTER)

BM-311 Bilgisayar Mimarisi

Ders 3 ADRESLEME MODLARI ve TEMEL KOMUTLAR

Komutların İşlem Süresi

Ders Özeti. Ders 2. PC nin İç Organizasyonu. Mikroişlemcinin Organizasyonu. Basitçe İşlemciyi Oluşturan Parçalar. Mikroişlemciler

Mikroişlemci: Merkezi işlem biriminin fonksiyonlarını tek bir yarı iletken tümleşik devrede birleştiren programlanabilir sayısal elektronik devre

Bit, Byte ve Integer. BIL-304: Bilgisayar Mimarisi. Dersi veren öğretim üyesi: Yrd. Doç. Dr. Fatih Gökçe

Mikroişlemciler ve Assembler Programlama. Teknoloji Fakültesi / Bilgisayar Mühendisliği Öğr.Gör. Günay TEMÜR

İSTANBUL TİCARET ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ MİKROİŞLEMCİLİ SİSTEM LABORATUVARI KESMELİ GİRİŞ/ÇIKIŞ

İLERI MIKRODENETLEYICILER. Ege Üniversitesi Ege MYO Mekatronik Programı

EEM 419-Mikroişlemciler Güz 2016

MİKROBİLGİSAYAR SİSTEMLERİ VE ASSEMBLER

Eğitim - Öğretim Yöntemleri Başlıca öğrenme faaliyetleri Kullanılan Araçlar Dinleme ve anlamlandırma

Mikroişlemciler ve Mikrodenetleyiciler

BÖLÜM 1: MİKRODENETLEYİCİLER

Merkezi İşlem Birimi MİKROİŞLEMCİ SİSTEMLERİ. MİB Yapısı. MİB Altbirimleri. Durum Kütüğü. Yardımcı Kütükler

MIKRODENETLEYICILER. Ege Üniversitesi Ege MYO Mekatronik Programı

Ad Soyad: Öğrenci No:

9. MERKEZİ İŞLEM BİRİM MODÜLÜ TASARIMI

BÖLÜM 3 CAPTURE/COMPARE/PWM ve TUŞ TAKIMI İŞLEMLERİ

BÖLÜM in Bellek Organizasyonu

SELÇUK ÜNĠVERSĠTESĠ MÜHENDĠSLĠK-MĠMARLIK FAKÜLTESĠ ELEKTRĠK-ELEKTRONĠK MÜHENDĠSLĠĞĠ BÖLÜMÜ LOJĠK DEVRE TASARIM DERS NOTLARI

BÖLÜM 3 3. PIC 16F8X KOMUTLARI 3.1.KULLANILAN SEMBOLLER: 3.2.KOMUTLAR VE KULLANIM ÖRNEKLERİ

Merkezi İşlem Birimi MİKROİŞLEMCİ SİSTEMLERİ. MİB Yapısı. MİB in İç Yapısı. MİB Altbirimleri. MİB in İç Yapısı

İçİndekİler. 1. Bölüm - Mİkro Denetleyİcİ Nedİr? 2. Bölüm - MİkroDenetleyİcİlerİ Anlamak

İSTANBUL TİCARET ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ MİKROİŞLEMCİLİ SİSTEM LABORATUARI İKİLİ TABANDA ÇOK BAYTLI ÇARPMA

MİLLİ SAVUNMA ÜNİVERSİTESİ KARA HARP OKULU DEKANLIĞI BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ DERS TANITIM BİLGİLERİ

ELN1001 BİLGİSAYAR PROGRAMLAMA I

PIC Programlama. Devrim Çamoğlu

LCD (Liquid Crystal Display)

16F84 ü tanıt, PORTB çıkış MOVLW h FF MOWF PORTB

PİC HAKKINDA KISA KISA BİLGİLER GİRİŞ/ÇIKIŞ PORTLARI

Mikroişlemciler (EE 208) Ders Detayları

Transkript:

EEM 306 Mikroişlemciler ve Lab. Doç.Dr. Mehmet SAĞBAŞ

Alt Program Yapısı Alt programın çağrılması Alt program korunur alınır ;Argumanlar R12 R15 registerlarına atanir. call #SubroutineLabel SubroutineLabel: ;R4 R11 register değerleri stackta ;Alt program govdesi ;Stacktan R4 R11 register değerleri ret Subroutine, Interrupt, LPM

Yerel Değişkenler Yerel değişkenlerin depolama: CPU Registerları: Alt program içinde kullanılmadan önce değerleri stacta koruma altına alınmalı RAM: Tercih edilmez. Alt program çağrılsa da çağrılmasa da değişkenler yer kaplar. Stack: Genellikle kullanılabilecek CPU registerı kalmadığında değişkenlere stack üzerinde yer tahsis edilir. Subroutine, Interrupt, LPM

Yerel Değişkenler Yerel Değişken Register Yerel Değişken Stack Subroutine, Interrupt, LPM

Argümanlar Geri Dönüş Argümanlar: R12 R15 Stack Geri Dönüş R12 R15 Stack Niye 6(SP)? Subroutine, Interrupt, LPM

KesMeler Sistem Reset Non-maskable Interrupts Toplu olarak etkileri iptal edilemez. Bireysel olarak (Kesme Bayrakları ile) etkileri iptal edilir. Maskable Interrupts SP register ı GIE biti kullanılarak toplu olarak etkisizleştirilebilirler. Kesme bayrakları ile etkinleştirilirler. Subroutine, Interrupt, LPM

KesMeler

P1 Portu için Kesmeler LaunchPad üzerinde bulunan MSP430G2231 mikrodenetleyicisinde toplam 10 adet giriş/çıkış bulunmaktadır. 10 giriş/çıkış da harici kesmeye gidebilmektedir. Bütün giriş/çıkışlardaki kesme vektör adresi ortak kullanılmaktadır. Assembly Uygulama

P1IFG Kaydedicisi (P1 Interrupt Flag) P1 portunun ilgili pininde kesme oluşup oluşmadığı, bu saklayıcının bitleri kontrol edilerek öğrenilir. Eğer Bit = 1 ise kesme oluşmuş, Eğer Bit = 0 ise kesme oluşmamış anlamına gelmektedir. Örnek: if(p1ifg_bit.p1ifg_7 == 1) P1OUT_bit.P1OUT_0 = 1; //Eğer P1.7 de bir kesme oluşmuş ise P1.0=1

P1IE Kaydedicisi (P1 Interrupt Enable) Bu kaydedici ise P1 portunun ilgili bitinin kesmelere açık olup olmayacağı durumunu belirlemek için kullanılır. Eğer Bit = 1 ise ilgili pinde kesme açık, Eğer Bit = 0 ise ilgili pinde kesme kapalı durumdadır. Örnek: P1IE_bit.P1IE_7 = 1; //P1.7 için harici kesme açık

P1IES Kaydedicisi (P1 Interrupt Edge Select) P1 portunun ilgili bitinin kesmeye düşen kenar veya yükselen kenarda gideceğini belirleyen kaydedicidir. Eğer Bit = 1 ise düşen kenar, Eğer Bit = 0 ise yükselen kenar Örnek: P1IES_bit.P1IES_7 = 1; //P1.7 için kesmeler düşen kenar.

Merkezi İşlem Ünitesi (16 Bit RISC CPU) Özellikler Stack pointer, Program counter ve Status saklayıcılarını erişebilme (Bu özellik PIC 16F serilerinde yok). Asambley kodlama için bu esneklik sağlıyor. Ancak C kodlamada gerek yok, derleyici en uygun şekilde kendisi ayarlıyor. 16 bit adresleme ile belleğe daha az erişim gereksinimi 7 adet adresleme modu Toplam 27 adet komut 16 bit olmasına rağmen byte ya da word türünde veri adresleyebilme

MSP430 CPU Saklayıcıları 12 adet working register R0-R3 arası farklı amaçlar için kullanılıyor. 4 Özel amaçlı register PC (R0) SP (R1) SR (R2) (CG1) CG2 (R3) 12 Genel amaçlı register R4... R15 MSP430 İşlemci Mimarisi

Program Counter R0 PC (Program Counter) Register Yürütülecek sonraki komutun adresini içerir. lsb bit 0 zorlanmıştır ve çift adreslere hizalanır. Komut uzunluğu 2 Byte oldu için her komut getirmeden sonra otomatik olarak 2 arttırılır. Jump komutlarında, yeni adres komut tarafından üretilir ve içerik bu adrese göre yenilenir. MSP430 İşlemci Mimarisi

Stack Pointer R1 Stack pointer, mikrodenetleyicinin herhangi bir kesme veya altprograma dallanma anında Program Counter (PC) ın o anki konumunun (adres) kaydedildiği alandır. Altprogram veya kesme sonunda buradaki adrese dallanılarak mikrodenetleyici çalışmasına kaldığı yerden devam eder. Bellekte 0x280 alanından itibaren adreslenir ve LIFO (Son giren ilk çıkar) kuralıyla çalışır.

Stack Pointer R1 SP (Stack Pointer) Register Stack ın tepe adresini saklar Stack a ekleme yapıldıkça, en son eklenen elemanın adresini gösterir. lsb biti 0 a zorlanmıştır. Yani stack a word konur ve alınır. STACK RAM de yer alır. RAM in en üsttünde gerçekleştirilir ve düşük adreslere doğru genişler. Word e göre hizalanır, yani byte konduğunda 1 byte boş olarak harcanır. MSP430 İşlemci Mimarisi

Stack Pointer R1 Stack İşlemleri SP İlklendirilmesi C ile otomatik gerçekleşir. Assembly de bizim tarafımızdan yapılmalıdır. MSP430 İşlemci Mimarisi

Status Register R2 C (Carry) : Elde bayrağı Z (Zero) : Sıfır bayrağı N (Negative) : Negatif bayrağı GIE (General Interrupts Enable) : Genel kesmeleri aktif etme biti OSC OFF :LFXT1 kristali devre dışı bırakılır SCG0 : DCOCLK devre dışı SCG1 : SMCLK devre dışı V (Overflow) : Taşma bayrağı Düşük Güç Modları için Kullanılan bitler

Status Register R2 SR (Status Register) İşlevleri 3 kategoride toplanabilen bayraklar setini içerir. Düşük Güç Mod Kontrol Aritmetik Lojik Kesme Aktifleme MSP430 İşlemci Mimarisi

Status Register R2 Aritmetik ve Lojik İşlem Sonuçları C (Carry): Aritmetik işlemin sonucu tahsis edilen alandan daha büyük olup olmadığı Z (Zero): İşlemin sonucu 0 ise set edilir. N (Negative): İşlemin sonucunun msb biti ile eşlenir. V (Signed Overflow): İşaretli işlemin sonucunda bir overflow olduğunda set edilir. Kesme aktifleme GIE (General Interrupt Enable): Maskelenebilir kesmeleri aktifler. Düşük Güç Mod Kontrolü CPUOFF, OSCOFF, SCG0, SCG1: Hepsi 0 ise sistem tam güçte çalışır. MSP430 İşlemci Mimarisi

Constant Generators CG1-CG2 R2 R3 Sabit Üreteçleri R2 ve R3 her ikisi de 6 yaygın kullanılan sabitleri sağlamak için kullanılır. Genel Amaçlı Registerlar Kalan 12 registerın (R4... R15) özel bir amacı yoktur. Veri ve adres için kullanılırlar. MSP430 İşlemci Mimarisi

Constant Generators CG1-CG2 R2 R3 Bu birimin asıl amacı aritmetik işlemlerde çok kullanılan bazı sayıları bellek erişim gereksinimi olmadan doğrudan saklayıcı içerisinden almalarını sağlamaktır. Bunun için R2 ve R3 saklayıcıları kullanılır. Bu işlem C derleyicisi içerisinde otomatik olarak yapılmaktadır.(optimizasyon yüksek seviyede ise)

General Purpose Registers R4 R15 Genel kullanım amaçlı saklayıcılardır. 16 bit Uzunlukları 2 byte olmasına rağmen byte ya da word erişimler kolaylıkla yapılabilir.

Düşük Güç Modları Aktif Mod: CPU, saat blokları ve etkinleştirilmiş modüller aktif durumdadır. Yaklaşık 300 ma akım çekilir. LPM0: CPU ve MCLK aktif değil, SMCLK ve ACLK aktif kalır. Yaklaşık 85 ma akım çekilir. LMP3: CPU, MCLK, SMCLK ve DCO etkin değil, ACLK aktif kalır. Yaklaşık 1 ma akım çekilir. Standart düşük güçte çalıştırma modudur. LMP4: CPU ve tüm saat blokları etkin değil. Yaklaşık 0.1mA akım çekilir.

Düşük Güç Modları

Düşük Güç Modları ve Kesmeler Uygulama C Uygulama

#include <msp430.h> void main(void) { Uygulama 1.2 WDTCTL = WDTPW WDTHOLD; // Stop watchdog timer BCSCTL1 = CALBC1_1MHZ; DCOCTL = CALDCO_1MHZ; delay_cycles(100000); P1DIR = BIT6; // yeşil LED (P1.6) çıkış P1IE = BIT3; // P1.3 için kesmeleri aç (Bit = 1 ise ilgili pinde kesme açık) P1IES = BIT3; // Düşen kenar tetikleme yapılıyor (Bit = 1 ise düşen kenar). Butona bastığım anda kesmeye gidecek P1IFG = 0x00; // Açılışta kesmeye gitmemesi için P1IFG'i sıfırlanmış (Bit = 0 ise kesme oluşmamış) bis_sr_register(lpm4_bits GIE); /* Düşük güç tüketimi ve kesmeler status registerda ayarlanıyor. Düşük güç moduna inmek için her zaman bu fonksiyon kullanılır. GIE (General Interupt Enable) genel kesmeleri açıyor. Bu yapılmazsa program kesme vektörüne dallanmaz } #define LPM4_bits (SCG1+SCG0+OSCOFF+CPUOFF) #define LPM4_EXIT bic_sr_register_on_exit(lpm4_bits) // Exit Low Power Mode 4 Bu fonksiyon ile mikrokontrollör 0.1 uw güç harcama moduna geçer */

Uygulama 1.2 (devam) #pragma vector=port1_vector /* pragma vektör ile kesme vektörü yazıldı. Anlamı: Programda port kesmesi geldiği zaman kesme vektörüne geldiği zaman PORT1_VECTOR'ün adresine dallanır (PORT1 için 0xFFE4). PORT1_VECTOR'ünün adresi: #define PORT1_VECTOR (2 * 2u) / 0xFFE4 Port 1 */ interrupt void P1_ISR(void) { P1OUT ^= BIT6; // her butona basıldığında yeşil LED yanıp söner P1IFG = 0x00; // Kesme bayrağı sıfırlandı. Sıfırlanmazsa bir daha kesmeye girmez. }