AVR

З пляцоўкі Вікіпедыя
Jump to navigation Jump to search
Atmel AVR ATmega8 у корпусе DIP
Atmel AVR ATmega169V у корпусе MLF

AVR — сямейства васьмібітных мікракантролераў фірмы Atmel. Год распрацоўкі — 1996.

Гісторыя стварэння архітэктуры AVR[правіць | правіць зыходнік]

Ідэя распрацоўкі новага RISC-ядра належыць двум студэнтам Norwegian University of Science and Technology (NTNU) з нарвежскага горада Тронхейм — Альфу Богэну (Alf-Egil Bogen) і Вэгарду Уолэну (Vegard Wollan). У 1995 годзе Богэн и Уолэн вырашылі прапанаваць амерыканскай карпарацыі Atmel, якая была вядома сваімі чыпамі з Flash-памяццю, выпускаць новы 8-бітны RISC-мікракантролер і абсталяваць яго Flash-памяццю для праграм на адзіным крышталі з вылічальным ядром.

Ідэя была ўхвалена Atmel Corp., і было прынята рашэнне неадкладна інвеставаць у гэтую распрацоўку. Напрыканцы 1996 года быў выпушчаны прататып AT90S1200, а ў другой палове 1997 г. карпарацыя Atmel распачала серыйную вытворчасць новага сямейства мікракантролераў, іх рэкламную і тэхнічную падтрымку.

Новае ядро было запатэнтавана і атрымала назву AVR. Існуе некалькі трактовак гэтай абрэвіятуры. Нехта сцвярджае, што гэта Advanced Virtual RISC, іншыя сцвярджаюць, што не абыйшлося тут без Alf Egil Bogen Vegard Wollan RISC.

Апісанне архітэктуры[правіць | правіць зыходнік]

Мікракантролеры AVR маюць гарвардскую архітэктуру (праграма і даныя знаходзяцца ў розных адрасных прасторах) і сістэму каманд, блізкую да ідэалогіі RISC. Працэсар AVR мае 32 8-бітных рэгістры агульнага прызначэння, аб’яднаных у рэгістравы файл. У адрозненні ад «ідэальнага» RISC, рэгістры не абсолютна артаганальныя:

  • Некаторыя каманды працуюць толькі з рэгистрамі r16…r31. Да іх адносяцца каманды, што працуюць з непасрэдным аперандам: ANDI/CBR, ORI/SBR, CPI, LDI, LDS(16-біт), STS(16-біт), SUBI, SBCI, а таксама SER і MULS;
  • Каманды, што павялічваюць ці памяньшаюць 16-бітнае значэнне (у тых мадэлях, дзе яны даступныя) з непасрэдным аперандам (ADIW, SBIW) працуюць толькі з адной з пар r25:r24, r27:r26 (X), r29:r28 (Y), ці r31:r30 (Z);
  • Каманда капіявання пары рэгістраў (у тых мадэлях, дзе даступная) працуе толькі з суседнімі рэгістрамі, што пачынаюцца з няцотнага (r1:r0, r3:r2, …, r31:r30);
  • Вынік множання (у тых мадэлях, дзе ёсць модуль множання) заўсёды змяшчаецца ў r1:r0. Таксама толькі гэтая пара выкарыстоўваецца ў якасці аперандаў для каманды самапраграмавання (дзе даступная);
  • НЕкаторыя варыянты каманд множання прымаюць у якасці аргументаў толькі рэгістры з дыяпазону r16…r23 (FMUL, FMULS, FMULSU, MULSU).

Сістэма каманд[правіць | правіць зыходнік]

Сістэма каманд мікракантролераў AVR надзвычай развітая і налічвае ў розных мадэлях ад 90 да 133 разнастайных інструкцый.

Большасць каманд займае толькі 1 ячэйку памяці (16 біт).

Большасць каманд выконваецца за 1 такт.

Усё мноства каманд мікракантролераў AVR можна разбіць на некалькі гуртоў:

  • каманды лагічных аперацый;
  • каманды арыфметычных аперацый і каманды зруху;
  • каманды аперацый з бітамі;
  • каманды перасылкі даных;
  • каманды перадачы кіравання;
  • каманды кіравання сістэмай.

Кіраванне перыферыйнымі прыладамі ажыццяўляецца праз адрасную прастору даных. Для злучнасці існуюць «скарочаныя каманды» IN/OUT.

Сямейства мікракантролераў[правіць | правіць зыходнік]

Стандартныя сямействы:

  • megaAVR (ATmegaxxx):
    • Флэш-памяць да 256 Кб; SRAM да 16 Кб; EEPROM да 4 Кб;
    • Колькасць ліній уводу-вываду 23-86 (агульная колькасць вывадаў 28-100);
    • Апаратны множнік;
    • Пашыраная сістэма каманд і перыферыйных прыладаў.
  • XMEGA AVR (ATxmegaxxx):
    • Флэш-памяць да 384 Кб; SRAM да 32 Кб; EEPROM да 4 Кб;
    • Чатырохканальны DMA-кантролер;
    • Інавацыйная сістэма апрацоўкі падзей.

Як правіла, лічбы пасля прэфіксу пазначаюць аб'ём убудаванай flash-памяці (у КБ) і мадыфікацыю кантролера. А менавіта, максімальная ступень двойкі, наступная за прэфіксам, пазначае аб'ём памяці, а астатнія лічбы вызначаюць мадыфікацыю (напр., ATmega128 — аб'ём памяці 128 КБ; ATmega168 — аб'ём памяці 16 КБ, мадыфікацыя 8; ATtiny44 і ATtiny45 — памяць 4 КБ, мадыфікацыя 4 і 5 адпаведна).

На аснове стандартных сямействаў выпускаюцца мікракантролеры, адаптаваныя пад пэўныя задачы:

Акрамя ўзгаданых вышэй сямействаў ATMEL выпускае 32-разрадныя мікракантролеры сямейства AVR32, якое ўключае ў сябе падсямейства AT32UC3 (тактавая частата да 66 МГц) і AT32AP7000 (тактавая частата да 150 МГц).

Версіі кантролераў[правіць | правіць зыходнік]

AT(mega/tiny)xxx — базавая версія.
ATxxxL — версіі кантролераў, якія працуюць на паніжаным (Low) напружанні сілкавання (2,7 В).
ATxxxV — версіі кантролераў, якія працуюць на нізкім напружанні сілкавання (1,8 В).
ATxxxP — маласпажывальныя версіі (да 100 нА у рэжыме Power-down), выкарыстана тэхналогія picoPower (анансаваны ў ліпені 2007), на кожным вывадзе і функцыйна сумяшчальны з папярэднімі версіямі.
ATxxxA — паменьшаны спажываны ток, перакрываецца ўвесь дыяпазон тактавых частот і напружанняў сілкавання двух папярэдніх версій (таксама, у некаторых мадэлях, даданы новыя магчымасці і новыя рэгістры, але захавана поўная сумяшчальнасць з папярэднімі версіямі). Мікракантролеры «А» і «не-А» звычайна маюць аднолькавую сігнатуру, што выклікае некаторыя цяжкасці, бо Fuse-bit'ы адрозніваюцца

Нумар мадэлі дапаўняецца індэксам, які паказвае варыянт выканання. Лічбы (8,10,16,20) перад індэксам пазначаюць максімальную частату, на якой мікракантролер можа стабільна працаваць на нармальным для яго напружанні сілкавання).

Першая літара індэкса пазначае варыянт корпусу:

АТxxx-P — корпус DIP
АТxxx-A — корпус TQFP
АТxxx-J — корпус PLCC
АТxxx-M — корпус MLF
АТxxx-MA — корпус UDFN/USON
АТxxx-C — корпус CBGA
АТxxx-CK — корпус LGA
АТxxx-S — корпус EIAJ SOIC
АТxxx-SS — вузкі корпус JEDEC SOIC
АТxxx-T — корпус TSOP
АТxxx-TS — корпус SOT-23 (ATtiny4/5/9/10)
АТxxx-X — корпус TSSOP

Наступная літара пазначае тэмпературны дыяпазон і асаблівасці вырабу:

АТxxx-xC — камерцыйны тэмпературны дыяпазон (0 °C — 70 °C)
АТxxx-xA — тэмпературны дыяпазон −20 °C — +85 °C, з ужываннем бессвінцовага прыпою
АТxxx-xI — індустрыяльны тэмпературны дыяпазон (-40 °C — +85 °C)
АТxxx-xU — індустрыяльны тэмпературны дыяпазон (-40 °C — +85 °C), з ужываннем бессвінцовага прыпою
АТxxx-xH — індустрыяльны тэмпературны дыяпазон (-40 °C — +85 °C), з ужываннем NiPdAu
АТxxx-xN — пашыраны тэмпературны дыяпазон (-40 °C — +105 °C), з ужываннем бессвінцовага прыпою
АТxxx-xF — пашыраны тэмпературны дыяпазон (-40 °C — +125 °C)
АТxxx-xZ — аўтамабільны тэмпературны дыяпазон (-40 °C — +125 °C)
АТxxx-xD — пашыраны ащтамабильны тэмпературны дыяпазон (-40 °C — +150 °C)

Апошняя літара R пазначае пакаванне ў стужкі (Tape & Reel) для аўтаматызаваных сістэм зборкі.

Прылады ўводу-вываду МК[правіць | правіць зыходнік]

МК AVR маюць развітую перыферыю:

  • Да 86 шматфункцыйных, двухнапрамкавых GPIO портаў уводу-вываду. У залежнасці ад праграмна-наладжанай канфігурацыі рэгістраў могуць незалежна адзін ад аднаго працаваць у рэжыме «моцнага» драйвера, які выдае ці прымае (на «зямлю») ток да 40 мА, што дастаткова для далучэння святлодыёдных індыкатараў. Любы з вывадаў портаў можа быць канфігураваны на «ўвод» альбо ў вольным стане, альбо з ужываннем убудаванага падцягвальнага (на плюс) рэзістара.
  • Да 3 вонкавых крыніц перапыненняў (паводле фронту, зрэзу, ці ўзроўню) і да 32 паводле змянення ўзроўня на ўваходзе.
  • У якасці крыніцы тактавых імпульсаў можа быць абраны:
    • керамічны альбо кварцавы рэзанатар (не ўва ўсіх мадэлях);
    • вонкавы тактавы сігнал;
    • калібраваны ўнутраны RC-генератар (частата 1, 2, 4, 8 МГц, а таксама, для некаторых мадэляў ATtiny — 4,8, 6.4, 9.6 МГц і 128 кГц).
  • Унутраная Флэш-памяць каманд да 256 KБ (не меньш за 10 000 цыклащ перазапису).
  • Адладка праграм ажыццяўляецца з дапамогай інтэрфейсаў JTAG альбо debugWIRE:
    • сігналы JTAG (TMS, TDI, TDO, и TCK) мультыплексаваны на порт уводу-вываду. Рэжым працы — JTAG альбо порт — задаецца адпаведным бітам у рэгістры fuses. МК AVR пастаўляецца з уключаным інтэрфейсам JTAG.
  • Унутраная памяць даных EEPROM да 4 КБ (ATmega/ATxmega)/512 байт (ATtiny) (да 100 000 цыклаў перазапісу).
  • Унутраная памяць SRAM да 32 KБ (ATxmega)/16 Кб(ATmega)/1 Кб(ATtiny) з часам доступу 2 такты.
  • Вонкавая памяць аб'ёмам да 64 КБ (ATmega8515, ATmega162, ATmega640, ATmega641, ATmega1280, ATmega1281, ATmega2560, ATmega256).
  • Таймеры з разраднасцю 8, 16 біт.
  • ШІМ-мадулятар (PWM) 8-, 9-, 10-, 16-бітны.
  • Аналагавыя кампаратары.
  • АЛП (ADC) з дыферэнцыйнымі ўваходамі, разраднасць 8(ATtiny)/10(ATtiny/ATmega)/12(ATxmega) біт:
    • праграмавальны каэфіцыент узмацнення перад АЛП 1, 10 і 200 (у дыферэнцыйым рэжыме);
    • у якасці апорнага напружання могуць выступаць: напружанне сілкавання, вонкавае напружанне, альбо ўнутранае апорнае напружанне 2,56 В / 1,1 В (у некаторых ATtiny).
  • Разнастайныя паслядоўныя інтэрфейсы, у тым ліку:
    • двухдротавы інтэрфейс TWI, сумяшчальны з I²C;
    • універсальны сінхронна/асінхронны прыёмаперадатчык UART/USART;
    • сінхронны паслядоўны порт Serial Peripheral Interface (SPI).
  • USB серыя AT90USBxxxx.
  • CAN серыя AT90CANxxx.
  • LCD серыі ATmega169 і ATmega329.
  • Датчыкі тэмпературы ATtiny25, ATtiny45, ATtiny85.
  • Амаль усе (за выключэннем некаторых ранніх мадэляў ATtiny, у якіх перапраграмаванне выконваецца праз адмысловы інтэрфейс) падтрымліваюць унутрысхемнае праграмаванне (ISP) праз паслядоўны інтэрфейс SPI. Многія мікракантролеры падтрымліваюць альтэрнатыўнае паслядоўнае альбо паралельнае праграмаванне з выкарыстаннем высокага напружання, для выпадкаў калі fuse-регистры были наладжаны так, што звычайнае праграмаванне стало недаступным.
  • Падтрымка самапраграмавання, пры якім асноўная праграма можа змяніць частку свайго коду.
  • Падтрымка загрузкі асноўнай праграмы з дапамогай абароненай ад перазапісу падпраграмы (bootloader). Код асноўнай праграмы звычайна прымаецца праз адзін з портаў мікракантролера з выкарыстаннем аднаго са стандартных пратаколаў.
  • Шэраг рэжымаў паменьшанага энергаспажывання.

Увага: не ўсе перыферыйныя прылады могуць быць уключаны праграмна. Біт у регістры fuses можа быць зменены толькі праграматарам.

Сродкі распрацоўкі[правіць | правіць зыходнік]

Свабодныя[правіць | правіць зыходнік]

  • WinAVR — праграмны пакет пад Windows, які ўключае ў сябе кампілятар, асэмблер, кампаноўнік і іншыя інструменты.
  • Algorithm Builder — асяроддзе распрацоўкі праграмнага забеспячэння для мікракантролераў з архітэктурай AVR.
  • Code::Blocks — кросплатформавае асяроддзе распрацоўкі.
  • DDD — графічны інтэрфейс да avr-gdb.
  • V-USB — праграмная рэалізацыя пратакола USB для мікракантролераў AVR.
  • Avrdude — сродак для прашывання мікракантролераў.
  • PonyProg — універсальны праграматар праз LPT-порт, COM-порт (падтрымліваецца і USB-эмулятар COM-порту).

Уласніцкія[правіць | правіць зыходнік]

  • AVR Studio — бясплатнае IDE ад самой Atmel
  • IAR AVR — камерцыйнае асяроддзе распрацоўкі для мікракантролераў AVR
  • Bascom-avr — асяроддзе распрацоўкі аснаванае на Basic-падобнай мове праграмавання.
  • CodeVisionAVR — кампілятар Сі і праграматар — CVAVR, генератар пачатковага коду.
  • Proteus — сімулятар электрычных контураў, кампанентаў, уключаючы разнастайныя МК і іншае перыферыйнае абсталяванне.

Таксама архітэктура AVR дазваляе ужываць аперацыйныя сістэмы пры распрацоўцы праграм, напрыклад FreeRTOS, UOs, ChibiOS/RT.

Гл. таксама[правіць | правіць зыходнік]

спасылкі[правіць | правіць зыходнік]

Зноскі