Atmel AT90S2313
AT90S2313 düşük güçlü, RISC (reduced instruction set computer) mimarisi tabanlı bir mikrokontrolördür. Pek çok mikrokontrolörde olduğu gibi AT90S2313'de de Harward mimarisi kullanılmıştır. Bu mimaride veri belleği ile komut belleği birbirinden bağımsızdır. Bu mimarinin aksine Von Neuman mimarisinde ise veri ve komutlar aynı bellek içerisinde yer almaktadır.
Bu yapı farklılığına rağmen her iki mimaride de saklayıcı olarak adlandırılan özel bellek alanları mevcuttur. Saklayıcı temel olarak işlemci içerisinde bulunur ve işlemcinin çok önemli bir yapıtaşıdır. Saklayıcıların erişim süreleri belleklere göre çok daha hızlıdır. Bu nedenle MCU'da kullanılan pek çok komut bu saklayıcılar kullanılarak gerçeklenmektedir.S2313 de kullanılan saklayıcılar bellek haritası içerisinde yer aldıklarından veri belleği olarak da kullanılabilirler.
AT90S2313 'de bellek haritasının bir başka bölümü de donanım kontrolü için ayrılmıştır. Bunlar Giriş/Çıkış (G/Ç) kontrol portları ya da G/Ç saklayıcıları olarak adlandırılır.Bu saklayıcılar kullanılarak değişik donanım kaynakları kontrol altında tutulabilir.
Mikrokontrolör (MCU) 32 genel amaçlı saklayıcı takımı ile zengin bir komut kümesine sahiptir. 32 saklayıcının tamamı Aritmetik Lojik Birime (ALU) doğrudan bağlıdır. Bu nedenle iki farklı saklayıcıya bir komut ile ve tek saat darbesiyle erişilebilmektedir.
1 - Genel Özellikler
AT90LS2333 aşağıdaki özelliklere sahiptir:
· 2048*16 bit (2K*16) program belleği
· 128 byte EEPROM
· 128 Byte SRAM
· 20 genel amaçlı G/Ç hattı
· 32 genel amaçlı iş saklayıcısı
· İki adet zamanlayıcı/sayıcı
· İç ve dış kesme olanakları
· Watchdog(Gözetleme) zamanlayıcısı
· Analog karşılaştırıcı
· Programlanabilir ASİA(UART)
· SPI seri port
· Yazılımla belirlenebilen güç tasarruf modları(Idle mode ve Power down mode)

Bacak Tanımlamaları
Vcc : Kaynak geriliminin uygulandığı bacak
GND : Topraklama bacağı
Port B (PB7..PB0) : Port B, 7 bitlik çift yönlü G/Ç iskelesidir. Her bit için seçime bağlı dahili (iç) pull-up özelliği mevcuttur. Port B çıkış tamponları 20mA akım sağlayabildiğinden doğrudan LED diyot göstergelerini sürebilir.
Port D (PD6..PC0) : Port D , 7 bitlik çift yönlü G/Ç iskelesidir.Her bit için seçime bağlı dahili (iç) pull-up özelliği mevcuttur. Port D çıkış tamponları 20mA akım sağlayabil-diğinden doğrudan LED diyot göstergelerini sürebilir. Port D'nin bu özellikleri yanında bazı farklı özellikleri de mevcuttur. Bu özelliklere burada değinil-meyecektir.
(Reset)' : (Reset)' hattına dışarıdan lojik 0 uygulanması halinde MCU resetlenir.Resetin algılanabilmesi için en az 50ns süresince lojik 0 değerinin uygulanması gereklidir. 50ns'den daha kısa süreli darbelerin algılanması garanti değildir.
XTAL1,XTAL2 : Kristal osilatörün MCU'ya bağlanması için kullanılan uçlar.
2 - Mimariye Genel Bakış
Yüksek hızda erişimin mümkün olduğu 32*8 bitlik saklayıcı takımının her bir elemanına erişim tek bir saat çevrimi ile mümkün olmaktadır.Yani sadece bir saat çevriminde bir ALU işlemi gerçeklenebilmektedir.İki saklayıcının operand olduğu bir işlemde bir peryodda işlem tamamlanmakta ve sonuç saklayıcılardan birine yazılmaktadır.
32 saklayıcıdan 6'sı 16 bitlik işaretçi olarak kullanılabilmektedir.Böylece tablolar üzerinde işlem yapmak oldukça kolaylaşmaktadır. Bu saklayıcılar X,Y ve Z saklayıcıları olarak adlandırılırlar.
ALU saklayıcılar arasında ya da bir saklayıcı bir sabit arasında aritmetik ve lojik işlemeler gerçekleştirebilir.
32 genel amaçlı saklayıcı normal bellek alanları gibi de kullanılabilir.Çünkü bu saklayıcılar da veri belleği haritası içerisinde yer almaktadırlar. $00 ile $1F adresleri kullanılarak bu saklayıcılara erişim mümkün olmaktadır. Şekil 1' de AT90S2313 mikrokontrolörüne ait mimari yapı verilmiştir.

Şekil 1. AT90S2313 RISC mikrokontrolöre ait mimari yapı
3 - Bellek Yapısı
Veri Belleği(SRAM)
AT90S2313'ün şekil 2.' de görüldüğü gibi 128 byte'lık veri belleği mevcuttur. Bu veri belleğinin ilk adresi $0060 , son adresi ise $00DF 'dir. Normalde bellek başlalangıç adresinin $0000 olması gerekmektedir. Fakat burada ilk 32 adres dahili saklayıcılara erişim için , sonraki 64 adres ise G/Ç ile ilgili saklayıcılara erişim için ayrımıştır. Buradan anlaşılacağı üzere bu saklayıcılar da bellek haritası içerisinde düşünülmektedir, fakat fiziksel olarak saklayıcılar SRAM içerisnde yer almamaktadır.
SRAM içerisinde saklanan bilgi uygulanan kaynak gerilimi var olduğu sürece saklanabilmektedir. Bundan dolayı SRAM geçici veri saklanması amacı ile kullanılmaktadır.

Şekil 2. AT90S2313 Bellek haritası
Program Belleği(Flash)
Program belleği hem kullanılan bellek tipi olarak hem de kendisine ayrılmış adres aralığı açısından SRAM'den farklılık gösterir.Program belleği olarak kullanılacak olan bellek, kaynak gerilimi kesilse dahi içerisinde bulunan veriyi muhafaza edebilmelidir.Yani program belleği olarak kalıcı veri saklama özelliğine sahip bellek türleri kullanılır.Bir diğer nokta ise veri belleğine erişilirken program belleğine erişilememesidir. Aynı şekilde program belleğine erişilirken de veri belleğine erişim mümkün değildir.
AT90S2313'de program belleğinin boyutu 2048*16 bittir. Bellek adresi $000 ile $3FF arasındadır.
Yığın
Yığın, genellikle PUSH,POP,CALL,RET gibi özel komutlar tarafından kullanılan, veri belleği içerisinde tanımlanan özel bir veri yapısıdır.Yığının veri belleği içerisinde nereye yerleşeceği programcı tarafından belirlenebilir. Yığın yüksek adreslerden düşük adreslere doğru büyüdüğü için tanımlama esnasında ilk adresinin büyük bir adres olması daha uygun olacaktır.
Yığına bir veri atıldığında yığın işaretçisi bir azaltılarak bir sonraki verinin yazılabileceği bellek gözünü göstermesi sağlanır.Yığından veri çekileceği durumda ise yığın işaretçisi bir artırılır ve işaretçinin gösterdiği veri, saklayıcılardan birine yerleştirilir.
Yığın, alt program çağrılarında ve kesmelerin işlenmesinde çok önemli bir görev üstlenmiştir. Bir alt program çağrısı yapıldığında veya kesme alındığında o andaki program sayacı yığına atılır. Çağrısı yapılan kod işlendikten sonra RET ya da RETI komutu ile daha önce yığına atılmış olan geri dönüş adresi yığından çekilir ve program akışı kesilmiş olduğu naktadan itibaren devam eder.
Yığın boyutu değişken olabileceği gibi sabit de olabilir. Fakat sabit yığın durumunda iç içe gidilebilecek alt program sayısı sınırlı alacağından değişken uzunluklu yığın yapısı daha avantajlıdır
4 - Saklayıcılar
Genel Amaçlı Saklayıcılar
AT90S2313'de 32 adet genel amaçlı saklayıcı(R0,R1,R2,...R31) takımı yer almaktadır. Pek çok komutta bu saklayıcılar kullanıldığından oldukça kullanışlı bir yapı söz konusudur. Bütün saklayıcılar 8 bitliktir ve veri belleği haritasında yer aldıklarından dolayı herbiri ayrı bir adrese sahiptir. Bellek haritasında ilk 32 adres saklayıcı takımına ayrılmıştır.
Genel amaçlı saklayıcılar (Şekil 3.), R0-R15 VE R16-R31 olarak iki sınıfa ayrılırlar. Bir saklayıcı ve ivedi verinin işlendiği komutlarda (SBCI,SUBI,CPI,ANDI ,ORI ,LDI) sadece R16...R31 saklayıcıları kullanılabilmektedir.Belleğin işaretçi yapısı kullanılarak adreslenebilmesi için üç adet özel 16 bitlik saklayıcı (X,Y,Z) kullanılmaktadır. Bu saklayıcıların herbiri iki adet 8 bitlik saklayıcının birlikte kullanılması ile elde edilmektedir.

Şekil 3. Genel amaçlı iş saklayıcıları
Durum Saklayıcısı
Durum saklayıcısı bazı komutların sonuçlarına ait bilgilerin tutulduğu bir saklayıcıdır. Bunun dışında tablo 1. 'de görülebileceği gibi bir kaç tane daha özelliği vardır. Örneğin MCU'nun kesmeleri tümüyle kaldırabilmesine olanak sağlayan global kesme izin biti bu saklayıcı içerisinde yer almaktadır. SREG'de 8 bitten herbirinin özel bir anlamı vardır. SREG G/Ç belleği içerisinde $003F adresi ile adreslenebilmektedir.
|
Bit |
İsim |
Tanım |
|
0 |
C |
Elde ' Aritmetik ya da lojik işlemlerde elde oluşması halinde etkilenir. |
|
1 |
Z |
Sıfır- Son yapılan ilemin sonucu 0 ise bu bayrak etkilenir. |
|
2 |
N |
Negatif- Son yapılan işlem negatif ise bu bayrak etkilenir. |
|
3 |
V |
Taşma- İkiye tümleyen aritmetiğine göre taşma olursa etkilenir. |
|
4 |
S |
İşaret- N ile V bayraklarının XOR lanması ile elde edilir. |
|
5 |
H |
Yarım Elde- Eğer üçüncü bitte bir elde oloşursa bu bayrak etkilenir. |
|
6 |
T |
Bit kopyalama alanı- BST ve BLD komutları tarafından kullanılır. |
|
7 |
I |
Global Kesme İzin Biti ' Eğer lojik 1 değerinde ise bütün kesmeler izinlidir. |
Tablo 1.
Giriş/Çıkış Saklayıcıları
Giriş/Çıkış saklayıcıları aynı zamanda G/Ç portu olarak da adlandırılmaktadır. SREG ve yığın işareçisi gibi özel saklayıcıların bir kopyaları G/Ç saklayıcısı aralığında özel komutlarla erişilecek şekilde tutulurlar.
G/Ç saklayıcılarına IN ve OUT gibi özel komutlar kullanılarak erişilebilmektedir. Bunun yanında bu saklayıcıların bellek adreslerinin genel komutlar ile adreslenmesi ile de erişim sağlanabilmektedir. IN ve OUT komutları kullanıldığında G/Ç saklayıcı adresleri $00 ile $3F arasındadır. Bellek adresi olarak ise G/Ç saklayıcıları $20 ile $5F adresleri arasındadır.
5 - Adresleme Türleri
İvedi Adresleme
Bu adresleme türünde ivedi veri komut içerisine yerleştiğinden ve komutun bir parçası olduğundan adres hesabı yapılmaz.
Saklayıcı Doğrudan Adresleme,Tek Saklayıcılı
Veri, genel amaçlı saklayıcılardan birinde saklanır. Rd saklayıcısının kodu komut sözcüğü içerisine doğrudan yerleştirilir. Rd varış ya da kaynak saklayıcı olabilir.(Şekil 4)
LDI RD,K ; K sabit değeri Rd saklayıcısına yeleştirilir.
PUSH RD ; Rd saklayıcısının içeriğini yığına at
POP RD ; Yığının tepesindeki veriyi Rd saklayıcısına yerleştir.

Şekil 4. Saklayıcı doğrudan adreslem, tek saklayıcılı
Saklayıcı Doğrudan ,İki Saklayıcılı(Rd ve Rr)
İki saklayıcı üzerinde işlem yapılması gerekli olduğunde bu adresleme modu kullanılır. Herbir saklayıcı kodu komut sözcüğü içerisine yeleştirilir. İşlem somucu Rd saklayıcısına yerleştirilir.(şekil 5)
MOV Rd,Rr ; Rd < - - Rr
SUB Rd,Rr ; Rd < - - (Rd-Rr)

Şekil 5. Saklayıcı doğrudan adresleme, iki saklayıcılı
G/Ç Doğrudan Adresleme
G/Ç saklayıcılarının kullanıldığı komutlar bu adresleme modunu kullanır. Eğer komut aynı zamanda bir genel amaçlı saklayıcıyı da kullanıyorsa komut sözcüğü içerisine bu saklayıcının kodu da yerleştirilir.(Şekil 6)
IN Rd, P ; P portundaki veriyi Rd saklayıcısına yerleştir.
SBI P,b ; P G/Ç saklayıcısının b. bitini birle

Şekil 6. Giriş/Çıkış doğrudan adresleme
Veri Belleği Doğrudan Adresleme
Bu adresleme modunda veri , MCU SRAM'inden alınır.16 bitlik bellek adresi, 16 bitlik komut sözcüğünün hemen ardından gelir. Bu adresleme modunu kullanan komutlar program belleğinde 2 sözcüklük yer kaplarlar.(2*16 bit) (Şekil 7)
LD Rd,K ; K bellejk adresindeki veriyi Rd saklayıcısına yerleştir.

Şekil 7. Veri belleği doğrudan adresleme
Veri Belleği Dolaylı Adresleme
Veri belleğinin adresi 16 bitlik özel saklayıcılardan birinde tutulur.(Şekil 8)
LD Rd, X ; X işaretçisinin gösterdiği adresteki veriyi Rd'ye yaz.
ST Z,Rr ; Z işaretçisinin gösterdiği adrese Rr' nin içeriğini yaz.

Şekil 8: Veri belleği dolaylı adresleme
Veri Belleği Dolaylı , Ötelemeli
Bu adresleme modu da veri belleği dolaylı adreslemeye benzer. Adres Y veya Z saklayıcılarından birinde tutulur. Sabit bir kayıklık (off-set) değeri ise bu adresin ötelenmesi için kullanılır. Bu adresleme modu yüksek seviyeli diller için de oldukça kullanışlıdır. İşaretçinin bir tablonun taban adresini ya da bir kayıt yapısını gösterdiği uygulamalarda kayıklık değeri ile tabloda ya da kayıtta istenen veriye kolaylıkla erişilebilir.(Şekil 9)
STD Z+q , Rr ; (Z+q) < - - Rr (Z saklayıcısının içeriği değişmez.).

Şekil 9. Veri belleği dolaylı adresleme, ötelemeli
Veri Belleği Dolaylı,Önceden Azaltmalı
Bir önceki adresleme modu ile aynı şekilde işler.Buradaki fark ise saklayıcı içeriğinin işlem yapılmadan hemen önce bir azaltılmasıdır. Değişen adres bilgisi yine aynı saklayıcı içerisinde saklanır ve saklayıcının yeni içeriği ile adresleme gerçekleştirilir.(Şekil 10)
LD Rd,-X ; X'i bir azalt ve X'in gösterdiği bellek gözündeki veriyi Rd 'ye yaz. (Rd < - - (X-1) )

Şekil 2.10: Veri belleği dolaylı, önceden artırmalı adresleme
Veri Belleği Dolaylı Sonradan artırmalı
Bu adresleme modunda ise komutun işlenmesinin ardından saklayıcı içeriği bir artırılır ve yeni değer yine aynı saklayıcıda tutulur.(Şekil 11)
ST X+, Rr ; Rr'yi X'in işaret ettiği bellek gözüne yaz ardından X'i bir artır.

Şekil 11. Veri belleği dolaylı,sonradan artırmalı adresleme
Tanımlanmış Sabit Değerlerin Adreslenmesi
Bu adresleme modu, program belleği dolaylı adresleme modu olarak da adlandırılabilir. Bu adresleme şekli sadece LPM komutu tarafından kullanılır. Program belleğinin (Flash) adresi, 16 bitlik özel saklayıcılardan olan Z saklayıcısında tutulur. Program belleğinin bir satırı 16 bitlik olduğu için Z saklayıcısının en düşük anlamlı biti bu belleğin hangi sekizlisinin adresleneceğini gösterir. Eğer Z saklayıcısının en düşük anlamlı biti lojik 0 ise düşük anlamlı sekizli ,lojik 1 ise yüksek anlamlı sekizli adreslenir.(Şekil 12)
LPM komutu kullanıldığında okunan veri her zaman R0 saklayıcısına yerleştirir.

Şekil 12: Program belleğinde tanımlanmış sabitlerin adreslenmesi
Dolaylı Program Adresleme
IJMP ve ICALL komutları tarafından kullanılan adresleme modudur. Programın akışı Z saklayıcısının gösterdiği adresten itibaren devam eder.(Şekil 13)
IJMP ; Z'in gösterdiği yerden program akışı devam etsin.(PC=Z)

Şekil 13. Program belleği dolaylı adresleme
Bağıl Program Adresleme
RJMP ve RCALL komutları ile gerçeklenir. Komutta belirtilen kayıklık miktarı kadar (-2048 ile +2047 arası) program akışı kaydırılır. Dallanma komutları da bu adresleme modunu kullanırlar.(Şekil 14)
RJMP K ; Programın akışını k adet komut kadar kaydır.
BRMI K ; Negatif bayrağı bir ise K adet komut program akışını değiştirir

Şekil 14. Program belleği bağıl adresleme
6 - Reset ve Kesme
AT90S2313 11 farklı kesme kaynağına sahiptir. Her bir kesmeye ait ayrı bir kesme vektörü program belleğinde tutulmaktadır.(Tablo 2) Aynı zamanda her kesme için ayrı bir kesme izin biti mevcuttur. Bir kesmenin kabul edilebilmesi için hem ilgili kesmeye ait kesme izin biti hem de global kesme izin biti lojik 1 değerinde olmalıdır.

Tablo 2. Reset ve kesme vektörleri - Tabloyu daha yakında görmek için üzerine tıklayınız
Program belleğinin ilk 11 adresi otomatik olarak reset ve kesme vektörlerine ayrılmıştır. Bu vektörlerin tam listesi aşağıdaki tabloda verilmiştir.Listede düşük adreste bulunan kesme vektörleri daha önceliklidir.
6.1 - Reset Kaynakları
· Power-on reset
· Harici (dış) reset
· Watchdog reset (gözetleme reseti)
MCU resetlendiğinde bütün G/Ç saklayıcılarına ilk değerleri yüklenir ve program $000 adresinden itibaren çalışmaya başlar. Bu nedenle $000 adresinde RJMP program kodunun bulunması gereklidir (Reset kesme hizmet programının ilk adresine bağıl dallanma).Eğer program hiçbir zaman kesmeye izin vermiyorsa yani kesme vektörleri kullanılmıyorsa bu alanlara normal program kodu yerleştirilebilir. Aşağıdaki şekil 15'te reset lojiğine ilişkin devre şeması verilmiştir.

Şekil 15. AT90S2313 reset lojiği
Power-On Reset
Power-on Reset (POR) darbesi yonga üzerinde bulunan bir algılama devresi tarafından üretilir. Algılama seviyesi nominal olarak 2,2 Volt'tur.Vcc gerilimin algılama seviyesinin altında olduğu her durumda POR aktif haldedir. POR devresi başlangıç resetinin tetiklenmesinde kullanılabileceği gibi kaynak geriliminin yetersizliğinin ortaya çıkarılması için de kullanılabilir. Aslında POR, Vcc nin güvenli bir seviyenin altında olması halinde MCU nun zarar görmemesi için kullanılır.Aşağıda şekil 16 'te durum daha net olarak incelenebilir.

Şekil 16. MCU başlar , reset Vcc'ye bağlı
Vcc eşik gerilimine eriştiğinde POR devresi tarafından gecikme zamanlayıcısı resetlenir ve gecikme süresi başlatılmış olur. Gecikme süresi boyunca bir iç reset işareti oluşturularak MCU resetlenir.
MCU'nun başlaması dışarıdan reset kontrollü olarak da yapılabilir. Aşağıdaki şekil 17'da bu süreç verilmiştir.

Şekil 17. MCU başlar, dışarıdan reset kontrollü
Dış Reset
Dışarıdan (Reset)' ayağına yuygulanan bir lojik 0 işareti ile MCU reset-lenebilir. Dış reset işleyişi şekil 18 'de verilmiştir.

Şekil 18. Dış reset süreci
Watchdog Reset (Gözetleme Zamanlayıcısı Reseti)
Gözetleme zamanlayıcısı aktif halde iken süresinin aşması halinde bir saat çevrimi süresince bir darbe üretilir. Bu darbenin düşen kenarı ile gecikme zamanlayıcısı time-out süresini saymaya başlar. Bu süre dolana kadar bir iç reset işareti oluşturularak MCU resetlenir. Aşağıda şekil 19'da watchdog reset algılama sürecininin aşamaları verilmiştir.

Şekil 19. Watchdog reset süreci
6.2 - Kesme Yönetimi
AT90S2313 iki adet 8 bitlik kesme maskesi saklayıcısına sahiptir.Bunlar GIMSK (General Interrupt Mask Register) genel kesme maskesi saklayıcısı ve TIMSK (Timer/Counter Interrupt Mask Register) sayıcı/zamanlayıcı kesme maskesi saklayıcısıdır.
Bir kesme alındığında Durum saklayıcısındaki global kesme izin biti (I) sıfırlanır ve böylece bütün kesme izinleri kaldırılmış olur. Kesme hizmet programı içerisnde iken programcı istediği takdirde bu biti 1'leyerek kesme izinlerini verebilir.I biti kesmeden dön komutu ile otomatik olarak tekrar 1 yapılır.
7 - Komut Kümesi ve Proje geliştirme araçları
Mikrokontrolörlere ait komut kümesi ve geliştirme araçları en güncel şekilde üreticiden elde edilebilir. Komutların ve mikrokontrolörün çalışma biçimi de uygulamalı çalışma ile çok daha iyi öğrenilebilir.
Assembler ve editör gibi program geliştirme aracları, hata ayıklayıcı programlar , mikrokontrolörlere ait bilgi ve komut kümeleri üretici firmadan edinilebilir. Burada çalışmanın sınırlarını aşacağından kontrolöre ait daha detaylı özellikler verilmemiştir.
- Yorum yazmak için giriş yapın veya kayıt olun