Atmel AVR

A Wikipédiából, a szabad enciklopédiából
Atmel AVR ATmega8 28-kivezetésű PDIP tokozásban
Atmel AVR ATmega169 felületszerelt tokozásban (MLF, micro-leadframe)

Az AVR az Atmel cég által 1996-ban kifejlesztett módosított Harvard-architektúrájú 8 bites RISC típusú egycsipes mikrovezérlő. Az AVR volt az első mikrovezérlő-család, amelyben csipre integrált flash memóriát kezdtek használni a programtárolásra, ellentétben más mikrovezérlőkkel, amelyeknél ekkor még egyszer programozható ROM, EPROM vagy EEPROM memóriák szolgáltak erre a célra.

Rövid történet[szerkesztés]

Az Atmel cég szerint az AVR név nem betűszó és nem jelent semmi különöset. Az AVR készítői nem adnak végleges választ azzal kapcsolatban, hogy az AVR kifejezés mit jelent.
Egyes vélemények szerint azonban (nem hivatalosan), két magyarázat is adható a név eredetére. Az egyik megközelítés szerint, az eredeti struktúrát kidolgozó két egyetemista nevéből származtatható. Alf-Egil Bogen és Vegard Wolan neveinek kezdőbetűiből → Alf-Vegard-RISC. A másik elmélet szerint a név a következő szavakból képzett mozaikszó: Advanced Virtual RISC.

Áttekintés[szerkesztés]

Alap családok[szerkesztés]

Az AVR-ek általában négy széles csoportba vannak osztályozva.

  • tinyAVR – az ATtiny sorozat
    • 0.5–16 KiB programmemória
    • 32–512 bájt adatmemória
    • 0–512 bájt EEPROM
    • 6–32 lábú tokokban
    • Korlátozott periférikus készlet
    • Maximális órajel 4–20 MHz
  • megaAVR – az ATmega sorozat
    • 4–256 KiB programmemória
    • 0,5–16 KiB adatmemória
    • 0,25–4 KiB EEPROM
    • 24–100 lábú tokokban
    • Kiterjesztett utasításkészlet (szorzó utasítások és nagyobb programmemóriákat kezelő utasítások)
    • Kiterjesztett periférikus készlet
    • Maximális órajel 16–20 MHz
  • XMEGA – az ATxmega sorozat
    • 16–384 KiB programmemória
    • 2–32 KiB adatmemória
    • 1–4 KiB EEPROM
    • 44–64–100 lábú tokokban (A4, A3, A1)
    • Teljesítménynövelő tulajdonságok, mint DMA, eseménykezelő-rendszer és titkosítás.
    • Kiterjesztett periférikus készlet DAC-vel
    • Maximális órajel 32 MHz
  • Felhasználásspecifikus AVR
    • megaAVR-ek speciális tulajdonságokkal, melyek nem találhatóak az AVR család más tagjain. Olyanok, mint például az LCD-vezérlő, USB-vezérlő, fejlett PWM, CAN , stb.
    • FPSLIC (Field Programmable System Level Integrated Circuit), egy AVR mag egy FPGA-val egy lapkára integrálva. Az FPSLIC – eltérően a többi AVR-től – SRAM-ot használ a programhoz, részben az SRAM és a flash közötti relatív sebességkülönbség miatt. Az AVR mag az FPSLIC-ben akár 50 MHz felett is futhat.

Felépítés[szerkesztés]

  • Adatmemória (RAM)

A Flash, az EEPROM, és az SRAM mind egyetlen chipre vannak integrálva, szükségtelenné téve a külső memóriát. Néhánynak van egy külső sínje, hogy lehetővé tegye további adatmemória, vagy memóriatartományban elhelyezett eszközök hozzáadását.

  • Programmemória (flash)

A programutasítások a nem felejtő flash memóriában tárolódnak. A programmemória méretét néha jelzik az eszköz nevében (pl.: az ATmega64x sorozatnak 64 KiB flash memóriája van).

  • Belső adatmemória

A regiszterfájlból (registers file), az I/O regiszterekből és az SRAM-ból áll.

  • Belső regiszterek
  • EEPROM

Majdnem minden AVR mikrokontrollernek van belső EEPROM-ja (Electrically Erasable Programmable Read Only Memory).

Programvégrehajtás[szerkesztés]

Utasításkészlet[szerkesztés]

Az Atmel AVR utasításkészlet sokkal ortogonálisabb, mint a legtöbb nyolcbites mikrovezérlő, különösen a 8051 klónjai és a PIC mikrokontroller utasításkészlete. Ugyanakkor ez sem teljesen szabályos:

  • Az X, Y, és Z mutatóregiszterek különböző, egymástól eltérő címzési lehetőségeket valósítanak meg.
  • Az R0–R15 regisztereknek más címzési lehetőségeik vannak, mint az R16-tól R31-ig terjedő regisztereknek.
  • A 0-tól 31-ig terjedő I/O portok szintén másképp címezhetők, mint a 32-től 63-ig terjedő portok.
  • A CLR utasítás hatással van a jelzőbitekre, a SER pedig nem, miközben ezek egymás komplementer utasításai; a CLR minden bitet 0-ra állít, a SER minden bitet 1-re állat. Megjegyzendő azonban, hogy a CLR egy pszeudo-utasítás, az EOR R, R; hajtja végre, míg a SER az LDI R,$FF; tehát egy adatmozgató utasítás rövidítése. A számtani/logikai műveletek állítják a processzor állapotbitjeit, míg az adatmozgató, betöltő, tároló és ugróutasítások nem.
  • Csak olvasható adat, mint pl. a programmemória (flash) elérése speciális LPM utasításokkal történhet; a flash sín egyébként az utasításmemóriához van rendelve.

MCU sebesség[szerkesztés]

Az MCU sebessége függ az utasítások végrehajtási idejétől. Az utasítások végrehajtási ideje utasításonként változó, 1 és 5 órajelciklus közé esik. Így a legnagyobb órajelű típusoknál, ideális esetben akár 20 millió utasítást is végrehajthat másodpercenként.

Fejlesztés[szerkesztés]

Jellemzők[szerkesztés]

Fejlesztőeszköz és[szerkesztés]

STK500 kezdő készlet[szerkesztés]

AVR ISP és AVR ISP mkII[szerkesztés]

6 & 10 tűs ISP foglalat

Az AVRISP mkII az Atmel által fejlesztett és gyártott USB-s programozó eszköz. Azon 8 bites Atmel mikrovezérlők "égetésére" használható, amelyek rendelkeznek ISP interface-szel. Nem támogat debug funkciót.

A firmware frissítést minden újabb verziójú AVRStudio felajánlja, amint csatlakozunk az eszközhöz.

Tulajdonságok:

AVR Studio kompatibilis (>4.12)
Minden ISP-s AVR programozható a segítségével
Flash és EEPROM programozására is képes
Fuse és Lock bit-ek szabadon programozhatók
Folyamatos firmware frissítési lehetőség
Céláramkör feszültsége 1,8–5,5 V között változhat
Változtatható programozási sebesség (50Hz-től 8MHz-ig (SCK frekvencia)
USB 2.0 kompatibilis
USB-ről üzemel, nem igényel külső tápforrást
Céláramkör interface védelem
Rövidzár elleni védelem

AVR Dragon (USB)[szerkesztés]

JTAG (IEEE 1149.1)[szerkesztés]

JTAGICE mkI[szerkesztés]

JTAGICE mkII[szerkesztés]

A pillangó demó panel (AVR BUTTERFLY)[szerkesztés]

Egy ATmega169V uC-t, LCD-t, 4-irányú gombokat (joystick), hangszórót, soros portot, valósidejű órát (RTC), külső flash memóriát, feszültség-, és hőmérsékletérzékelőket tartalmazó népszerű, olcsó (~ 20 USD) kis demópanel. A régi verziók CdS fénymérőt is tartalmaztak, ezt az RoHS szabályozás miatt már nem szerelik rá (de a helye megvan).

AT90USBKey[szerkesztés]

Arduino[szerkesztés]

Az Arduino egy egyszerű elektronikus áramkörön és egy szoftverfejlesztő környezetén alapuló nyílt hardveres fejlesztői platform. Gyakorlatilag nem más, mint egy-egy AVR csip köré épített hardveres eszköz, rengeteg kiegészítővel. Az Arduino programozási nyelve a Processing-ből kifejlesztett Wiring egyik implementációja.

Az Arduino interaktív tárgyak készítésére használható, számtalan kapcsolót vagy szenzort bemenetként olvasva, lámpák, motorok és egyéb kimenetek kimeríthetetlen választékát képes vezérelni. Az Arduino projektek állhatnak önmagukban, vagy különböző számítógépes programokkal kommunikálva is (pl. Flash, Pure Data, Processing, Max/MSP). Az áramkör házilag is nagyon könnyen összeállítható, vagy készen megvásárolható; a nyílt forráskódú fejlesztőkörnyezet pedig szabadon letölthető.

Raven vezeték nélküli kit[szerkesztés]

Nem hivatalos programozók[szerkesztés]

Támogatott programnyelvek, fordítók
Gyártó Fordító Licenc Platform Assembler BASIC C C++ Pascal Egyéb
GNU avr-as GPL Win32,Linux, Mac OS Igen
GNU avr-gcc GPL Win32,Linux, Mac OS Igen Igen
GNU AVR-ADA GPL Win32,Linux Ada
Atmel AVR Studio Zárt Win32 Igen Igen Igen
cadManiac.org KontrollerLab GPL Linux Igen Igen Igen
E-LAB Computers AVRco Zárt Win32 Igen
MCS Electronics BASCOM Zárt Win32 Dialektus
nettypes.de mBasic Zárt Win32 Igen
Till Harbaum NanoVM GPL Win32,Linux Java
Matthias Trute amforth GPL Win32,Linux Forth
? Embedded Pascal for the AVR share- ware Win32 Igen
Dean W. Hall et al. PyMite GPL Win32,Linux, Mac OS Python
IAR IAR Embedded Workbench for AVR Zárt Win32 Igen Igen
myAVR myAVR Workpad Zárt Win32 Igen Igen
Gennady Gromov Algorithm Builder Zárt Win32 Igen
Jon A. Haugum, Tobias Weber AVRA GPL független Igen bővített makrónyelv?
HP InfoTech CodeVisionAVR Zárt Win32 Igen
Jörg Wolfram AVR-Chipbasic2 GPL On Chip Tiny-Basic
Mikroelektronika MikroPascal for AVR Zárt Win32 Igen
Thinker.it Wiring/Arduino GPL Win32, Linux, MacOS - - Igen Bővített C-makro
ImageCraft ICCV8 for AVR Zárt Win32 Igen Igen CodeBlocks IDE

Atmel AVR felhasználás[szerkesztés]

Számtalan elektronikai projekt használja fel ezeket mint központi egységet, kezdve az órák, digitális hőmérőktől egészen a komolyabb vezeték nélküli szenzoros adatgyűjtő hálózatokig. Nagy népszerűségüket alacsony fogyasztásuk, stabil működési sebességük és sokfajta programfejlesztői eszközzel való kompatibilitásnak köszönhetik. Meg kell jegyezni, hogy hobbi szintű, elektronikával csak ismerkedő felhasználóinak is egyre szélesebb a tábora.

Az új 32 bites AVR-ek[szerkesztés]

A piacon lévő legfejlettebb mikrokontroller rendszer. Tartalmaznak beépített USB vezérlőt is már régebbi AVR-ekkel szemben. Nagy teljesítménnyel rendelkeznek (processzor, memória, csatlakozások). Ezek már picoPower technológiát használnak aminek köszönhetően nagyon alacsony fogyasztásuk van.

Jegyzetek[szerkesztés]

További információk[szerkesztés]

Kapcsolódó szócikkek[szerkesztés]