Programmera Attiny2313. Programmera Attiny2313 Hur man skriver ett program för attiny2313

AVR RISC-arkitektur:

RISC (Reduced Instruction Set Computer). Denna arkitektur har en stor uppsättning instruktioner, varav de flesta exekveras i en maskincykel. Det följer att jämfört med tidigare mikrokontroller baserade på CISC-arkitektur (till exempel MCS51), är RISC-mikrokontroller 12 gånger snabbare.

Eller om vi tar en viss prestandanivå som grund, då för att uppfylla detta villkor kräver mikrokontroller baserade på RISC (Attiny2313) 12 gånger mindre generatorklockfrekvens, vilket leder till en betydande minskning av strömförbrukningen. I detta avseende blir det möjligt att designa olika enheter på Attiny2313 med batterikraft.

Operational Storage Device (RAM) och icke-flyktigt minne för data och program:

  • 2 KB självprogrammerbart Flash-programminne som kan ge 10 000 skriv/raderingsrepetitioner.
  • 128 byte EEPROM skrivbart dataminne som kan ge 100 000 skriv/raderingsupprepningar.
  • 128 byte SRAM-minne (skrivskyddat RAM).
  • Det är möjligt att använda funktionen för att skydda programkod och EEPROM-data.

Perifera egenskaper:

  1. Mikrokontroller Attiny2313 utrustad med en åttabitars timerräknare med en separat installerad förskalare med en maximal koefficient på 256.
  2. Det finns också en sexton-bitars timerräknare med en separat förskalare, fånga och jämförelsekrets. Timerräknaren kan klockas antingen från en extern signalkälla eller från en intern.
  3. Två kanaler. Det finns ett driftläge med snabb PWM-modulering och PWM med faskorrigering.
  4. Intern analog komparator.
  5. Watchdog-timer (programmerbar) med intern oscillator.
  6. Serial Universal Interface (USI).

Särskilda tekniska indikatorer för Attiny2313:


  • På tomgång— Viloläge. I det här fallet slutar bara den centrala processorn att fungera. Idle påverkar inte driften av SPI, analog komparator, A/D-omvandlare, räknaretimer, watchdog eller avbrottssystem. Faktum är att allt som händer är att synkroniseringen av CPU-kärnan och flashminnet stoppas. Attiny2313-mikrokontrollern återgår till normal drift från viloläge genom ett externt eller internt avbrott.
  • Strömavbrott— Det mest ekonomiska läget, där Attiny2313-mikrokontrollern faktiskt är avstängd från strömförbrukning. I detta tillstånd stannar klockgeneratorn och all kringutrustning stängs av. Endast avbrottsbearbetningsmodulen från en extern källa förblir aktiv. När ett avbrott upptäcks, avslutar Attiny2313-mikrokontrollern Power-down och återgår till normal drift.
  • Står fast vid– mikrokontrollern växlar till detta strömförbrukningsberedskapsläge med SLEE-kommandot. Detta liknar att stänga av, den enda skillnaden är att klockan fortsätter att gå.

Ingångs-utgångsportar på Attiny2313 mikrokontroller:

Mikrokontrollern är utrustad med 18 I/O-stift, som kan programmeras utifrån de behov som uppstår vid design av en specifik enhet. Utgångsbuffertarna från dessa portar tål en relativt hög belastning.

  • Port A (PA2 - PA0) – 3 bitar. Dubbelriktad I/O-port med programmerbara pull-up-motstånd.
  • Port B (PB7 - PB0) – 8 bitar. Dubbelriktad I/O-port med programmerbara pull-up-motstånd.
  • Port D (PD6 - PD0) – 7 bitar. Dubbelriktad I/O-port med programmerbara pull-up-motstånd.

Matningsspänningsområde:

Mikrokontrollern fungerar framgångsrikt med en matningsspänning från 1,8 till 5,5 volt. Strömförbrukningen beror på styrenhetens driftläge:

Aktivt läge:

  • 20 µA vid en klockfrekvens på 32 kHz och en matningsspänning på 1,8 volt.
  • 300 µA vid en klockfrekvens på 1 MHz och en matningsspänning på 1,8 volt.

Strömsparläge:

  • 0,5 µA vid en matningsspänning på 1,8 volt.

(3,6 Mb, nedladdat: 5 958)

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

Egenskaper:

  • AVR RISC-arkitektur
  • AVR - RISC-arkitektur av hög kvalitet och låg effekt
    120 instruktioner, varav de flesta exekveras i en klockcykel
    32 8-bitars arbetsregister för allmänna ändamål
    Helt statisk arkitektur
  • RAM och icke-flyktigt program- och dataminne
    2 KB självprogrammerbart Flash-programminne som klarar 10 000 skriv-/raderingscykler
    128 byte systemprogrammerbart EEPROM-dataminne som klarar 100 000 skriv-/raderingscykler
    128 byte inbyggt SRAM-minne (statiskt RAM)
    Programmerbart skydd mot läsning av Flash-programminne och EEPROM-dataminne
  • Perifera egenskaper
    En 8-bitars timer/räknare med separat förskalare
    En 16-bitars timer/räknare med separat förskalare, jämförkrets, fångstkrets och två PWM-kanaler
    Inbyggd analog komparator
    Programmerbar watchdog-timer med inbyggd oscillator
    USI - Universal Serial Interface
    Full duplex UART
  • Mikrokontroller specialfunktioner
    Inbyggd debugWIRE debugger
    Systemprogrammering via SPI-port
    Externa och interna avbrottskällor
    Lågförbrukningslägen Idle, Power-down och Standby
    Förbättrad återställningskrets vid start
    Programmerbar krets för upptäckt av strömavbrott
    Inbyggd kalibrerad generator
  • I/O-portar och husdesign
    18 programmerbara I/O-linjer
    20 pin PDIP, 20 pin SOIC och 32 pin MLF paket
  • Matningsspänningsområde
    från 1,8 till 5,5 V
  • Arbetsfrekvens
    0 - 16 MHz
  • Konsumtion
    Aktivt läge:
    300 µA vid 1 MHz och 1,8 V matningsspänning
    20 µA vid 32 kHz och 1,8 V matningsspänning
    Lågförbrukningsläge
    0,5 µA vid 1,8 V matningsspänning

ATtiny2313 blockschema:


Allmän beskrivning:

ATtiny2313 är en lågeffekts 8-bitars CMOS-mikrokontroller med AVR RISC-arkitektur. Genom att utföra instruktioner i en enda cykel uppnår ATtiny2313 1 MIPS-prestanda vid 1 MHz klockhastighet, vilket gör att konstruktören kan optimera förhållandet mellan effekt och prestanda.

AVR-kärnan integrerar en rik instruktionsuppsättning och 32 allmänna arbetsregister. Alla 32 register är direkt anslutna till den aritmetiska logiska enheten (ALU), vilket ger tillgång till två oberoende register samtidigt som en enda instruktion utförs. Som ett resultat tillåter denna arkitektur tiotals gånger högre prestanda än standard CISC-arkitektur.

ATtiny2313 har följande egenskaper: 2 KB Flash-programmerbart programminne, 128 byte EEPROM-dataminne, 128 byte SRAM (statiskt RAM), 18 generella I/O-linjer, 32 allmänna arbetsregister, entrådsgränssnitt för det inbyggda debugger, två flexibla timer/räknare med jämförelsekretsar, interna och externa avbrottskällor, programmerbar seriell USART, universellt seriellt gränssnitt med starttillståndsdetektor, programmerbar watchdog-timer med inbyggd oscillator och tre mjukvaruinitierade lågeffektlägen. I viloläge stannar kärnan, men RAM, timers/räknare och avbrottssystemet fortsätter att fungera. I avstängt läge behåller registren sina värden, men generatorn stannar, vilket inaktiverar alla enhetsfunktioner tills nästa avbrott eller hårdvaruåterställning. I standbyläge körs masteroscillatorn medan resten av enheten är inaktiv. Detta gör att mikroprocessorn kan starta mycket snabbt samtidigt som den behåller strömmen när den är inaktiv.

Enheten är tillverkad med hjälp av icke-flyktigt minnesteknik med hög densitet från Atmel. Den inbyggda ISP Flash gör att du kan programmera om programminnet i systemet via ett seriellt SPI-gränssnitt eller med en konventionell icke-flyktig minnesprogrammerare. Genom att kombinera en 8-bitars RISC-kärna med självprogrammerande Flash-minne till ett enda chip, är ATtiny2313 en kraftfull mikrokontroller som ger större flexibilitet till mikroprocessorsystemdesignern.

ATTiny2313 mikrokontrollern är en nypremiär i en ny serie av den gamla AT90S2313 mikrokontrollern, som var ganska framgångsrik på sin tid. ATTiny2313 är en förbättrad version av sin förfader. Men han ärvde också en ganska blygsam periferi. Så när det gäller funktionalitet är ATTiny2313 blygsam. Mikrokontrollern finns i två versioner - vanlig (ATTiny2313) och med reducerad effekt (ATTiny2313) V). För minskad näring måste du betala med en degradering klockfrekvens mikrokontroller (långsammare drift).

Generella egenskaper:

  • 120 instruktioner optimerade för programmering på högnivåspråk;
  • 32 allmänna register (jag älskar det här);
  • nästan varje instruktion exekveras i en klockcykel av generatorn, på grund av vilken prestandan når 20 MIPS (20 miljoner operationer per sekund);
  • 2 kilobyte flashminne för program. Flash-minne kan programmeras direkt från styrenheten (själv);
  • 128 byte EEPROM (icke-flyktigt minne);
  • 128 byte SRAM (Random Access Memory).

Vad har vi ombord på detta perifera chip?

  • en 8-bitars timer/räknare;
  • en 16-bitars timer/räknare;
  • fyra PWM-kanaler;
  • analog komparator;
  • Watchdog timer;
  • USI Universal Serial Interface;
  • USART (detta är en dator COM RS232).

Särskilda godsaker:

Effekt, frekvens:

1,8 – 5,5V (för ATTiny2313V) upp till 10 MHz
2,7 – 5,5V (för ATTiny2313) upp till 20 MHz
I driftläge förbrukar den 230 µA med en matning på 1,8 V och en masteroscillatorfrekvens på 1 MHz. I energisparläge förbrukar Power-down mindre än 1 µA vid 1,8V

Programmering

ATTiny2313 lyckades överleva en annan revision och fick ett brev A i slutet. Bland innovationerna bör det noteras:
— Externa avbrott förekom på alla ben.
— Separationen mellan normal- och lågspänningsförsörjning har tagits bort. ATTiny2313A kan drivas från 1,8 till 5,5V, medan det bara är nödvändigt att följa frekvensbegränsningar från 4 MHz (för 1,8 V) till 20 MHz.
— Strömförbrukningen har minskat avsevärt, både i normalläge och i energisparläge - 190 µA respektive 0,1 µA.
Dessutom, som ett resultat av den senaste revideringen, förvärvade ATTiny2313 en äldre bror ATTiny4313 (utan bokstaven A). Den äldre brodern liknar ATTiny2313A, med undantag för dubbelt så mycket minne (4 kB Flash, 256 byte EEPROM, 256 byte SRAM). Dessa ändringar visar Atmels avsikter att fortsätta att stödja denna mikrokontroller.

På grund av den dåliga tillgängligheten och oförståeliga priset för de nya versionerna av ATTiny2313A och ATTiny4313 kommer mina enheter att utvecklas på den gamla versionen av ATTiny2313. Men eftersom nya versioner är kompatibla med gamla, teoretiskt sett borde firmwaren fungera på nya mikrokontroller.

Slutsatser:

Som alla AVR mikrokontroller ATTiny2313-serien är produktiv och ekonomisk. Den har ett SOIC-fodral som är bekvämt för kortlayout och lödning. Avstånden mellan benen är relativt stora (man kan till och med lyckas sätta ett spår på brädan mellan intilliggande ben). Lätt att lära. Det finns mycket litteratur på ryska. På grund av den stora populariteten hos sin föregångare AT90S2313 har många intressanta kretsar utvecklats på nätverket för upprepning. Allmänt tillgänglig kommersiellt. Billig. För att börja studera mikrokontroller är det här platsen att vara. Bland bristerna är det värt att notera de ganska blygsamma kringutrustningen idag. Och som en nackdel är SOIC-fallet lite stort (även om jag redan tjatar). Små mängder minne tillåter dig inte att skapa storskaliga projekt på ATTiny2313. I allmänhet en bra högpresterande styrenhet för små projekt som inte kräver speciell kringutrustning. Jag planerar att använda det ganska brett i mina enheter på grund av den bästa tillgängligheten och låga kostnaden.

Idag ska vi försöka använda en enklare mikrokontroller ATtiny2313 och anslut till den en LCD-display med tecken som innehåller två rader med 16 tecken.

Vi kommer att ansluta displayen på ett vanligt sätt 4-bitars sätt.

Låt oss först börja, naturligtvis, med mikrokontrollern, eftersom vi redan är mycket bekanta med displayen från tidigare lektioner.

Låt oss öppna kontrolldatabladet ATtiny2313 och låt oss se dess pinout

Vi ser att denna styrenhet finns i två typer av fall, men eftersom jag fick den i ett DIP-paket kommer vi att överväga just den här versionen av fodralet, och i princip skiljer de sig inte så mycket, förutom i utseende, så hur antalet benen är densamma - 20 vardera.

Eftersom det finns 20 ben jämfört med de 28 benen på ATMega8-kontrollern, som vi har arbetat med hela tiden och kommer att fortsätta att arbeta på, så blir det också färre möjligheter.

I princip finns allt som ATmega8 hade här, det enda är att det finns färre portklor. Men eftersom uppgiften framför oss är att försöka koppla den via SPI-bussen med en annan styrenhet, trycker detta oss inte särskilt mycket.

Det finns några andra skillnader, men de är små och vi kommer att lära känna dem vid behov.

Låt oss sätta ihop en sådan här krets (klicka på bilden för att förstora bilden)

Displayen är ansluten till stiften på port D. PD1 och PD2 är till kontrollingångarna, och resten är anslutna till stiften på displaymodulen D4-D7.

Låt oss skapa ett projekt med namnet TINY2313_LCD, överföra allt till det förutom huvudmodulen från projektet för att ansluta skärmen till Atmega8.

Naturligtvis kommer vissa saker att behöva göras om. För att göra detta måste du noggrant studera vilket ben som är kopplat till vad. E-bussen på skärmen är ansluten till PD2 och RS-bussen är ansluten till PD1, så låt oss göra ändringar i filen lcd.h

#definierae1PORTD|=0b0000 01 00 // sätt rad E till 1

#definierae0PORTD&=0b1111 10 11 // sätt rad E till 0

#definierars1PORTD|=0b00000 01 0 // ställ in RS-raden till 1 (data)

#definierars0PORTD&=0b11111 10 1 // ställ in RS-raden till 0 (kommando)

Som vi kan se av det fetstilta typsnittet har vi inte haft så drastiska förändringar.

Nu inmatade information. Här använder vi benen PD3-PD6, det vill säga de är förskjutna med 1 poäng jämfört med kopplingen till Atmega8, så vi kommer också att rätta till något i filen lcd.c i funktion skicka halvbyte

PORTD&=0b 1 0000 111; // radera information om ingångarna DB4-DB7, lämna resten ifred

Men det är inte allt. Vi har tidigare flyttat de överförda data med 4, men nu, på grund av ovanstående ändringar, kommer vi bara att behöva flytta den med 3. Därför kommer vi i samma funktion också att korrigera den allra första raden

c<<=3 ;

Det är alla förändringar. Håller med, de är inte så bra! Detta uppnås genom att vi alltid försöker skriva universell kod och använda makrosubstitutioner. Om vi ​​inte hade lagt ner tid på detta vid ett tillfälle, hade vi behövt korrigera koden i nästan alla funktioner i vårt bibliotek.

I huvudmodulen rör vi inte initieringen av port D; låt hela modulen gå in i utgångsläget, som i lektion 12.

Låt oss försöka sätta ihop projektet och först se resultatet i Proteus, eftersom jag också gjorde ett projekt för det, som också kommer att finnas i det bifogade arkivet med projektet för Atmel Studio

Allt fungerar utmärkt för oss! Så här kan du snabbt göra om ett projekt för en kontroller för en annan.

Proteus är väldigt bra, men det är alltid trevligare att titta på riktiga detaljer. Hela kretsen monterades på en breadboard, eftersom jag inte gjorde eller monterade ett felsökningskort för den här kontrollern. Vi kommer att ansluta programmeraren via en standardkontakt som denna

Här är hela diagrammet

Allt är standard här. Uppdragningsmotstånd till RESET osv.

Nu, innan vi blinkar kontrollenheten i avrdude, måste vi välja kontrollenheten och läsa dess flashminne

Gå sedan till fliken SÄKRINGAR och ställ in säkringarna korrekt. Eftersom vi inte har en kvartsresonator installerar vi säkringarna på detta sätt


Topp