Attiny2313'ün programlanması. Attiny2313'ün Programlanması Attiny2313 için bir program nasıl yazılır?

AVR RISC mimarisi:

RISC (İndirgenmiş Komut Seti Bilgisayarı). Bu mimari, çoğu 1 makine döngüsünde yürütülen geniş bir talimat kümesine sahiptir. Bundan, CISC mimarisine dayanan önceki mikrokontrolörlerle (örneğin, MCS51) karşılaştırıldığında, RISC mikrokontrolörlerinin 12 kat daha hızlı olduğu anlaşılmaktadır.

Veya belirli bir performans seviyesini temel alırsak, bu koşulu yerine getirmek için RISC (Attiny2313) tabanlı mikrodenetleyiciler 12 kat daha az jeneratör saat frekansına ihtiyaç duyar ve bu da güç tüketiminde önemli bir azalmaya yol açar. Bu sayede Attiny2313 üzerinde pil gücü kullanarak çeşitli cihazlar tasarlamak mümkün hale geliyor.

Operasyonel Depolama Cihazı (RAM) ve veri ve programların kalıcı belleği:

  • 10.000 yazma/silme tekrarı sağlayabilen 2 KB kendi kendine programlanabilen Flash program belleği.
  • 100.000 yazma/silme tekrarı sağlayabilen 128 Bayt EEPROM yazılabilir veri belleği.
  • 128 Bayt SRAM bellek (salt okunur RAM).
  • Program kodunu ve EEPROM verilerini korumak için işlevi kullanmak mümkündür.

Çevresel özellikler:

  1. Mikrodenetleyici Attiny2313 maksimum 256 katsayılı, ayrı olarak monte edilmiş bir ön ölçekleyiciye sahip sekiz bitlik bir zamanlayıcı sayacıyla donatılmıştır.
  2. Ayrı bir ön ölçekleyici, yakalama ve karşılaştırma devresine sahip on altı bitlik bir zamanlayıcı-sayıcı da bulunmaktadır. Zamanlayıcı-sayacı, harici bir sinyal kaynağından veya dahili bir sinyal kaynağından saatlenebilir.
  3. İki kanal. Hızlı PWM modülasyonu ve faz düzeltmeli PWM çalışma modu vardır.
  4. Dahili analog karşılaştırıcı.
  5. Dahili osilatörlü bekçi zamanlayıcısı (programlanabilir).
  6. Seri Evrensel Arayüz (USI).

Attiny2313'ün özel teknik göstergeleri:


  • Boşta- Bekleme modu. Bu durumda yalnızca merkezi işlemci çalışmayı durdurur. Boşta kalma, SPI'nin, analog karşılaştırıcının, A/D dönüştürücünün, sayaç zamanlayıcının, gözlemcinin veya kesme sisteminin çalışmasını etkilemez. Aslında olan tek şey CPU çekirdeği ile flash belleğin senkronizasyonunun durmasıdır. Attiny2313 mikrodenetleyici, harici veya dahili bir kesinti ile Boşta modundan normal çalışmaya döner.
  • Gücü kapat— Attiny2313 mikrodenetleyicinin güç tüketiminden fiilen kapatıldığı en ekonomik mod. Bu durumda saat üreteci durur ve tüm çevre birimleri kapatılır. Yalnızca harici bir kaynaktan gelen kesme işleme modülü etkin kalır. Bir kesinti algılandığında, Attiny2313 mikrokontrolcüsü Kapatma işleminden çıkar ve normal çalışmaya geri döner.
  • Yanında olmak– mikrokontrolör SLEE komutunu kullanarak bu güç tüketimi bekleme moduna geçer. Bu kapatmaya benzer; tek fark saatin çalışmaya devam etmesidir.

Attiny2313 mikrodenetleyicinin giriş-çıkış portları:

Mikrodenetleyici, belirli bir cihazı tasarlarken ortaya çıkan ihtiyaçlara göre programlanabilen 18 I/O piniyle donatılmıştır. Bu bağlantı noktalarının çıkış tamponları nispeten yüksek bir yüke dayanabilir.

  • Bağlantı Noktası A (PA2 - PA0) – 3 bit. Programlanabilir çekme dirençlerine sahip çift yönlü G/Ç bağlantı noktası.
  • Bağlantı Noktası B (PB7 - PB0) – 8 bit. Programlanabilir çekme dirençlerine sahip çift yönlü G/Ç bağlantı noktası.
  • Bağlantı Noktası D (PD6 - PD0) – 7 bit. Programlanabilir çekme dirençlerine sahip çift yönlü G/Ç bağlantı noktası.

Besleme voltajı aralığı:

Mikrodenetleyici, 1,8 ila 5,5 volt arasındaki besleme voltajıyla başarıyla çalışır. Akım tüketimi kontrolörün çalışma moduna bağlıdır:

Aktif mod:

  • 32 kHz saat frekansında ve 1,8 volt besleme voltajında ​​20 µA.
  • 1 MHz saat frekansında ve 1,8 volt besleme voltajında ​​​​300 µA.

Enerji tasarrufu modu:

  • 1,8 volt besleme voltajında ​​0,5 µA.

(3,6 Mb, indirilen: 5.958)

2 KB sistem tarafından programlanabilir Flash belleğe sahip 8 bit AVR mikro denetleyici

Özellikler:

  • AVR RISC mimarisi
  • AVR - yüksek kaliteli ve düşük güçlü RISC mimarisi
    Çoğu tek bir saat döngüsünde yürütülen 120 talimat
    32 adet 8 bitlik genel amaçlı çalışma kayıtları
    Tamamen statik mimari
  • RAM ve kalıcı program ve veri belleği
    10.000 yazma/silme döngüsüne dayanabilen, kendi kendine programlanabilen 2 KB Flash program belleği
    100.000 yazma/silme döngüsüne dayanabilen 128 Bayt sistem tarafından programlanabilir EEPROM veri belleği
    128 Bayt dahili SRAM belleği (statik RAM)
    Flash program belleği ve EEPROM veri belleğinin okunmasına karşı programlanabilir koruma
  • Çevresel özellikler
    Ayrı ön ölçekleyicili bir adet 8 bitlik zamanlayıcı/sayıcı
    Ayrı ön ölçekleyicili bir adet 16 bit zamanlayıcı/sayıcı, karşılaştırma devresi, yakalama devresi ve iki PWM kanalı
    Dahili analog karşılaştırıcı
    Dahili osilatörlü programlanabilir watchdog zamanlayıcısı
    USI - Evrensel Seri Arayüz
    Tam çift yönlü UART
  • Mikrodenetleyici Özel Nitelikleri
    Dahili debugWIRE hata ayıklayıcısı
    SPI portu üzerinden sistem içi programlama
    Harici ve dahili kesme kaynakları
    Düşük tüketim modları Boşta, Güç Kapalı ve Beklemede
    Geliştirilmiş açılış sıfırlama devresi
    Programlanabilir elektrik kesintisi algılama devresi
    Dahili kalibre edilmiş jeneratör
  • G/Ç bağlantı noktaları ve muhafaza tasarımı
    18 programlanabilir I/O hattı
    20 pinli PDIP, 20 pinli SOIC ve 32 pinli MLF paketleri
  • Besleme voltajı aralığı
    1,8'den 5,5 V'a
  • Çalışma frekansı
    0 - 16 MHz
  • Tüketim
    Aktif mod:
    1 MHz ve 1,8 V besleme voltajında ​​300 µA
    32 kHz'de 20 µA ve 1,8 V besleme gerilimi
    Düşük tüketim modu
    1,8 V besleme voltajında ​​0,5 µA

ATtiny2313 blok şeması:


Genel açıklama:

ATtiny2313, AVR RISC mimarisine sahip, düşük güçlü, 8 bitlik bir CMOS mikro denetleyicisidir. ATtiny2313, talimatları tek bir döngüde yürüterek 1 MHz saat hızında 1 MIPS performansına ulaşır ve tasarımcının güç-performans oranını optimize etmesine olanak tanır.

AVR çekirdeği, zengin bir talimat setini ve 32 genel amaçlı çalışma kaydını birleştirir. 32 kaydın tümü doğrudan Aritmetik Mantık Birimi'ne (ALU) bağlıdır ve tek bir talimatı yürütürken iki bağımsız kayda erişime izin verir. Sonuç olarak bu mimari, standart CISC mimarisine göre onlarca kat daha fazla performans sağlar.

ATtiny2313 aşağıdaki özelliklere sahiptir: 2 KB Flash programlanabilir program belleği, 128 bayt EEPROM veri belleği, 128 bayt SRAM (statik RAM), 18 genel amaçlı I/O hattı, 32 genel amaçlı çalışma kaydı, yerleşik için tek kablolu arayüz hata ayıklayıcı, karşılaştırma devrelerine sahip iki esnek zamanlayıcı/sayıcı, dahili ve harici kesme kaynakları, programlanabilir seri USART, başlatma koşulu dedektörlü evrensel seri arayüz, yerleşik osilatörlü programlanabilir gözlemci zamanlayıcı ve yazılımla başlatılan üç düşük güç modu. Bekleme modunda çekirdek durur ancak RAM, zamanlayıcılar/sayaçlar ve kesme sistemi çalışmaya devam eder. Güç kapatma modunda, kayıtlar değerlerini korur ancak jeneratör durur ve bir sonraki kesintiye veya donanım sıfırlamasına kadar tüm cihaz işlevleri devre dışı bırakılır. Bekleme modunda, cihazın geri kalanı boştayken ana osilatör çalışır. Bu, mikroişlemcinin boştayken gücü korurken çok hızlı bir şekilde başlatılmasını sağlar.

Cihaz, Atmel'in yüksek yoğunluklu, kalıcı bellek teknolojisi kullanılarak üretilmiştir. Yerleşik ISP Flash, sistemdeki program belleğini seri SPI arayüzü veya geleneksel kalıcı bellek programlayıcısı aracılığıyla yeniden programlamanıza olanak tanır. 8 bitlik RISC çekirdeğini kendi kendini programlayan Flash bellekle tek bir çipte birleştiren ATtiny2313, mikroişlemci sistem tasarımcısına daha fazla esneklik sağlayan güçlü bir mikro denetleyicidir.

ATTiny2313 mikrokontrolcüsü, zamanında oldukça başarılı olan eski AT90S2313 mikrokontrolcünün yeni serisinin yeniden canlandırılmasıdır. ATTiny2313, atasının geliştirilmiş bir versiyonudur. Ama aynı zamanda oldukça mütevazı bir çevreyi de miras aldı. Yani işlevsellik açısından ATTiny2313 mütevazı. Mikrodenetleyicinin iki versiyonu mevcuttur - normal (ATTiny2313) ve azaltılmış güçlü (ATTiny2313) V). Azaltılmış beslenme için bir indirimle ödeme yapmanız gerekir saat frekansı mikrodenetleyici (daha yavaş çalışma).

Genel özellikleri:

  • Üst düzey dillerde programlama için optimize edilmiş 120 talimat;
  • 32 genel amaçlı kayıt (bunu seviyorum);
  • hemen hemen her talimat jeneratörün 1 saat döngüsünde gerçekleştirilir, bu sayede performans 20 MIPS'e (saniyede 20 milyon işlem) ulaşır;
  • Programlar için 2 kilobayt flash bellek. Flash bellek doğrudan denetleyiciden (kendisinden) programlanabilir;
  • 128 bayt EEPROM (kalıcı olmayan bellek);
  • 128 bayt SRAM (rasgele erişim belleği).

Bu çevresel çipte ne var?

  • bir adet 8 bitlik zamanlayıcı/sayıcı;
  • bir adet 16 bitlik zamanlayıcı/sayaç;
  • dört PWM kanalı;
  • analog karşılaştırıcı;
  • Bekçi köpeği zamanlayıcısı;
  • USI Evrensel Seri Arayüz;
  • USART (bu bir COM RS232 bilgisayarıdır).

Özel hediyeler:

Güç frekansı:

1,8 – 5,5V (ATTiny2313V için) 10 MHz'e kadar
2,7 – 5,5V (ATTiny2313 için) 20 MHz'e kadar
Çalışma modunda, 1,8 V besleme ve 1 MHz ana osilatör frekansı ile 230 µA tüketir. Güç tasarrufu modunda, Kapatma 1,8V'de 1 µA'dan daha az enerji tüketir

Programlama

ATTiny2313 başka bir revizyondan sağ çıkmayı başardı ve bir mektup aldı A sonunda. Yenilikler arasında şunlara dikkat edilmelidir:
— Tüm bacaklarda dış kesintiler ortaya çıktı.
— Normal ve düşük voltajlı güç kaynağı arasındaki ayrım kaldırıldı. ATTiny2313A 1,8 ila 5,5V arasında çalıştırılabilir, ancak yalnızca 4 MHz (1,8 V için) ila 20 MHz arasındaki frekans kısıtlamalarına uymak gerekir.
— Akım tüketimi hem normal modda hem de enerji tasarrufu modlarında önemli ölçüde azaltıldı - sırasıyla 190 µA ve 0,1 µA.
Üstelik son revizyon sonucunda ATTiny2313, bir ağabey ATTiny4313'ü (A harfi olmadan) satın aldı. Ağabeyi, iki katı bellek (4 kB Flash, 256 bayt EEPROM, 256 bayt SRAM) dışında ATTiny2313A'ya benzer. Bu değişiklikler Atmel'in bu mikro denetleyiciyi desteklemeye devam etme niyetini gösteriyor.

ATTiny2313A ve ATTiny4313'ün yeni sürümlerinin kullanılabilirliğinin az olması ve anlaşılmaz fiyatları nedeniyle cihazlarım ATTiny2313'ün eski sürümü üzerinde geliştirilecek. Ancak yeni sürümler eski sürümlerle uyumlu olduğundan teorik olarak ürün yazılımının yeni mikrodenetleyiciler üzerinde çalışması gerekir.

Sonuçlar:

Herkes gibi AVR mikrodenetleyicileri ATTiny2313 serisi üretken ve ekonomiktir. Kart düzeni ve lehimleme için uygun bir SOIC kasasına sahiptir. Bacaklar arasındaki mesafeler nispeten büyüktür (hatta bitişik bacaklar arasında tahtaya bir iz bırakmayı bile başarabilirsiniz). Öğrenmesi kolay. Rusçada çok fazla edebiyat var. Önceki AT90S2313'ün büyük popülaritesinden dolayı ağ üzerinde tekrarlama için birçok ilginç devre geliştirildi. Ticari olarak yaygın olarak mevcuttur. Ucuz. Mikrodenetleyiciler üzerinde çalışmaya başlamak için gidilecek yer burasıdır. Eksiklikler arasında, bugün oldukça mütevazı çevre birimlerine dikkat çekmeye değer. Ve bir dezavantaj olarak, SOIC olayı biraz büyük (her ne kadar zaten kusurları araştırıyor olsam da). Küçük miktardaki bellek, ATTiny2313'te büyük ölçekli projeler oluşturmanıza izin vermez. Genel olarak, özel çevre birimleri gerektirmeyen küçük projeler için iyi bir yüksek performanslı kontrolördür. En iyi kullanılabilirlik ve düşük maliyet nedeniyle bunu cihazlarımda oldukça yaygın olarak kullanmayı planlıyorum.

Bugün daha basit bir mikrodenetleyici kullanmaya çalışacağız ATtiny2313 ve ona 16 karakterlik iki satır içeren bir karakter LCD ekranı bağlayın.

Ekranı bağlayacağız standart bir şekilde 4 bitlik yol.

Öncelikle mikrodenetleyiciyle başlayalım, çünkü önceki derslerden ekrana zaten çok aşinayız.

Denetleyici veri sayfasını açalım ATtiny2313 ve pin şemasını görelim

Bu denetleyicinin iki tür kasada mevcut olduğunu görüyoruz, ancak onu bir DIP paketinde aldığım için kasanın bu özel versiyonunu ele alacağız ve prensip olarak görünüş dışında pek farklılık göstermiyorlar, peki sayı nasıl bacak sayısı aynı - her biri 20 adet.

Üzerinde çalıştığımız ve çalışmaya devam edeceğimiz ATMega8 kontrol cihazının 28 ayağına kıyasla 20 ayağı olduğundan, dolayısıyla olasılıklar da daha az olacaktır.

Prensip olarak ATmega8'in sahip olduğu her şey burada, tek şey daha az sayıda bağlantı noktası pençesinin olması. Ancak önümüzdeki görev onu SPI veri yolu üzerinden başka bir denetleyiciye bağlamayı denemek olduğundan, bu bizi çok fazla üzmüyor.

Başka farklılıklar da var, ancak bunlar önemsizdir ve gerektiğinde onları tanıyacağız.

Şöyle bir devre kuralım (resmi büyütmek için resme tıklayın)

Ekran, D bağlantı noktasının pinlerine bağlanır. PD1 ve PD2 kontrol girişlerine, geri kalanı ise D4-D7 ekran modülünün pinlerine bağlanır.

TINY2313_LCD isminde bir proje oluşturalım, ekranı Atmega8'e bağlamak için projedeki ana modül dışındaki her şeyi içine aktaralım.

Elbette bazı şeylerin yeniden yapılması gerekecek. Bunu yapmak için hangi bacağın neye bağlı olduğunu dikkatlice incelemeniz gerekir. Ekranın E veri yolu PD2'ye ve RS veri yolu PD1'e bağlı, bu yüzden dosyada değişiklik yapalım lcd.h

#tanımlamake1LİMAN|=0b0000 01 00 // E satırını 1 olarak ayarladık

#tanımlamake0LİMAN&=0b1111 10 11 // E satırını 0 olarak ayarladık

#tanımlamakrs1LİMAN|=0b00000 01 0 // RS hattını 1'e (veri) ayarladık

#tanımlamakrs0LİMAN&=0b11111 10 1 // RS hattını 0'a ayarlayın (komut)

Kalın yazı tipinden de görebileceğimiz gibi, bu kadar köklü değişiklikler yaşamadık.

Şimdi bilgi girişleri. Burada PD3-PD6 bacaklarını kullanıyoruz, yani Atmega8 bağlantısına göre 1 puan kaydırılıyorlar, bu yüzden dosyadaki bir şeyi de düzelteceğiz. lcd.c işlevde yarım bayt gönder

LİMAN&=0b 1 0000 111; // DB4-DB7 girişlerindeki bilgileri silin, gerisini kendi haline bırakın

Ama hepsi bu değil. İletilen veriyi daha önce 4 birim kaydırmıştık, ancak şimdi yukarıdaki değişiklikler nedeniyle yalnızca 3 birim kaydırmamız gerekecek. Bu nedenle aynı fonksiyonda ilk satırı da düzelteceğiz.

C<<=3 ;

Değişikliklerin hepsi bu. Katılıyorum, o kadar da iyi değiller! Bu, her zaman evrensel kod yazmaya çalışmamız ve makro ikameler kullanmamız sayesinde elde edilir. Eğer bir anda buna vakit ayırmamış olsaydık, kütüphanemizin hemen hemen tüm fonksiyonlarındaki kodları düzeltmek zorunda kalacaktık.

Ana modülde, D portunun başlatılmasına dokunmuyoruz; ders 12'deki gibi tüm modülün çıkış durumuna geçmesine izin verin.

Projeyi bir araya getirmeye çalışalım ve önce sonucu Proteus'ta görelim, çünkü bunun için bir proje de yaptım, bu da Atmel Studio projesiyle birlikte ekteki arşivde olacak.

Bizim için her şey harika çalışıyor! Bu şekilde bir kontrolör için bir projeyi diğerine hızlı bir şekilde yeniden oluşturabilirsiniz.

Proteus çok iyi ama gerçek ayrıntılara bakmak her zaman daha güzel. Bu kontrolör için bir hata ayıklama panosu yapmadığım veya monte etmediğim için devrenin tamamı bir devre tahtası üzerine monte edildi. Programlayıcıyı bunun gibi standart bir konektörle bağlayacağız

İşte diyagramın tamamı

Burada her şey standart. RESET'e vb. çekme direnci.

Şimdi denetleyiciyi avrdude'da flaşlamadan önce denetleyiciyi seçmemiz ve flash belleğini okumamız gerekiyor.

Daha sonra SİGORTALAR sekmesine gidin ve sigortaları doğru şekilde ayarlayın. Kuvars rezonatörümüz olmadığı için sigortaları bu şekilde takıyoruz


Tepe