Ohjelmointi Attiny2313. Ohjelmointi Attiny2313 Kuinka kirjoittaa ohjelma attiny2313:lle

AVR RISC -arkkitehtuuri:

RISC (Reduced Instruction Set Computer). Tässä arkkitehtuurissa on suuri joukko ohjeita, joista suurin osa suoritetaan 1 konejaksossa. Tästä seuraa, että verrattuna aikaisempiin CISC-arkkitehtuuriin perustuviin mikro-ohjaimiin (esimerkiksi MCS51) RISC-mikro-ohjaimet ovat 12 kertaa nopeampia.

Tai jos otamme lähtökohtana tietyn suoritustason, niin tämän ehdon täyttämiseksi RISC-pohjaiset mikro-ohjaimet (Attiny2313) vaativat 12 kertaa pienemmän generaattorin kellotaajuuden, mikä vähentää merkittävästi virrankulutusta. Tältä osin on mahdollista suunnitella erilaisia ​​​​laitteita Attiny2313: lle akkuvirralla.

Operatiivinen tallennuslaite (RAM) ja haihtumaton tietojen ja ohjelmien muisti:

  • 2 kt itseohjelmoitava Flash-ohjelmamuisti, joka voi tarjota 10 000 kirjoitus-/poistotoistoa.
  • 128 tavua kirjoitettavaa EEPROM-tietomuistia, joka voi tarjota 100 000 kirjoitus-/poistotoistoa.
  • 128 tavua SRAM-muistia (vain luku-RAM).
  • Toimintoa voidaan käyttää ohjelmakoodin ja EEPROM-tietojen suojaamiseen.

Oheislaitteet:

  1. Mikro-ohjain Attiny2313 varustettu kahdeksanbittisellä ajastinlaskurilla, jossa on erikseen asennettu esiskaalaaja, jonka enimmäiskerroin on 256.
  2. Siellä on myös 16-bittinen ajastinlaskuri, jossa on erillinen esiskaalaaja, sieppaus- ja vertailupiiri. Ajastinlaskuri voidaan kellottaa joko ulkoisesta signaalilähteestä tai sisäisestä signaalilähteestä.
  3. Kaksi kanavaa. Käytössä on nopea PWM-modulaatio ja PWM vaihekorjauksella.
  4. Sisäinen analoginen komparaattori.
  5. Watchdog ajastin (ohjelmoitava) sisäisellä oskillaattorilla.
  6. Serial Universal Interface (USI).

Attiny2313:n erityiset tekniset indikaattorit:


  • Tyhjäkäynti— Lepotila. Tässä tapauksessa vain keskusprosessori lakkaa toimimasta. Tyhjäkäynti ei vaikuta SPI:n, analogisen vertailulaitteen, A/D-muuntimen, laskuriajastimen, vahtikoiran tai keskeytysjärjestelmän toimintaan. Itse asiassa kaikki, mitä tapahtuu, on, että suorittimen ytimen ja flash-muistin synkronointi pysähtyy. Attiny2313-mikro-ohjain palaa normaaliin toimintaan lepotilasta ulkoisen tai sisäisen keskeytyksen avulla.
  • Virran katkaisu— Taloudellisin tila, jossa Attiny2313-mikro-ohjain on todella kytketty pois päältä virrankulutuksesta. Tässä tilassa kellogeneraattori pysähtyy ja kaikki oheislaitteet sammuvat. Vain ulkoisesta lähteestä tuleva keskeytyksen käsittelymoduuli pysyy aktiivisena. Kun keskeytys havaitaan, Attiny2313-mikro-ohjain poistuu virrankatkaisusta ja palaa normaaliin toimintaan.
  • Valmiina– mikro-ohjain siirtyy tähän virrankulutuksen valmiustilaan SLEE-komennolla. Tämä on samanlainen kuin sammuttaminen, ainoa ero on, että kello jatkaa käyntiä.

Attiny2313-mikroohjaimen tulo-lähtöportit:

Mikrokontrolleri on varustettu 18 I/O-nastalla, jotka voidaan ohjelmoida tiettyä laitetta suunniteltaessa esiin tulevien tarpeiden mukaan. Näiden porttien lähtöpuskurit kestävät suhteellisen suuren kuormituksen.

  • Portti A (PA2 - PA0) – 3 bittiä. Kaksisuuntainen I/O-portti ohjelmoitavilla vetovastuksilla.
  • Portti B (PB7 - PB0) – 8 bittiä. Kaksisuuntainen I/O-portti ohjelmoitavilla vetovastuksilla.
  • Portti D (PD6 - PD0) – 7 bittiä. Kaksisuuntainen I/O-portti ohjelmoitavilla vetovastuksilla.

Syöttöjännitealue:

Mikro-ohjain toimii onnistuneesti syöttöjännitteellä 1,8 - 5,5 volttia. Virrankulutus riippuu säätimen toimintatilasta:

Aktiivinen tila:

  • 20 µA kellotaajuudella 32 kHz ja syöttöjännitteellä 1,8 volttia.
  • 300 µA kellotaajuudella 1 MHz ja syöttöjännitteellä 1,8 volttia.

Virransäästötila:

  • 0,5 µA 1,8 voltin syöttöjännitteellä.

(3,6 Mt, ladattu: 5 958)

8-bittinen AVR-mikro-ohjain, jossa on 2 kt:n järjestelmäohjelmoitava Flash-muisti

Ominaisuudet:

  • AVR RISC -arkkitehtuuri
  • AVR - korkealaatuinen ja pienitehoinen RISC-arkkitehtuuri
    120 käskyä, joista suurin osa suoritetaan yhdessä kellojaksossa
    32 8-bittistä yleiskäyttöistä työrekisteriä
    Täysin staattinen arkkitehtuuri
  • RAM ja haihtumaton ohjelma- ja datamuisti
    2 KB itseohjelmoitava Flash-ohjelmamuisti, joka kestää 10 000 kirjoitus-/poistojaksoa
    128 tavun järjestelmäohjelmoitava EEPROM-tietomuisti, joka kestää 100 000 kirjoitus-/poistojaksoa
    128 tavua sisäistä SRAM-muistia (staattinen RAM)
    Ohjelmoitava suojaus Flash-ohjelmamuistin ja EEPROM-tietomuistin lukemista vastaan
  • Perifeeriset ominaisuudet
    Yksi 8-bittinen ajastin/laskuri erillisellä esiskaalaimella
    Yksi 16-bittinen ajastin/laskuri erillisellä esiskaalaimella, vertaa piiriä, sieppauspiiriä ja kaksi PWM-kanavaa
    Sisäänrakennettu analoginen vertailulaite
    Ohjelmoitava vahtikoiran ajastin sisäänrakennetulla oskillaattorilla
    USI - Universal Serial Interface
    Full duplex UART
  • Mikro-ohjaimen erikoisominaisuudet
    Sisäänrakennettu debugWIRE-debuggeri
    Järjestelmän sisäinen ohjelmointi SPI-portin kautta
    Ulkoiset ja sisäiset keskeytyslähteet
    Vähäkulutustilat Idle, Power Down ja Standby
    Parannettu käynnistyksen nollauspiiri
    Ohjelmoitava sähkökatkon tunnistuspiiri
    Sisäänrakennettu kalibroitu generaattori
  • I/O-portit ja kotelon suunnittelu
    18 ohjelmoitavaa I/O-linjaa
    20 pin PDIP, 20 pin SOIC ja 32 pin MLF paketit
  • Syöttöjännitealue
    1,8 - 5,5 V
  • Toimintataajuus
    0-16 MHz
  • Kulutus
    Aktiivinen tila:
    300 µA 1 MHz ja 1,8 V syöttöjännitteellä
    20 µA 32 kHz:llä ja 1,8 V syöttöjännitteellä
    Pienen kulutuksen tila
    0,5 µA 1,8 V:n syöttöjännitteellä

ATtiny2313 lohkokaavio:


Yleinen kuvaus:

ATtiny2313 on pienitehoinen 8-bittinen CMOS-mikro-ohjain, jossa on AVR RISC -arkkitehtuuri. Suorittamalla käskyt yhdellä jaksolla ATtiny2313 saavuttaa 1 MIPS -suorituskyvyn 1 MHz:n kellotaajuudella, jolloin suunnittelija voi optimoida teho-suorituskykysuhteen.

AVR-ydin integroi runsaan käskysarjan ja 32 yleiskäyttöistä työrekisteriä. Kaikki 32 rekisteriä on kytketty suoraan aritmeettiseen logiikkayksikköön (ALU), mikä mahdollistaa pääsyn kahteen itsenäiseen rekisteriin suorittamalla yhtä käskyä. Tämän seurauksena tämä arkkitehtuuri mahdollistaa kymmeniä kertoja paremman suorituskyvyn kuin tavallinen CISC-arkkitehtuuri.

ATtiny2313:lla on seuraavat ominaisuudet: 2 KB Flash-ohjelmoitava ohjelmamuisti, 128 tavun EEPROM-tietomuisti, 128 tavun SRAM (staattinen RAM), 18 yleiskäyttöistä I/O-linjaa, 32 yleiskäyttöistä työrekisteriä, yksijohtiminen liitäntä sisäänrakennetulle debuggeri, kaksi joustavaa ajastinta/laskuria vertailupiireillä, sisäiset ja ulkoiset keskeytyslähteet, ohjelmoitava sarja-USART, yleinen sarjaliitäntä käynnistystilan tunnistimella, ohjelmoitava vahtikoira-ajastin sisäänrakennetulla oskillaattorilla ja kolme ohjelmistoalustaista virransäästötilaa. Idle-tilassa ydin pysähtyy, mutta RAM, ajastimet/laskurit ja keskeytysjärjestelmä toimivat edelleen. Sammutustilassa rekisterit säilyttävät arvonsa, mutta generaattori pysähtyy ja poistaa kaikki laitteen toiminnot käytöstä seuraavaan keskeytykseen tai laitteiston nollaukseen asti. Valmiustilassa pääoskillaattori toimii, kun muu laite on käyttämättömänä. Tämä mahdollistaa mikroprosessorin käynnistymisen erittäin nopeasti säilyttäen samalla tehon tyhjäkäynnillä.

Laite on valmistettu Atmelin korkeatiheyksisellä haihtumattomalla muistitekniikalla. Sisäänrakennetun ISP Flashin avulla voit ohjelmoida järjestelmän ohjelmamuistin uudelleen SPI-sarjaliitännän kautta tai perinteisellä haihtumattoman muistin ohjelmoijalla. Yhdistämällä 8-bittisen RISC-ytimen ja itseohjelmoivan Flash-muistin yhdeksi siruksi ATtiny2313 on tehokas mikro-ohjain, joka tarjoaa enemmän joustavuutta mikroprosessorijärjestelmän suunnittelijalle.

ATTiny2313-mikro-ohjain on elämys uuteen sarjaan vanhasta AT90S2313-mikro-ohjaimesta, joka oli aikansa varsin onnistunut. ATTiny2313 on parannettu versio esi-isänsä. Mutta hän peri myös melko vaatimattoman reuna-alueen. Toimivuuden suhteen ATTiny2313 on siis vaatimaton. Mikrokontrolleri on saatavana kahtena versiona - tavallisena (ATTiny2313) ja pienemmällä teholla (ATTiny2313) V). Vähennetystä ravinnosta joudut maksamaan alennuksella kellotaajuus mikro-ohjain (hitaampi toiminta).

Yleiset luonteenpiirteet:

  • 120 ohjelmointiin optimoitua ohjetta korkean tason kielillä;
  • 32 yleiskäyttöistä rekisteriä (rakastan tätä);
  • lähes jokainen käsky suoritetaan generaattorin 1 kellojaksossa, minkä ansiosta suorituskyky saavuttaa 20 MIPS:n (20 miljoonaa operaatiota sekunnissa);
  • 2 kilotavua flash-muistia ohjelmille. Flash-muisti voidaan ohjelmoida suoraan ohjaimesta (itse);
  • 128 tavua EEPROM (haihtumaton muisti);
  • 128 tavua SRAM (random access memory).

Mitä meillä on tässä oheispiirissä?

  • yksi 8-bittinen ajastin/laskuri;
  • yksi 16-bittinen ajastin/laskuri;
  • neljä PWM-kanavaa;
  • analoginen vertailija;
  • Watchdog ajastin;
  • USI Universal Serial Interface;
  • USART (tämä on tietokone COM RS232).

Erikoisherkkuja:

Teho, taajuus:

1,8 – 5,5 V (ATTIny2313V) 10 MHz asti
2,7 – 5,5 V (ATTIny2313) 20 MHz asti
Käyttötilassa se kuluttaa 230 µA jännitteellä 1,8 V ja pääoskillaattorin taajuudella 1 MHz. Virransäästötilassa virrankatkaisu kuluttaa alle 1 µA 1,8 V jännitteellä

Ohjelmointi

ATTiny2313 selvisi uudesta versiosta ja sai kirjeen A lopussa. Innovaatioista on syytä mainita:
— Ulkoisia keskeytyksiä esiintyi kaikissa jaloissa.
— Normaalin ja pienjännitesyötön välinen erotus on poistettu. ATTiny2313A voidaan syöttää 1,8 - 5,5 V, kun taas taajuusrajoituksia on noudatettava vain välillä 4 MHz (1,8 V) - 20 MHz.
— Virrankulutus on vähentynyt merkittävästi sekä normaalitilassa että energiansäästötiloissa - 190 µA ja 0,1 µA.
Lisäksi viimeisimmän version seurauksena ATTiny2313 hankki vanhemman veljen ATTiny4313:n (ilman A-kirjainta). Vanhempi veli on samanlainen kuin ATTiny2313A, lukuun ottamatta kaksinkertaista muistia (4 kB Flash, 256 tavua EEPROM, 256 tavua SRAM). Nämä muutokset osoittavat Atmelin aikomukset jatkaa tämän mikro-ohjaimen tukemista.

ATTiny2313A ja ATTiny4313 uusien versioiden heikon saatavuuden ja käsittämättömän hinnan vuoksi laitteeni kehitetään ATTiny2313:n vanhalla versiolla. Mutta koska uudet versiot ovat yhteensopivia vanhojen kanssa, laiteohjelmiston pitäisi teoreettisesti toimia uusissa mikro-ohjaimissa.

Johtopäätökset:

Kuten kaikki AVR-mikro-ohjaimet ATTiny2313-sarja on tuottava ja taloudellinen. Siinä on SOIC-kotelo, joka on kätevä levyasetteluun ja juottamiseen. Jalkojen väliset etäisyydet ovat suhteellisen suuret (voit jopa onnistua laittamaan laudalle jäljen vierekkäisten jalkojen väliin). Helppo oppia. Venäjänkielistä kirjallisuutta on paljon. Edeltäjänsä AT90S2313:n suuren suosion vuoksi verkkoon on kehitetty monia mielenkiintoisia piirejä toistoa varten. Laajalti kaupallisesti saatavilla. Edullinen. Tämä on oikea paikka aloittaa mikro-ohjainten opiskelu. Puutteista on syytä huomata melko vaatimattomat oheislaitteet nykyään. Ja haittapuolena on, että SOIC-kotelo on vähän iso (vaikka olen jo nipinäinen). Pienet muistimäärät eivät anna sinun luoda suuria projekteja ATTiny2313:lla. Yleensä hyvä korkean suorituskyvyn ohjain pieniin projekteihin, jotka eivät vaadi erityisiä oheislaitteita. Aion käyttää sitä varsin laajasti laitteissani parhaan saatavuuden ja alhaisen hinnan vuoksi.

Tänään yritämme käyttää yksinkertaisempaa mikro-ohjainta ATtiny2313 ja liitä siihen merkki LCD-näyttö, joka sisältää kaksi 16 merkin riviä.

Yhdistämme näytön tavallisella tavalla 4-bittinen tapa.

Ensin aloitetaan tietysti mikro-ohjaimesta, koska olemme jo hyvin tuttuja näyttöön aikaisemmista oppitunneista.

Avataan ohjaimen tietolehti ATtiny2313 ja katsotaanpa sen kärkipäätä

Näemme, että tämä ohjain on olemassa kahden tyyppisissä tapauksissa, mutta koska sain sen DIP-paketissa, harkitsemme tätä kotelon versiota, ja periaatteessa ne eivät eroa paljoa, paitsi ulkonäöltään, joten kuinka numero jaloista on sama - 20 kpl.

Koska jalkaa on 20 verrattuna ATMega8-ohjaimen 28 jalkaan, joiden parissa olemme työstäneet koko ajan ja jatkamme työtä, niin mahdollisuuksia on myös vähemmän.

Periaatteessa kaikki mitä ATmega8:lla oli, on täällä, ainoa asia on, että porttikynsiä on vähemmän. Mutta koska edessämme oleva tehtävä on yrittää yhdistää se SPI-väylän kautta toiseen ohjaimeen, tämä ei masenna meitä paljon.

Joitakin muita eroja on, mutta ne ovat pieniä ja tutustumme niihin tarvittaessa.

Kootaanpa tällainen piiri (klikkaa kuvaa suurentaaksesi kuvaa)

Näyttö on kytketty portin D nastoihin. PD1 ja PD2 ohjaustuloihin ja loput näyttömoduulin D4-D7 nastoihin.

Luodaan projekti nimeltä TINY2313_LCD, siirretään siihen kaikki paitsi projektin päämoduuli näytön liittämiseksi Atmega8:aan.

Tietysti joitain asioita pitää tehdä uusiksi. Tätä varten sinun on tutkittava huolellisesti, mikä jalka on kytketty mihin. Näytön E-väylä on kytketty PD2:een ja RS-väylä PD1:een, joten tehdään muutoksia tiedostoon lcd.h

#määritelläe1PORTD|=0b0000 01 00 // aseta rivi E arvoon 1

#määritelläe0PORTD&=0b1111 10 11 // aseta rivin E arvoksi 0

#määritellärs1PORTD|=0b00000 01 0 // aseta RS-riviksi 1 (data)

#määritellärs0PORTD&=0b11111 10 1 // aseta RS-rivi 0:ksi (komento)

Kuten lihavoidusta fontista nähdään, meillä ei ole ollut näin rajuja muutoksia.

Nyt tiedot syötetään. Tässä käytetään jalkoja PD3-PD6, eli niitä on siirretty 1 pisteen verrattuna Atmega8-yhteyteen, joten korjaamme myös jotain tiedostossa lcd.c toiminnassa lähettää puolitavua

PORTD&=0b 1 0000 111; // poista syötteiden DB4-DB7 tiedot, jätä loput rauhaan

Mutta siinä ei vielä kaikki. Siirsimme aiemmin lähetettyä dataa 4:llä, mutta nyt yllä olevien muutosten vuoksi meidän on siirrettävä sitä vain 3:lla. Siksi samassa funktiossa korjaamme myös aivan ensimmäisen rivin

c<<=3 ;

Siinä kaikki muutokset. Samaa mieltä, ne eivät ole niin mahtavia! Tämä saavutetaan sillä, että yritämme aina kirjoittaa universaalia koodia ja käyttää makrokorvauksia. Jos emme olisi käyttäneet aikaa tähän kerralla, olisimme joutuneet korjaamaan koodin lähes kaikissa kirjastomme toiminnoissa.

Päämoduulissa emme kosketa portin D alustusta, vaan anna koko moduulin mennä lähtötilaan, kuten oppitunnissa 12.

Yritetään koota projekti ja nähdään ensin tulos Proteuksessa, koska tein sille myös projektin, joka tulee olemaan myös liitteenä olevassa arkistossa Atmel Studion projektin kanssa

Meillä kaikki toimii loistavasti! Näin voit nopeasti muokata projektin yhdelle ohjaimelle toista varten.

Proteus on erittäin hyvä, mutta on aina mukavampaa katsoa todellisia yksityiskohtia. Koko piiri koottiin leipälevylle, koska en tehnyt tai koota debug-korttia tälle ohjaimelle. Yhdistämme ohjelmoijan tällaisen vakioliittimen kautta

Tässä koko kaavio

Täällä kaikki on vakiona. Vetovastus RESETiin jne.

Nyt ennen ohjaimen vilkkumista avrdudessa meidän on valittava ohjain ja luettava sen flash-muisti

Siirry sitten FUSES-välilehdelle ja aseta sulakkeet oikein. Koska meillä ei ole kvartsiresonaattoria, asennamme sulakkeet tällä tavalla


Yläosa