AVR

З Вікіпедыі, свабоднай энцыклапедыі
Atmel AVR ATmega8 у корпусе DIP
Atmel AVR ATmega169V у корпусе MLF

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

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

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

Ідэя была ўхвалена Atmel, і было прынята рашэнне неадкладна інвеставаць у гэтую распрацоўку. Пад канец 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.

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

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

  • tinyAVR (ATtinyxxx):
  • 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(tiny/mega/xmega)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.

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

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

Зноскі