Son Değişiklik : 21.11.2007, Hazırlayan:Dr.A. Cüneyd TANTUĞ Sayfa 1
Kesme Uygulamaları
Deneyin Amacı
Kesme kavramının öğretilmesi
Kesme, kesme isteği ve yazılım kesmesi kavramlarının anlaşılması
Kesme hizmet programı geliştirme
Titreşimsiz düğme kavramının irdelenmesi ve geliştirilmesi
Deney Öncesi Yapılması Gerekenler
1. Kesme ve reset kavramları, genel hatları ile öğrenilmelidir.
2. MC9S12 ailesi mikrodenetleyicilerde kesme kavramları araştırılmalıdır.
3. Tuşların titreşim sorunlarını inceleyiniz.
Gereken Malzemeler
1. CSM-12C32 Deney Kiti 2. C.A.D.E.T.
3. Ara bağlantı kablosu 4. 1 x 74LS04 (Hex-Inverter) 5. 1 x 74HC00 (Quad-NAND Gate)
Referans Belgeler
[R1] MC9S12C Family Datasheet
[R2] CSM12C32 Bağlantı Şeması (CSM12C32_SCH_B.pdf) [R3] 74LS00 Datasheet
[R4] 74LS04 Datasheet
Son Değişiklik : 21.11.2007, Hazırlayan:Dr.A. Cüneyd TANTUĞ Sayfa 2
Deney İçeriği
Bir bilgisayarda en azından bir Albaştan, bir Kesme (KES) ve bir Kesme İsteği (KIS) girişi bulunur. MC9S12 ailesinde bu girişler sırasıyla Reset, XIRQ (Non-maskable Interrupt) ve IRQ (Interrupt Request) olarak adlandırlmıştır. Bu üç giriş de lojik 0’da etkin olmaktadır. Bunların dışında değişik portlarında genel amaçlı giriş/çıkış bitlerinden (GPIO-General Purpose I/O) bazıları da kesme üretecek şekilde programlanabimektedir.
Kesmeler geldiğinde çalıştırılacak kesme hizmet programlarının adresleri bir vektör tablosunda tutulur (bkz Tablo 1).
Vector Address Source 0xFFFE–0xFFFF System reset 0xFFFC–0xFFFD Crystal monitor reset 0xFFFA–0xFFFB COP reset
0xFFF8–0xFFF9 Unimplemented opcode trap
0xFFF6–0xFFF7 Software interrupt instruction (SWI) or BDM vectorrequest 0xFFF4–0xFFF5 XIRQ signal
0xFFF2–0xFFF3 IRQ signal
Tablo 1 – Vektör Tablosu
Dış kaynaklı kesmelerin dışında, mikrodenetleyicinin içindeki gerçek zaman saati, ADÇ gibi diğer donanımlardan da kesmeler gelebilir.
Son Değişiklik : 21.11.2007, Hazırlayan:Dr.A. Cüneyd TANTUĞ Sayfa 3
Deneyde Yapılacaklar Bölüm 1
İleri ve geri sayma yeteneği olan bir program hazırlanması
Kesmeli çalışmaya başlamadan önce, BCD olarak 1’den 9’a kadar sayacak bir program hazırlamanız gerekmektedir. Bu program, daha sonra kesmeli çalışmayı denemeniz için bir ana program olacaktır.
Gerçeklenecek program, bir YÖN değişkeninin değerine ($00:aşağı, $01:yukarı) göre ya ileri doğru ya da geri doğru sayma yeteneğine sahip olacaktır. Sayacın yeni değeri güncellendikten sonra bu değer C.A.D.E.T. üzerindeki BCD girişli 7-kollu göstergelerde gösterilmek üzere Port T’ye yazılacaktır. Göstergelerin enerjilenme süreleri için yaklaşık 1 saniye süren bir gecikme altprogramına dallanılacak ve programınız saymaya devam edecektir. YÖN değişkenin değeri bu ilk bölümde kod içerisinden elle değiştirilecektir.
Yazılımın üzerinde çalışacağı donanım şekil 1’de verilmiştir:
Şekil 1 – Gösterge bağlantısı
Port T’nin (PORTE) ve Port T yönlendirme saklayıcısı (DDRT-Data Direction Register T) adresleri aşağıdaki gibidir:
PTT equ $00000240 DDRT equ $00000242
CSM-12C32 deney kitinden C.A.D.E.T. deney kitine bağlantı 40 damarlı bir kablo ile yapılacaktır. Bu kablo, kişisel bilgisayarlardaki disk sürücü bağlantı kablosu ile aynı kablodur.
Kablonun dişi olan ucu, CSM-12C32 deney kiti üzerindeki bağlantı noktasına bağlanmalıdır.
Ara kablonun kırmızı ucu 1 ve 2 numaralı pinlere gelecek biçimde (güç kaynağı bağlantısının olduğu tarafa) deney kitine zarar vermeden takılmalıdır.
Son Değişiklik : 21.11.2007, Hazırlayan:Dr.A. Cüneyd TANTUĞ Sayfa 4 Şekil 2-CSM-12C32 Deney Kiti Şekil 3 -40 damarlı ara bağlantı kablosu
Şekil 4 – 20x2 Bağlantı Konnektörü Şekil 5 – 20x1 Erkek Bağlantı Konnektörü
Şekil 6 – Erkek bağlantı konnektörleri, 40-damarlı kablonun ucundaki iki soketin farklı sıralarına
bağlantısını gösteren çizim
Son Değişiklik : 21.11.2007, Hazırlayan:Dr.A. Cüneyd TANTUĞ Sayfa 5
Kesmeyle değiştirilebilen yönde ileri ve geri sayma yeteneği olan bir program hazırlanması
Bir önceki bölümde hazırlamış olduğunuz programınıza ufak bir ekleme yaparak kesme isteği geldiğinde YÖN değişkenini diğer yönde sayma yapacak şekilde değiştiriniz. Kesmeli çalışmayı sağlamak üzere aşağıdaki kodları programınızın başına ekleyiniz:
;Interrupt Initialization SEI
BSET INTCR, mINTCR_IRQE ; IRQ configured to respond only to falling edges
BSET INTCR, mINTCR_IRQEN ; External IRQ pin is connected to interrupt logic.
CLI
Bu kod parçası, kesme denetim saklayıcısının (Interrupt Control Register) 6. biti 1 yapılarak, kesme isteği girişinin, kesme devresine bağlanması, yani etkin olarak çalışması gerektiği belirtilmiştir. Aynı saklayıcının 7. biti de 1 yapılmış ve sadece düşen kenarların kesme isteği olarak algılanması sağlanmıştır.
ISR1 isimli kesme hizmet programınızın adresini vektör tablosuna eklemek için program kodlarının en sonunda aşağıdaki satırları yazınız:
ORG $FFF2 ; Reset Vector DC.W ISR1
Sistemin kesme istek girişini (PE1/IRQ’, 2 numaralı pin), kuracağınız aşağıdaki devre ile besleyiniz.
Şekil 7 – Kesme isteği girişine bağlanacak donanım
Son Değişiklik : 21.11.2007, Hazırlayan:Dr.A. Cüneyd TANTUĞ Sayfa 6
Bölüm 3
Titreşimli düğme ile kesme
Bölüm 2’de kullandığınız düğmeler, titreşimsiz (debounced) tipi düğmelerdir. Normal mekanik anahtarlama yapan düğmelerde mekanik parçalar geçiş yaparken birden fazla defa temas ya da temassızlık gözlenir:
Şekil 4 – Titreşimli düğme çıktısı
Bu olayı gözlemlemek üzere bir program hazırlanacaktır. Hazırlanacak programın başınca bir sayaç değeri sıfırlanacak, her kesme isteği geldiğinde de kesme hizmet programı içerisinde bu sayacın değeri 1 arttırılacaktır. Ana program ise sonsuz bir döngü içerisinde bu sayacın değerini sürekli Port T’nin yüksek anlamlı 4 biti üzerinden (önceki bölümlerde kullandığınız donanım) C.A.D.E.T. üzerindeki BCD girişli 7-kollu göstergelere çıkartacaktır. Kit üzerindeki SW1 düğmesine basıldığında ise sayacın değeri sıfırlanacaktır.
Titreşimli butonu gözlemlemek için Şekil X’teki devrede, C.A.D.E.T. üzerindeki titreşimsiz düğmeleri kullanmak yerine (DEBOUNCED PUSHBUTTONS), iki yollu anahtarlama yapan SPDT (S9 veya S10) anahtarını kullanınız.
Programınızı çalıştırdığınızda, anahtarı her kapatıp açtığınızda sayacın olması gerektiği gibi bir defa artmadığını, rastgele adımlarla arttığını gözlemlemeniz gerekmektedir.
Düğmeye basıldığı an
Lojik 1 Seviyesi
Lojik Eşik Seviyesi
Lojik 0 Seviyesi
Lojik 1 Seviyesi
Son Değişiklik : 21.11.2007, Hazırlayan:Dr.A. Cüneyd TANTUĞ Sayfa 7 Deneyin bu son bölümünde, titreşimsiz düğme tasarımı yapılacaktır. Bu amaçla önceki
programınızı ve donanımızı hiç bozmadan aşağıdaki devreyi aynı bir yerde gerçekleyiniz:
Şekil 5 – Titreşimsiz düğme tasarımı
Devrenin anahtarlamasını bir önceki bölümde kullandığınız SPDT anahtarı üzerinden kullanınız.
Bu devreyi tasarladıktan sonra, öncelikle deney kitinin kesme isteği girişini (PE1/IRQ’) eski bağlanyı çıkartınız ve sonrasında titreşimsiz düğme devresinin çıkışını (Q ucu) buraya bağlayınız. Programınızı tekrar kite yükleyip çalıştırarak artık sayacın birer birer arttığını gözlemleyiniz.
Raporda İstenenler
Gerçeklediğiniz kesme donanımını çiziniz.
Kullandığınız yazılımların dökümünü veriniz.
Titremesiz anahtar devresini açıklayınız.
Yazılım kesmesi kavramını anlatınız.