10M+ Erdvinės dalys sandėlyje
ISO sertifikuotas
Garantija įtraukta
Greitas Pristatymas
Sunku Rasti Dalis?
Mes juos gauname.
Prašyti kainos

"ATmega" mikrovaldikliai: architektūra, programavimas, kūrimo įrankiai ir programos

Mar 11 2026
Šaltinis: DiGi-Electronics
Naršyti: 863

ATmega mikrovaldikliai yra plačiai naudojami įterptinėse sistemose, nes jie sujungia apdorojimo galimybes, atmintį ir aparatinės įrangos periferinius įrenginius viename luste. Dėl paprastos architektūros, patikimo našumo ir stiprios kūrimo ekosistemos jie idealiai tinka mokytis ir kurti elektronines sistemas. Šiame straipsnyje paaiškinama jų architektūra, vidiniai moduliai, programavimo procesas ir įprastos šiuolaikinio įterptojo dizaino programos.

Figure 1. ATmega Microcontrollers

Kas yra ATmega mikrovaldikliai?

ATmega mikrovaldikliai yra 8 bitų AVR mikrovaldiklių lustai (iš pradžių iš Atmel, dabar pagal Microchip technologiją), skirti įterptinėms sistemoms. Jie naudoja RISC komandų rinkinį ir Harvardo architektūrą, sujungia programos atmintį (Flash), darbinę atmintį (SRAM), nepastovią atmintį (EEPROM) ir įprastus periferinius įrenginius; pvz., laikmačiai, skaitmeniniai įvesties / išvesties, ADC ir nuosekliosios sąsajos viename įrenginyje.

ATmega mikrovaldiklių savybės

FunkcijaAprašymas
8 bitų AVR RISC architektūraNaudoja sumažinto instrukcijų rinkinio skaičiavimo (RISC) dizainą, kuris leidžia daugumą instrukcijų vykdyti per vieną laikrodžio ciklą, todėl galima greitai ir efektyviai apdoroti.
Harvardo architektūraProgramos atmintis ir duomenų atmintis saugomos atskirai, todėl procesorius gali gauti instrukcijas ir pasiekti duomenis tuo pačiu metu, o tai pagerina našumą.
Lusto "Flash" programos atmintisNepastovi "Flash" atmintis saugo programos kodą ir išlaiko jį net atjungus maitinimą. Priklausomai nuo modelio, jis paprastai svyruoja nuo 4 KB iki 256 KB.
SRAM (statinė RAM)Naudojamas laikinam duomenų saugojimui vykdant programą, įskaitant kintamuosius, buferius ir rietuvės operacijas.
EEPROMElektra ištrinama programuojama tik skaitoma atmintis, naudojama nepastoviems duomenims, pvz., konfigūracijos nustatymams, kurie turi būti išsaugoti nutrūkus maitinimui, saugoti.
Integruoti laikmačiai ir PWMAparatūros laikmačiai ir impulsų pločio moduliacijos moduliai naudojami laiko operacijoms, signalo generavimui ir variklio arba LED ryškumo valdymui.
10 bitų ADCIntegruotas analoginis-skaitmeninis keitiklis leidžia mikrovaldikliui nuskaityti analoginius signalus iš jutiklių ir konvertuoti juos į skaitmenines vertes apdorojimui.
Programuojami skaitmeniniai įvesties / išvesties kaiščiaiKeli įvesties / išvesties kaiščiai gali būti sukonfigūruoti kaip įėjimai arba išėjimai, kad būtų galima susieti su išoriniais įrenginiais, tokiais kaip šviesos diodai, mygtukai ir jutikliai.
Ryšio sąsajosPalaiko įprastus nuosekliojo ryšio protokolus, įskaitant USART, SPI ir I²C, skirtus prijungti prie kitų mikrovaldiklių, jutiklių ir modulių.
Stipri vystymosi ekosistemaPlačiai palaikomi kūrimo įrankiai, dokumentacija ir platformos, tokios kaip "Arduino", todėl lengviau programuoti, kurti prototipus ir derinti.

ATmega architektūra ir vidiniai moduliai

Figure 2. ATmega Architecture and Internal Modules

"ATmega" MCU naudoja 8 bitų AVR procesorių su Harvardo architektūra: "Flash" talpina instrukcijas, o SRAM – vykdymo laiko duomenis. Šerdyje yra 32 darbiniai registrai ir paprastas vamzdynas, todėl daug instrukcijų užpildomos viename laikrodyje. Viduje trys atminties tipai palaiko tipinius programinės įrangos poreikius: "Flash" programų saugojimui (ir pasirenkamai įkrovos programai), SRAM kintamiesiems ir rietuvei ir EEPROM nepastoviems nustatymams.

Periferiniai įrenginiai jungiasi prie procesoriaus per atminties susietus įvesties / išvesties registrus. GPIO prievadai valdomi per DDRx (kryptis), PORTx (išvestis arba ištraukimas) ir PINx (skaitymas). Lanksti laikrodžio sistema (vidinis RC arba išorinis kristalas) nustato procesoriaus greitį ir laikmačio laiką. Laikmačiai / skaitikliai (8 bitų ir (arba) 16 bitų, priklausomai nuo modelio) užtikrina vėlavimą, įvykių skaičiavimą ir PWM generavimą. Daugelyje dalių yra daugiakanalis 10 bitų ADC jutiklių įėjimams. Nuosekliosios sąsajos paprastai apima USART, SPI ir TWI (suderinamas su I²C), skirtas ryšiui su kompiuteriais, jutikliais ir kitais valdikliais.

Pertraukimo valdiklis su vektorine lentele leidžia periferiniams įrenginiams ir išoriniams kaiščiams suaktyvinti įvykiais pagrįstą programinę-aparatinę įrangą.

ATmega kaiščio konfigūracija

Figure 3. ATmega Pin Configuration

Smeigtuko kategorijaPIN pavadinimas / prievadasAprašymas / Funkcija
Maitinimo kaiščiaiVCCPagrindinė mikrovaldiklio maitinimo įtampa.
GNDGrandinės įžeminimo nuoroda.
AVCCAnaloginės grandinės ir ADC maitinimas.
AREFEtaloninė įtampa, naudojama analoginio-skaitmeninio keitiklio (ADC).
Skaitmeniniai įvesties / išvesties kaiščiaiA prievadas (PA0–PA7)Skaitmeniniai įvesties / išvesties kaiščiai, kurie taip pat gali veikti kaip analoginiai ADC įėjimai.
B prievadas (PB0–PB7)Skaitmeniniai įvesties / išvesties kaiščiai dažniausiai naudojami SPI ryšiui ir laikmačio funkcijoms.
C prievadas (PC0–PC7)Bendrosios paskirties skaitmeniniai įvesties / išvesties kaiščiai dažnai naudojami valdymo signalams.
D prievadas (PD0–PD7)Skaitmeniniai įvesties / išvesties kaiščiai dažnai naudojami USART ryšiui ir išoriniams pertraukimams.
Laikrodžio kaiščiaiXTAL1Išorinio osciliatoriaus arba laikrodžio signalo įvesties kaištis.
XTAL2Išvesties kaištis iš vidinio osciliatoriaus stiprintuvas.
Atstatyti kaištįATSTATYTIAktyvus-žemas atstatymo kaištis, naudojamas mikrovaldikliui paleisti iš naujo.
Komunikacijos smeigtukai – USARTRXDGauna serijinius duomenis iš išorinių įrenginių.
TXDPerduoda nuosekliuosius duomenis į išorinius įrenginius.
Ryšio kaiščiai – SPIMOSIMaster Out Slave In – duomenų linija iš pagrindinio į pagalbinį įrenginį.
MISOMaster In Slave Out – duomenų linija nuo vergo iki pagrindinio įrenginio.
SCKNuosekliojo laikrodžio signalas, naudojamas SPI ryšiui.
SSSlave Select kaištis, naudojamas SPI pagalbiniam įrenginiui pasirinkti.
Ryšio kaiščiai – TWI (I²C)SDASerijinė duomenų linija, naudojama dviejų laidų ryšiui.
SCLSerijinio laikrodžio linija, naudojama dviejų laidų ryšiui.

Pinout skiriasi priklausomai nuo modelio; šioje lentelėje kaip pavyzdys naudojamas ATmega16/32.

ATmega mikrovaldiklių maitinimo režimai

Figure 4. Power Modes of ATmega Microcontrollers

"ATmega" mikrovaldikliai palaiko kelis energijos taupymo režimus, kurie sumažina energijos sąnaudas, kai procesoriui nereikia nuolat veikti. Šie režimai ypač naudingi baterijomis maitinamose įterptosiose sistemose, tokiose kaip nešiojamieji įrenginiai ir daiktų interneto jutikliai.

Tuščiosios eigos režimas

Tuščiosios eigos režimu procesorius nustoja vykdyti instrukcijas, o periferiniai moduliai, tokie kaip laikmačiai, nuosekliojo ryšio sąsajos ir pertraukimai, toliau veikia. Tai leidžia mikrovaldikliui greitai pabusti, kai įvyksta pertrauka.

Išjungimo režimas

Išjungimo režimas išjungia procesorių ir daugumą vidinių išorinių įrenginių, kad būtų pasiektas labai mažas energijos suvartojimas. Tik išoriniai pertraukimai arba stebėjimo laikmačio įvykiai gali pažadinti įrenginį. Šis režimas dažniausiai naudojamas ilgalaikio budėjimo programose.

Budėjimo režimas

Budėjimo režimas yra panašus į išjungimo režimą, tačiau palaiko osciliatorių veikiantį. Kadangi laikrodžio šaltinis išlieka aktyvus, mikrovaldiklis gali greičiau atnaujinti darbą.

Nutraukite ATmega mikrovaldiklių tvarkymą

Pertraukimai leidžia ATmega mikrovaldikliui nedelsiant reaguoti į svarbius įvykius, nuolat jų netikrinant pagrindiniame programos cikle.

Kai įvyksta pertraukimas, mikrovaldiklis laikinai pristabdo dabartinį programos vykdymą ir pereina prie specialios rutinos, vadinamos pertraukimo paslaugų rutina (ISR). Pasibaigus ISR, programa tęsiama nuo tos vietos, kur ji buvo nutraukta.

Įprasti "ATmega" įrenginių pertraukimo šaltiniai yra šie:

• Išoriniai pertraukimo kaiščiai

• Laikmačio perpildymas arba įvykių palyginimas

• Serijinės komunikacijos įvykiai (USART, SPI, TWI)

• ADC konversijos užbaigimas

• Watchdog laikmačio įvykiai

Pertraukų naudojimas pagerina sistemos efektyvumą, nes procesoriui nereikia nuolat apklausti aparatūros įrenginių. Vietoj to, procesorius atlieka kitas užduotis ir reaguoja tik tada, kai sukuriamas pertraukimo signalas.

ATmega mikrovaldiklių programavimas

ATmega mikrovaldikliai paprastai programuojami įterptoje C naudojant avr-gcc (AVR-GCC) ir avr-libc. AVR asamblėja vis dar naudinga keliais atvejais, pvz., ciklo tikslumo rutinoms, itin mažam kodui ar tiesioginiam konkrečių instrukcijų valdymui, tačiau dauguma projektų naudoja C greitesniam kūrimui ir lengvesnei priežiūrai.

Programinė įranga valdo aparatinę įrangą per atmintyje susietus įvesties / išvesties registrus. Kiekvienas periferinis įrenginys (GPIO, laikmačiai, ADC, USART, SPI, TWI) turi valdymo registrus, kuriuos rašote arba skaitote kodu. GPIO bendras modelis yra toks:

• DDRx nustato kaiščio kryptį (0 = įvestis, 1 = išvestis)

• PORTx įrašo išvesties lygį (arba įjungia prisitraukimą, kai sukonfigūruota kaip įvestis)

• PINx nuskaito esamą PIN būseną

Pavyzdys: nustatykite PB0 kaip išvestį ir įjunkite šviesos diodą

Embedded C Code

Praktiškai, jūs kompiliuojate projektą į .hex failą ir programuojate lustą naudodami IPT (SPI pagrindu) su tokiais įrankiais kaip USBasp / AVRISP / Atmel-ICE arba per įkrovos įkroviklį kai kuriose plokštėse. Įrenginio parinktys, pvz., laikrodžio šaltinis ir įkrovos nustatymai, valdomos saugiklių bitais, todėl jos turi atitikti aparatūros laikrodį ir paleidimo poreikius.

ATmega kūrimo darbo eiga ir programavimo įrankiai

Figure 5. ATmega Development Workflow and Programming Tools

Įrankių grandinė (kūrimo išvestis)

• Rašykite kodą į Embedded C (arba AVR rinkinį, jei reikia) naudodami IDE / redaktorių, pvz., Microchip Studio arba VS Code.

• Sukurkite naudodami AVR-GCC (kompiliuoti + nuorodą), kad sukurtumėte ELF failą, tada sugeneruokite .hex vaizdą "Flash" programavimui.

• Išlaikykite projekto nustatymus nuoseklius (įrenginys, laikrodis, optimizavimas, bibliotekos), kad komponavimo versijas būtų galima pakartoti.

Programavimo metodai (kaip programinė įranga patenka į lustą)

• IPT (SPI pagrindu) yra labiausiai paplitęs plikų ATmega lustų metodas. Tipiški programuotojai yra USBasp, AVRISP ir Atmel-ICE.

• Kai kuriose plokštėse galima naudoti įkrovos įkroviklį, leidžiantį įkelti programinę-aparatinę įrangą per UART/USB be išorinio IPT įrankio.

• Naudokite tokius įrankius kaip avrdude (arba IDE integruoti programuotojai), kad parašytumėte HEX failą ir paleistumėte patikrinimo veiksmą po programavimo.

• Įrenginio parinktys, pvz., laikrodžio šaltinis ir įkrovos nustatymai, valdomos saugiklių bitais, todėl saugiklių nustatymai turi atitikti tikrąją aparatinę įrangą.

Derinkite ir išbandykite

• Funkciniam testavimui pradėkite nuo UART žurnalų, GPIO "širdies plakimo" kaiščių ir paprastos testavimo programinės įrangos.

• Aparatūros derinimas priklauso nuo konkretaus ATmega modelio ir plokštės palaikymo (pvz., debugWIRE arba JTAG palaikomose dalyse). Tokie įrankiai kaip "Atmel-ICE" gali būti naudojami, kai taikinys palaiko lusto derinimą.

• Modeliavimo įrankiai (Proteus, SimulIDE, Tinkercad) gali padėti anksti patvirtinti, tačiau periferinis elgesys ir laikas gali nevisiškai atitikti realią aparatinę įrangą, todėl galutiniai patikrinimai turėtų būti atliekami fizinėje plokštėje.

Paprastas LED projektas naudojant ATmega16

Figure 6. Simple LED Project Using ATmega16

Paprastas pradedančiųjų projektas, naudojant ATmega16, parodo, kaip mikrovaldiklis nuskaito mygtuko įvestį ir valdo LED išvestį.

Projekto tikslas

Įjunkite šviesos diodą, kai paspaudžiamas mygtukas, ir išjunkite, kai mygtukas atleidžiamas.

Ryšių pavyzdžiai

• Mygtukas → PA0

• LED → PB0 per srovę ribojantį rezistorių

Kodo pavyzdys

Example Code

Kaip veikia projektas

Programa pirmiausia sukonfigūruoja PA0 kaip įvesties kaištį, o PB0 - kaip išvesties kaištį. Begalinės kilpos viduje mikrovaldiklis nuolat nuskaito prie PA0 prijungto mygtuko loginę būseną.

Paspaudus mygtuką, PA0 tampa HIGH. Programa aptinka šią įvestį ir nustato PB0 HIGH, kuris įjungia šviesos diodą. Atleidus mygtuką, PA0 tampa LOW, todėl programa išvalo PB0 ir šviesos diodas išsijungia.

Įprasti ATmega mikrovaldiklių modeliai

Figure 7. ATmega8

• ATmega8 – apima 8 KB "Flash" atminties ir puikiai tinka paprastoms įterptųjų valdymo programoms, pagrindiniams jutiklių sąsajoms ir mažiems mokymosi projektams, kur svarbu maža kaina ir paprastumas.

Figure 8. ATmega16

• ATmega16 – suteikia 16 KB "Flash" atminties, daugiau skaitmeninių įvesties / išvesties parinkčių ir įmontuotų periferinių įrenginių, todėl tai yra įprastas pasirinkimas vidutinio sunkumo įterptiesiems projektams, tokiems kaip ekrano valdymas, variklio sąsaja ir mažos automatikos sistemos.

Figure 9. ATmega32

• ATmega32 – siūlo 32 KB "Flash" atmintį su papildomais periferiniais įrenginiais ir didesne programų erdve, todėl ji plačiai naudojama robotikoje, valdymo grandinėse ir automatikos sistemose, kurioms reikia daugiau lankstumo ir funkcionalumo.

Figure 10. ATmega328P

• ATmega328P – turi 32 KB "Flash" atminties, kelis analoginius įvesties kanalus ir kelias ryšio sąsajas. Jis geriausiai žinomas kaip pagrindinis mikrovaldiklis, naudojamas Arduino Uno, todėl jis ypač populiarus švietimui, prototipų kūrimui ir pomėgių elektronikai.

Figure 11. ATmega2560

• ATmega2560 – yra su 256 KB "Flash" atmintimi ir daugybe įvesties / išvesties kontaktų, leidžiančių valdyti sudėtingesnes įterptąsias sistemas. Jis naudojamas "Arduino Mega" ir tinka projektams, kuriems reikia daug jutiklių, modulių ir didesnės programų saugyklos.

ATmega mikrovaldiklių taikymas

Figure 12. Applications of ATmega Microcontrollers

• Variklių valdymo sistemos – nuolatinės srovės variklių, servo variklių ir žingsninių variklių valdymas naudojant PWM signalus greičio ir padėties valdymui (pvz., mažos konvejerių pavaros, ventiliatorių valdikliai, siurblių valdikliai).

• Jutiklių duomenų registravimas – jutiklių, tokių kaip temperatūros, drėgmės, šviesos, dujų ar slėgio jutikliai, nuskaitymas ir matavimų išsaugojimas EEPROM, SD kortelių moduliuose arba duomenų siuntimas į kompiuterį nuosekliuoju ryšiu.

• Namų automatikos valdikliai – perjungimo žibintai, relės ir buitinė technika; stebėti durų jutiklius arba judesio detektorius; ir temperatūros ar aliarmų valdymas naudojant paprastą valdymo logiką.

• Mažos robotikos platformos – linijos sekimo robotų, kliūčių vengimo robotų ir paprastų robotų rankų valdymas, apdorojant jutiklių įvestis ir valdant variklius bei pavaras.

• Pramoninis stebėjimas ir valdymas – pagrindinis procesų stebėjimas, signalizacijos sistemos ir automatizuotas mažų mašinų valdymas, kur reikalingas vidutinis greitis ir patikimas I/O.

• IoT ir belaidžiai jutiklių mazgai – mažos galios jutikliai, suporuoti su belaidžiais moduliais (pvz., RF, Bluetooth ar Wi-Fi moduliais), skirti periodiniam stebėjimui ir ataskaitų teikimui.

• Buitinė ir automobilių elektronika – paprastas įterptas valdymas įrenginiuose, tokiuose kaip nuotolinio valdymo pultai, smulkūs prietaisai, prietaisų skydeliai ar indikatorių sistemos.

• Medicinos ir matavimo prietaisai – pagrindinės signalų stebėjimo ir valdymo užduotys nešiojamuosiuose įrenginiuose, kur svarbi maža galia ir stabilus veikimas.

ATmega prieš kitus mikrovaldiklius

Figure 13. ATmega vs Other Microcontrollers

FunkcijaATmega (AVR)PIC mikrovaldikliaiARM pagrindu veikiantys mikrovaldikliai
ArchitektūraAVR RISCPIC RISCARM Cortex-M
Apdorojimo galiaVidutinisVidutinisLabai didelis
Atminties talpaMažas ir vidutinisMažas ir vidutinisDidelis
Programavimo paprastumasLabai lengvaVidutinisSudėtingesnis
TaikymasArduino, švietimas, įterptasis valdymasPramoninė kontrolėDaiktų internetas, pažangios sistemos
EkosistemaStiprus Arduino palaikymasMPLAB ekosistemaDidelė profesionali ekosistema

Išvada

ATmega mikrovaldikliai išlieka svarbia įterptosios plėtros platforma dėl subalansuoto našumo, mažo energijos suvartojimo ir paprasto programavimo. Integruoti periferiniai įrenginiai, lanksčios įvesties / išvesties galimybės ir stiprus įrankių palaikymas leidžia efektyviai projektuoti sistemą daugeliui programų. Jų architektūros ir kūrimo darbo eigos supratimas padeda sukurti patikimus įterptuosius sprendimus ir praktiškus elektroninius projektus.

Dažnai užduodami klausimai [DUK]

Ar "ATmega" mikrovaldikliai palaiko "Arduino" kūrimą?

Taip. Daugelis "ATmega" mikrovaldiklių yra visiškai suderinami su "Arduino" ekosistema. Pavyzdžiui, ATmega328P yra pagrindinis procesorius, naudojamas "Arduino Uno" plokštėje. Šiuos lustus galite programuoti naudodami Arduino IDE, kuris supaprastina kodavimą, programinės įrangos įkėlimą ir jutiklių ar modulių integravimą.

Kokias programavimo kalbas galima naudoti "ATmega" mikrovaldikliams?

ATmega mikrovaldikliai paprastai programuojami naudojant Embedded C ir AVR Assembly kalbą. Įterptasis C yra plačiai pageidaujamas, nes jis pagerina skaitomumą, supaprastina aparatūros valdymą ir pagreitina kūrimą, o asamblėjos kalba suteikia žemo lygio valdymą našumui svarbioms programoms.

Kokia yra tipinė ATmega mikrovaldiklių darbinė įtampa?

Dauguma ATmega mikrovaldiklių veikia nuo 1,8 V iki 5,5 V, priklausomai nuo konkretaus įrenginio modelio ir laikrodžio dažnio. Daugelis įprastų plokščių, tokių kaip "Arduino" pagrįstos sistemos, veikia 5 V įtampa, o mažos galios programos gali naudoti 3,3 V veikimą, kad sumažintų energijos sąnaudas.

Kaip galima užprogramuoti arba mirksėti ATmega mikrovaldiklius?

ATmega mikrovaldikliai paprastai programuojami naudojant sistemos programavimą (ISP). Aparatūros programuotojas; pvz., USBasp, AVRISP arba USBtinyISP jungiasi prie lusto SPI kaiščių ir įkelia sukompiliuotą HEX failą tiesiai į "Flash" atmintį, neišimdamas mikrovaldiklio iš grandinės.

Ar "ATmega" mikrovaldikliai tinka pradedantiesiems įterptųjų sistemų srityje?

Taip. ATmega mikrovaldikliai yra plačiai rekomenduojami pradedantiesiems, nes jie turi paprastą architektūrą, aiškią dokumentaciją ir stiprų bendruomenės palaikymą. Kartu su tokiais įrankiais kaip "Arduino" ir "Microchip Studio" jie leidžia greitai kurti projektus ir suprasti įterptojo programavimo pagrindus.