ISIS ile Detaylı PIC Simülasyonu Nasıl Yapılır?
Merhaba arkadaşlar,
Elektronikle uğraşan neredeyse herkes, yaptığı devrenin analizini yapmak ve pratikte nasıl çalışacağını görmek için simülasyon yazılımları kullanır. Kuşkusuz ki en çok kullanılan simülasyon yazılımı da Proteus-ISIS’tir.
Eğer sisteminizde MPLAB programı yüklü ise ( MPLAB ile ilgili yazımıza buradan ulaşabilirsiniz. ) ISIS ile bu yazılımı entegre edebiliyor ve PIC analizi yapabiliyorsunuz. Fakat MPLAB kullanmadan da ISIS’in kendi analiz özelliği ile kullandığınız PIC’i oldukça detaylı şekilde analiz edebiliyorsunuz. PIC yazılımını komut komut çalıştırabiliyor ve bu sırada PIC’ın yazmaç ( register ) durumlarını, EEPROM haritasını, RAM haritasını, program haritasını görebiliyorsunuz. Bu, özellikle devrenizin beklemediğiniz bir şekilde çalışmadığı durumlarda, hatanın PIC’e yüklediğiniz yazılımda olup, olmadığını anlamanızı kolaylaştırıyor.
Sizlere sadece ISIS yazılımını kullanarak simülasyon sırasında PIC’i nasıl izleyebileceğinizi anlatmaya calışacağım.
Öncelikle bir çalışma alanında simülasyonunu yapacağınız bir PIC’in olduğunu ve yazılımını yüklediğinizi farz ederek devam ediyorum. Bu kısımlar genelde bilindiği için anlatma gereği duymadım. Eğer simülasyona PIC ekleme ve PIC’e yazılım yükleme konusunda problem yaşıyorsanız bu yazıya yorum yazarak sorunuzu sorabilirsiniz.
Analiz yaparken simülasyonumuzu adım adım çalıştırmamız gerekiyor. Bunu ISIS’te sol alt köşedeki butonlar ile yapacağız. Bunun için “Step” tuşuna basacağız. Bahsettiğim “Step” tuşu kırmızı elips içine aldığım butondur.
Simülasyonu bu tuş ile başlattığınızda çok az bir süre çalışıp, bekleyecektir. Kaçıncı saniyede olduğunuz butonların hemen sağındaki kısımdan öğrenebilirsiniz.
Bu şekilde devremizin çalışmaya başladıktan sonra gözüken süre sonra alacağı durumu görebiliyor, analiz edebiliyoruz. PIC’in durumunu görmek için de gerekli pencereleri açmamız gerekmekte. Bunun için izleyeceğiniz yol şudur: ( İngilizce menü içindir. )
Debug -> PIC CPU
Gördüğünüz üzere 5 adet farklı seçeneğimiz var. Kısa kısa her birini açıklamaya çalışacağım. Simülasyonda PIC 16F877 kullanıyorum. Kullandığınız cihaza göre analiz pencereleri de değişiklik gösterebilir.
1-Registers
Bu pencere ile bazı özel “register”ların ( yazmaç ) durumunu görebilir, o anda işlenecek komutu PIC Assembly dili komutu şeklinde görebilirsiniz. Bu pencere şu şekilde olacaktır:

Gördüğünüz gibi yazılımın çalışmasını takip etmeniz için gereken özel “register”lar ( yazmaç ) ve “flag”lar ( bayrak ) bu pencerede gösteriliyor.
2-Data Memory
Bu pencere ile değişkenlerin tutulduğu alanı yani cihazın “RAM” bölgesini izleyebilirsiniz. Her adresin durumuna bakabilirsiniz. Her bir bölgenin üzerine gelerek değerini ve adresini görebilirsiniz. Bazı adımlarda bazı alanların arkalarının yeşil renkte olduğunu görebilirsiniz. Bu renk size değeri değişen bölgeleri vurgulamaktadır.

Gelen pencerede bir satırda 8 adet bölgeyi görebiliyorsunuz. Pencereyi genişleterek bu sayıyı arttırmak ve tüm bölgeleri gözünüzün önüne almak mükün.
3-Eprom Memory
Tahmin edebileceğiniz gibi bu pencere ile cihazın EEPROM kısmına bakabiliyoruz. Bu alana yazılan veriler PIC kapandıktan sonra da silinmeyecektir. Cihaza neler kaydettiğinizi buradan görebilirsiniz. Yine pencereyi genişleterek tüm alana aynı anda bakabilirsiniz. Ben biraz genişlettim.

4-Program Memory
Bu pencere ile de PIC’e yüklediğimiz programı görebiliriz. PIC, burada gördüğümüz komutlara göre çalışmakta, her türlü işlemi buradaki verilere göre yapmaktadır, her ne kadar baktığımızda direkt olarak bizim için bir anlam içermese de.
Programlarınızın 99%’nda buradaki değerler değişmeyecektir. Bu yüzden bu pencerede hep sabit değerler görebilmeniz mümkün. İzlemeniz çok da önemli değildir. Çünkü veriler çoğunlukla sabit kalacaktır.

5-Stack
Son penceremiz ise “stack” ( yığın ) penceresi. Kısaca “stack” ( yığın ) nedir dersek:
“Stack” ( yığın ), programınız bir yerlere dallandığında geri dönüş bilgisinin tutulduğu yerdir. Basitçe her komutun bir adresi var diyebiliriz. Programınız bir yere dallandığında ( Pic Basic dilinde CALL komutu gibi ) dallandığı yerin adresi burada tutulur. Dallandığınız yer, geldiği yere dönmek istediğinde ( Pic Basic dilinde RETURN komutu gibi ) buradaki bilgi okunur ve dallanma komutunda sonraki komut çalıştırlır. Kullandığım cihazda ve çoğu PIC’te 8 seviyeli “stack” ( yığın ) bölgesi vardır. Bu, iç içe en fazla 8 kere dallanma yapabileceğiniz anlamına gelir.
Stack bölgesi ile ilgili kısa bir bilgi vermeye çalıştım. Bu pencere ile buradaki değerleri görebilirsiniz. Örnek bir görüntü:

Bu arada, adım adım simülasyon sırasında PIC’e sol tıklayarak da bazı bilgileri ( besleme ve pinlerle ilgili bazı bilgiler ) görebiliyoruz.

Son Sözler
Bu pencereleri açabilmek için simülasyonu adım adım çalıştırmanız gerekiyor. Eğer duraklatmadan direkt olarak çalıştırırsanız bu penceleri açabilmeniz mümkün değil.
Tavisye Notum
Kullandığımız PIC’leri en az 4 MHZ hızında çalıştırıyoruz. Adım adım simülasyon yaparsanız komutların atlaya atlaya çalıştığını göreceksiniz. Tüm komutları adım adım görebilmek için PIC saat hızını düşürebilirsiniz. Örneğin saat hızını 40 HZ olarak ayarlarsanız tüm komutları görebilirsiniz. Hatta bu hızda ilerledikçe komutların değişmediğini bile görebilirsiniz. Tabi bunun nedeni frekansı oldukça düşük tutmamız. Bunu önlemek için frekansı arttırabilirsiniz. Çok arttırdığınızda da yine komut atlamalar gerçekleşebilir. Bunu deneyerek ayarlayabilirsiniz.
PIC frekansını değiştirdiğimiz pencere:

Eğer programınızın sağlıklı çalışması için saat frekansı çok önemli ise, adım adım çalıştırdığınızda çalışması aksayabilir. Muhtemelen böyle bir durumla karşılaşmayacaksınız. Zaten bu işlemi adım adım simülasyonda komut kaçırmamak için yapıyoruz. PIC’in durumunu analiz edeceğimiz için bu işlemin hatalı veri almamıza neden olacağını sanmıyorum.
Anlatabildiğim kadarı ile ISIS ile nasıl PIC analizi yapabileceğinizi anlattım. Umarım size yararı olmuştur. Bulduğunuz eksiklikleri veya sorularınızı yorum yazarak iletebilirsiniz.
Yazıyı e-posta veya RSS ile alanların dikkatine:
Bu yazının yayınlan versiyonu ile e-posta ile gönderilen versiyonu ve RSS ile yayınlanan versiyonu arasında stil ve şablon yönünden küçük farklılıklar olabilir. Ek olarak, yazı üzerinde herhangi bir düzeltme veya değiştirilme yapılırsa tekrar e-posta gönderilmemektedir. Aynı durum RSS okurları için de geçerli olabilmektedir. Bu yüzden bu yazıdaki bilgileri kullanmadan önce en doğru ve güncel bilgiye ulaşmak için yazının orjinaline bakmanızı öneririz.


