Atmel AVR
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ésAz 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ésAlap családok
szerkesztésAz AVR-ek általában négy széles csoportba vannak osztályozva.
- tinyAVR – az ATtiny sorozat
- 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 Archiválva 2009. március 13-i dátummal a Wayback Machine-ben (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ésUtasításkészlet
szerkesztésAz 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ésAz 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ésJellemzők
szerkesztésFejlesztőeszköz és
szerkesztésSTK500 kezdő készlet
szerkesztésAVR ISP és AVR ISP mkII
szerkesztésAz 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ésJTAG (IEEE 1149.1)
szerkesztésJTAGICE mkI
szerkesztésJTAGICE mkII
szerkesztésA pillangó demó panel (AVR BUTTERFLY)
szerkesztésEgy ATmega169V uC-t, LCD-t, 4-irányú gombokat (joystick), hangszórót, soros portot, valós idejű ó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 amerikai dollár) 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ésArduino
szerkesztésAz 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ésNem hivatalos programozók
szerkesztésGyá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 Archiválva 2009. március 13-i dátummal a Wayback Machine-ben | 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 Archiválva 2009. február 25-i dátummal a Wayback Machine-ben | 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ésSzá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ésA 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ésTovábbi információk
szerkesztés- Atmel AVR Homepage Archiválva 2012. január 21-i dátummal a Wayback Machine-ben
- AVR Freaks community
- AVR információk
- Bascom magyar leírás Archiválva 2012. április 22-i dátummal a Wayback Machine-ben
- AVR-Duino/Arduino magyar leírás Archiválva 2014. augusztus 4-i dátummal a Wayback Machine-ben
- MCS Electronics: Tavir-AVR: Tartalom (html). Tavir-AVR, 2011-07-07. [2012. április 22-i dátummal az eredetiből archiválva]. (Hozzáférés: 2009. május 13.) – Bascom-AVR fejlesztőrendszer AVR és 8051 csipekhez