Programmering av Attiny2313. Programmere Attiny2313 Hvordan skrive et program for attiny2313

AVR RISC-arkitektur:

RISC (Reduced Instruction Set Computer). Denne arkitekturen har et stort sett med instruksjoner, hvorav de fleste utføres i 1 maskinsyklus. Det følger at sammenlignet med tidligere mikrokontrollere basert på CISC-arkitektur (for eksempel MCS51), er RISC-mikrokontrollere 12 ganger raskere.

Eller hvis vi tar et visst ytelsesnivå som grunnlag, så for å oppfylle denne betingelsen, krever mikrokontrollere basert på RISC (Attiny2313) 12 ganger mindre generatorklokkefrekvens, noe som fører til en betydelig reduksjon i strømforbruket. I denne forbindelse blir det mulig å designe ulike enheter på Attiny2313 ved å bruke batteristrøm.

Operational Storage Device (RAM) og ikke-flyktig minne for data og programmer:

  • 2 KB selvprogrammerbart Flash-programminne som kan gi 10 000 skrive-/sletterepetisjoner.
  • 128 byte med EEPROM-skrivbart dataminne som kan gi 100 000 skrive-/sletterepetisjoner.
  • 128 byte SRAM-minne (skrivebeskyttet RAM).
  • Det er mulig å bruke funksjonen for å beskytte programkode og EEPROM-data.

Perifere egenskaper:

  1. Mikrokontroller Attiny2313 utstyrt med en åtte-bits timer-teller med en separat installert prescaler med en maksimal koeffisient på 256.
  2. Det er også en seksten-bits timer-teller med en separat forhåndsskalering, fangst- og sammenligningskrets. Timer-telleren kan klokkes enten fra en ekstern signalkilde eller fra en intern.
  3. To kanaler. Det er en driftsmodus med rask PWM-modulasjon og PWM med fasekorreksjon.
  4. Intern analog komparator.
  5. Watchdog timer (programmerbar) med intern oscillator.
  6. Serial Universal Interface (USI).

Spesielle tekniske indikatorer for Attiny2313:


  • Tomgang— Hvilemodus. I dette tilfellet slutter bare sentralprosessoren å fungere. Inaktiv påvirker ikke driften av SPI, analog komparator, A/D-omformer, tellertimer, vakthund eller avbruddssystem. Faktisk er alt som skjer at synkroniseringen av CPU-kjernen og flashminnet stopper. Attiny2313-mikrokontrolleren går tilbake til normal drift fra hvilemodus ved et eksternt eller internt avbrudd.
  • Power-down— Den mest økonomiske modusen, der Attiny2313-mikrokontrolleren faktisk er slått av fra strømforbruket. I denne tilstanden stopper klokkegeneratoren og alle eksterne enheter er slått av. Bare avbruddsbehandlingsmodulen fra en ekstern kilde forblir aktiv. Når et avbrudd oppdages, avslutter Attiny2313-mikrokontrolleren Power-down og går tilbake til normal drift.
  • Vent litt– mikrokontrolleren bytter til denne strømforbrukets standby-modus ved å bruke SLEE-kommandoen. Dette ligner på å slå av, den eneste forskjellen er at klokken fortsetter å gå.

Inn- og utgangsporter på Attiny2313 mikrokontrolleren:

Mikrokontrolleren er utstyrt med 18 I/O-pinner, som kan programmeres basert på behovene som oppstår ved utforming av en spesifikk enhet. Utgangsbufferne til disse portene tåler en relativt høy belastning.

  • Port A (PA2 - PA0) – 3 bits. Toveis I/O-port med programmerbare pull-up motstander.
  • Port B (PB7 - PB0) – 8 bits. Toveis I/O-port med programmerbare pull-up motstander.
  • Port D (PD6 - PD0) – 7 bits. Toveis I/O-port med programmerbare pull-up motstander.

Forsyningsspenningsområde:

Mikrokontrolleren fungerer vellykket med en forsyningsspenning fra 1,8 til 5,5 volt. Strømforbruk avhenger av driftsmodusen til kontrolleren:

Aktiv modus:

  • 20 µA ved en klokkefrekvens på 32 kHz og en forsyningsspenning på 1,8 volt.
  • 300 µA ved en klokkefrekvens på 1 MHz og en forsyningsspenning på 1,8 volt.

Strømsparingsmodus:

  • 0,5 µA ved en forsyningsspenning på 1,8 volt.

(3,6 Mb, lastet ned: 5 958)

8-bit AVR mikrokontroller med 2 KB systemprogrammerbart Flash-minne

Kjennetegn:

  • AVR RISC-arkitektur
  • AVR - RISC-arkitektur av høy kvalitet og lav effekt
    120 instruksjoner, hvorav de fleste utføres i en klokkesyklus
    32 8-biters generelle arbeidsregistre
    Helt statisk arkitektur
  • RAM og ikke-flyktig program- og dataminne
    2 KB selvprogrammerbart Flash-programminne som tåler 10 000 skrive-/slettesykluser
    128 byte systemprogrammerbart EEPROM-dataminne som tåler 100 000 skrive-/slettesykluser
    128 byte med innebygd SRAM-minne (statisk RAM)
    Programmerbar beskyttelse mot lesing av Flash-programminne og EEPROM-dataminne
  • Perifere egenskaper
    Én 8-bits timer/teller med separat prescaler
    Én 16-bits tidtaker/teller med separat forhåndsskaler, sammenlignkrets, fangekrets og to PWM-kanaler
    Innebygd analog komparator
    Programmerbar watchdog timer med innebygd oscillator
    USI - Universal Serial Interface
    Full dupleks UART
  • Mikrokontroller spesialfunksjoner
    Innebygd debugWIRE debugger
    Systemprogrammering via SPI-port
    Eksterne og interne avbruddskilder
    Lavt forbruksmoduser Idle, Power-down og Standby
    Forbedret tilbakestillingskrets ved oppstart
    Programmerbare strømbrudddeteksjonskretser
    Innebygd kalibrert generator
  • I/O-porter og husdesign
    18 programmerbare I/O-linjer
    20-pinners PDIP-, 20-pinners SOIC- og 32-pinners MLF-pakker
  • Forsyningsspenningsområde
    fra 1,8 til 5,5 V
  • Driftsfrekvens
    0 - 16 MHz
  • Forbruk
    Aktiv modus:
    300 µA ved 1 MHz og 1,8 V forsyningsspenning
    20 µA ved 32 kHz og 1,8 V forsyningsspenning
    Lavt forbruksmodus
    0,5 µA ved 1,8 V forsyningsspenning

ATtiny2313 blokkdiagram:


Generell beskrivelse:

ATtiny2313 er en laveffekts 8-bits CMOS-mikrokontroller med AVR RISC-arkitektur. Ved å utføre instruksjoner i en enkelt syklus, oppnår ATtiny2313 1 MIPS-ytelse ved 1 MHz klokkehastighet, slik at designeren kan optimere kraft-til-ytelse-forholdet.

AVR-kjernen integrerer et rikt instruksjonssett og 32 generelle arbeidsregistre. Alle 32 registre er direkte koblet til den aritmetiske logiske enheten (ALU), som gir tilgang til to uavhengige registre mens du utfører en enkelt instruksjon. Som et resultat tillater denne arkitekturen titalls ganger høyere ytelse enn standard CISC-arkitektur.

ATtiny2313 har følgende egenskaper: 2 KB Flash-programmerbart programminne, 128 byte EEPROM-dataminne, 128 byte SRAM (statisk RAM), 18 I/O-linjer for generell bruk, 32 arbeidsregistre for generell bruk, entrådsgrensesnitt for det innebygde debugger, to fleksible timer/teller med sammenligningskretser, interne og eksterne avbruddskilder, programmerbar seriell USART, universell seriell grensesnitt med starttilstandsdetektor, programmerbar watchdog-timer med innebygd oscillator, og tre programvareinitialiserte laveffektmoduser. I hvilemodus stopper kjernen, men RAM, timere/tellere og avbruddssystemet fortsetter å fungere. I Power-down-modus beholder registrene sine verdier, men generatoren stopper, og deaktiverer alle enhetsfunksjoner til neste avbrudd eller tilbakestilling av maskinvare. I standby-modus kjører masteroscillatoren mens resten av enheten er inaktiv. Dette gjør at mikroprosessoren kan starte opp veldig raskt samtidig som den opprettholder strømmen når den er inaktiv.

Enheten er produsert ved hjelp av ikke-flyktig minneteknologi med høy tetthet fra Atmel. Den innebygde ISP Flash lar deg omprogrammere programminnet i systemet via et serielt SPI-grensesnitt eller med en konvensjonell ikke-flyktig minneprogrammerer. Ved å kombinere en 8-bits RISC-kjerne med selvprogrammerende Flash-minne til en enkelt brikke, er ATtiny2313 en kraftig mikrokontroller som gir større fleksibilitet til mikroprosessorsystemdesigneren.

ATTiny2313 mikrokontrolleren er en gjenopplivning i en ny serie av den gamle AT90S2313 mikrokontrolleren, som var ganske vellykket i sin tid. ATTiny2313 er en forbedret versjon av sin stamfar. Men han arvet også en ganske beskjeden periferi. Så når det gjelder funksjonalitet, er ATTiny2313 beskjeden. Mikrokontrolleren er tilgjengelig i to versjoner - vanlig (ATTiny2313) og med redusert effekt (ATTiny2313 V). For redusert ernæring må du betale med en degradering klokkefrekvens mikrokontroller (langsommere drift).

Generelle egenskaper:

  • 120 instruksjoner optimalisert for programmering på høynivåspråk;
  • 32 registre for generelle formål (jeg elsker dette);
  • nesten hver instruksjon utføres i 1 klokkesyklus av generatoren, på grunn av hvilken ytelsen når 20 MIPS (20 millioner operasjoner per sekund);
  • 2 kilobyte flash-minne for programmer. Flash-minne kan programmeres direkte fra kontrolleren (selv);
  • 128 byte EEPROM (ikke-flyktig minne);
  • 128 byte SRAM (Random Access Memory).

Hva har vi om bord på denne perifere brikken?

  • en 8-bits timer/teller;
  • en 16-bits timer/teller;
  • fire PWM-kanaler;
  • analog komparator;
  • Watchdog timer;
  • USI Universal Serial Interface;
  • USART (dette er en datamaskin COM RS232).

Spesielle godbiter:

Strøm, frekvens:

1,8 – 5,5 V (for ATTiny2313V) opptil 10 MHz
2,7 – 5,5V (for ATTiny2313) opp til 20 MHz
I driftsmodus bruker den 230 µA med en forsyning på 1,8 V og en masteroscillatorfrekvens på 1 MHz. I strømsparingsmodus bruker Power-down mindre enn 1 µA ved 1,8V

Programmering

ATTiny2313 klarte å overleve en ny revisjon og skaffet seg et brev EN på slutten. Blant innovasjonene bør det bemerkes:
— Ytre avbrudd dukket opp på alle beina.
— Skillet mellom normal og lavspent strømforsyning er fjernet. ATTiny2313A kan drives fra 1,8 til 5,5V, mens det kun er nødvendig å overholde frekvensrestriksjoner fra 4 MHz (for 1,8 V) til 20 MHz.
— Strømforbruket er betydelig redusert, både i normalmodus og i energisparemodus - henholdsvis 190 µA og 0,1 µA.
Dessuten, som et resultat av den siste revisjonen, kjøpte ATTiny2313 en eldre bror ATTiny4313 (uten bokstaven A). Den eldre broren ligner på ATTiny2313A, med unntak av dobbelt så mye minne (4 kB Flash, 256 byte EEPROM, 256 byte SRAM). Disse endringene viser Atmels intensjoner om å fortsette å støtte denne mikrokontrolleren.

På grunn av den dårlige tilgjengeligheten og den uforståelige prisen på de nye versjonene av ATTiny2313A og ATTiny4313, vil enhetene mine bli utviklet på den gamle versjonen av ATTiny2313. Men siden nye versjoner er kompatible med gamle, teoretisk sett, bør fastvaren fungere på nye mikrokontrollere.

Konklusjoner:

Som alle AVR mikrokontrollere ATTiny2313-serien er produktiv og økonomisk. Den har et SOIC-hus som er praktisk for brettoppsett og lodding. Avstandene mellom bena er relativt store (du kan til og med klare å sette spor på brettet mellom tilstøtende ben). Lett å lære. Det er mye litteratur på russisk. På grunn av den store populariteten til forgjengeren AT90S2313, har mange interessante kretser blitt utviklet på nettverket for repetisjon. Allment tilgjengelig kommersielt. Rimelig. For å begynne å studere mikrokontrollere, er dette stedet å være. Blant manglene er det verdt å merke seg de ganske beskjedne periferiutstyrene i dag. Og som en ulempe er SOIC-saken litt stor (selv om jeg allerede lurer). Små mengder minne vil ikke tillate deg å lage store prosjekter på ATTiny2313. Generelt en god høyytelseskontroller for små prosjekter som ikke krever spesielle periferiutstyr. Jeg planlegger å bruke det ganske mye i enhetene mine på grunn av den beste tilgjengeligheten og lave kostnadene.

I dag skal vi prøve å bruke en enklere mikrokontroller ATtiny2313 og koble til en LCD-skjerm med tegn som inneholder to linjer med 16 tegn.

Vi kobler til skjermen på en standard måte 4-bits måte.

Først, la oss starte, selvfølgelig, med mikrokontrolleren, siden vi allerede er veldig kjent med skjermen fra tidligere leksjoner.

La oss åpne kontrolldataarket ATtiny2313 og la oss se dens pinout

Vi ser at denne kontrolleren finnes i to typer tilfeller, men siden jeg fikk den i en DIP-pakke, vil vi vurdere akkurat denne versjonen av saken, og i prinsippet skiller de seg ikke så mye, bortsett fra i utseende, så hvordan antallet av ben er det samme - 20 hver.

Siden det er 20 ben sammenlignet med de 28 benene til ATMega8-kontrolleren, som vi har jobbet med hele tiden og vil fortsette å jobbe med, vil det følgelig også være færre muligheter.

I prinsippet er alt som ATmega8 hadde her, det eneste er at det er færre portklør. Men siden oppgaven som ligger foran oss er å prøve å koble den via SPI-bussen med en annen kontroller, deprimerer ikke dette oss mye.

Det er noen andre forskjeller, men de er små, og vi vil bli kjent med dem etter behov.

La oss sette sammen en krets som dette (klikk på bildet for å forstørre bildet)

Displayet er koblet til pinnene til port D. PD1 og PD2 er til kontrollinngangene, og resten er koblet til pinnene til displaymodulen D4-D7.

La oss lage et prosjekt med navnet TINY2313_LCD, overføre alt til det bortsett fra hovedmodulen fra prosjektet for å koble skjermen til Atmega8.

Noen ting må selvfølgelig gjøres om. For å gjøre dette, må du nøye studere hvilket ben som er koblet til hva. E-bussen til skjermen er koblet til PD2, og RS-bussen er koblet til PD1, så la oss gjøre endringer i filen lcd.h

#defineree1PORTD|=0b0000 01 00 // sett linje E til 1

#defineree0PORTD&=0b1111 10 11 // sett linje E til 0

#definerers1PORTD|=0b00000 01 0 // sett RS-linjen til 1 (data)

#definerers0PORTD&=0b11111 10 1 // sett RS-linjen til 0 (kommando)

Som vi kan se av den fete skriften har vi ikke hatt så drastiske endringer.

Nå informasjonsinnganger. Her bruker vi ben PD3-PD6, det vil si at de er forskjøvet med 1 poeng i forhold til koblingen til Atmega8, så vi skal også rette noe i filen lcd.c i funksjon sendhalfbyte

PORTD&=0b 1 0000 111; // slett informasjon om innganger DB4-DB7, la resten være

Men det er ikke alt. Vi har tidligere forskjøvet de overførte dataene med 4, men nå, på grunn av endringene ovenfor, vil vi bare måtte forskyve dem med 3. Derfor vil vi i samme funksjon også korrigere den aller første linjen

c<<=3 ;

Det er alle endringene. Enig, de er ikke så flotte! Dette oppnås ved at vi alltid prøver å skrive universell kode og bruke makroerstatninger. Hvis vi ikke hadde brukt tid på dette på en gang, hadde vi måttet korrigere koden i nesten alle funksjonene i biblioteket vårt.

I hovedmodulen berører vi ikke initialiseringen av port D; la hele modulen gå inn i utgangstilstanden, som i leksjon 12.

La oss prøve å sette sammen prosjektet og først se resultatet i Proteus, siden jeg også laget et prosjekt for det, som også vil ligge i vedlagte arkiv med prosjektet til Atmel Studio

Alt fungerer utmerket for oss! Slik kan du raskt gjenskape et prosjekt for en kontroller for en annen.

Proteus er veldig bra, men det er alltid hyggeligere å se på ekte detaljer. Hele kretsen ble satt sammen på et breadboard, siden jeg ikke lagde eller satte sammen et debug-kort for denne kontrolleren. Vi vil koble programmereren via en standard kontakt som denne

Her er hele diagrammet

Alt er standard her. Pull-up motstand til RESET osv.

Nå, før vi blinker kontrolleren i avrdude, må vi velge kontrolleren og lese flashminnet

Gå deretter til fanen SIKRINGER og still inn sikringene riktig. Siden vi ikke har kvartsresonator, installerer vi sikringene på denne måten


Topp