Mérés labor II. ATmega128 2004-09-20
Az AVR ATmega128 mikrokontroller Rövid leírás Ez a leírás a Mérés labor II. tárgy első mikrokontrolleres témájú mérési gyakorlatához készült. Csak annyit tartalmaz általánosan az IC-ről, ami szerintünk első olvasatban még befogadható. A rövid leírás kitér még az általános digitális I/O portok felépítésére, amihez a laborgyakorlat első kis programjának megírásához van szükség.
Tartalom 1. Az ATmega128(L) processzor főbb jellemzői 2. Regiszterek 3. Az integrált programmemória és adatmemória 4. Az általános digitális I/O portok felépítése 5. Az I/O portok alternatív funkciói Irodalom Függelékek
1. Az ATmega128(L) processzor főbb jellemzői Általános jellemzők Az ATmega128 egy kis fogyasztású, statikus CMOS áramkörtechnikán alapuló mikrokontroller. A belső CPU mag RISC jellegű, az aritmetikai utasításokat (általában) 1 órajel-ciklus alatt hajtja végre. A maximális órajel-frekvencia 16 MHz, így elvileg 16 MIPS végrehajtási sebesség is elérhető. Két változatban gyártják a processzort: • ATmega128: 4,5 - 5,5 V tápfeszültség, 0 - 16 MHz órajel-frekvencia • ATmega128L: 2,7 - 5,5 V tápfeszültség, 0 - 8 MHz órajel-frekvencia A mikrokontrollert 64 kivezetéses TQFP (Thin (1.0 mm) Plastic Quad Flat Packag) vagy MLF (Micro Lead Frame Package) tokba szerelik,
Tömbvázlat Az AVR ATmega mikrokontrollerek egyszerűsített tömbvázlata az 1 ábrán látható. A mikrokontroller két fő részből áll: • AVR CPU és memória mag (AVR CPU core) • Integrált I/O egységek A különböző AVR ATmega mikrokontroller típusok magja hasonló felépítésű, a magon belül alapvetően csak a program- és adatmemória méretében vannak különbségek.
1/8
Mérés labor II. ATmega128 2004-09-20
8-bit Data Bus
32 x 8 bit General Purpose Registers
SPI Unit Data RAM
ALU
I/O Module 1 Addr. & Control I/O Module 2
Flash Program Memory
Instruction Register & Decoder
IT Unit
Watchdog Unit Program Counter
I/O Module n
AVR CPU Core
1. ábra AVR ATmega mikrokontrollerek tömbvázlata A CPU mag A mikrokontroller tömbvázlatát (1. ábra) megtekintve megállapíthatjuk, hogy a programkódnak és az adatoknak külön memóriája van, nem egy közös tárban találhatók. Az adatátviteli csatorna is más a programkód számára, mint az adatok számára. Ebből nyilvánvaló, hogy egy nonNeumann architektúráról van szó. A CPU ún. Harvard-architektúrával rendelkezik, hasonlóan az egy chipbe integrált mikrokontrollerek többségéhez. A CPU aritmetikai része RISC jellegű, a gyártó egy "Advanced RISC Architecture"-ről beszél. Az utasításkészlet 133 utasítást tartalmaz, ezek többsége 1 órajelciklus alatt hajtódik végre. A CPU mag 32 általános célú regisztert tartalmaz, melyek közvetlenül kapcsolódnak az ALU egységhez. Az aritmetikai műveletek operandusainak a regiszterekben kell lenniük illetve az egyikük egy konstans is lehet. Az adatmemóriában lévő változón nem tudunk közvetlenül műveletet végrehajtani, azt előbb be kell tölteni valamelyik regiszterbe. Ezt szokás "Load/Store architektúrának" is nevezni, ami azt jelenti hogy az adatmemóriához csak Load vagy Store jellegű utasítással fordulhatunk. Ez szintén jellemző a RISC processzorokra. Az ALU egy szorzó áramkört is tartalmaz.
2/8
Mérés labor II. ATmega128 2004-09-20 Integrált program- és adatmemória • 128 KByte In-System Reprogrammable Flash a programkód számára. (In-System Programmable: a rendszerbe beépített (beforrasztott) IC programozható és törölhető is az IC-ben található égetőprogram segítségével.) • 4K Bytes EEPROM, az adott alkalmazás paramétereinek tárolására. • 4K Bytes Internal SRAM mint adatmemória. • SPI Interface for In-System Programming. Általános digitális I/O portok Az ATmega128 is rendelkezik a mikrokontroller esetében általános digitális I/O portokkal. Rendelkezésre áll: • 6 db 8-bites kétirányú digitális I/O port és • 1 db 5-bites kétirányú digitális I/O port. Gyakorlatilag minden, be/kimeneti célú lábra csatlakozik valamelyik digitális I/O port egyik lába. A digitális I/O port kivezetések többsége más funkcionális I/O modulhoz, integrált perifériához is csatlakozik. Ha ezt a másik perifériát használjuk, akkor az adott lábakat nem használhatjuk általános digitális I/O-ként. Az általános digitális I/O portok felépítésével később külön foglalkozunk. JTAG (IEEE std. 1149.1 Compliant) Interface • Perem-letapogatásos (Boundary Scan) tesztelési lehetőség a IEEE std. 1149.1 szabványnak (JTAG) megfelelően • Integrált fejlesztést (Debug) támogató HW egységek, melyek a JTAG interfészen keresztül kezelhetők. • A Flash program-memória és az EEPROM is programozható a JTAG interfészen keresztül Integrált perifériák • 2. db 8-bites Timer/Counter külön előosztó (Prescaler) egységgel és Compare üzemmóddal • 2 db 16-bites Timer/Counter külön előosztó (Prescaler) egységgel és Compare valamint Capture üzemmóddal • Real Time Counter külön saját oszcillátorral • 2 db 8-bites PWM (pulzus-szélesség modulációs) csatorna • 6 db PWM csatorna with 2 től 16 bitig programozható felbontással • Output Compare Modulator • Egy 8-csatornás, 10-bit felbontású A/D átalakító (ADC), melynek bemeneti egysége az alábbi módok valamelyikébe konfigurálható - 8 Single-ended Channels - 7 Differential Channels - 2 Differential Channels with Programmable Gain at 1x, 10x, or 200x • Byte-orientált kétvezetékes soros interfész (Two-wire Serial Interface) • Dual Programmable Serial USARTs • Master/Slave SPI soros interfész • Programozható Watchdog Timer integrált óragenerátorral • Analog komparátor Egyéb speciális funkciók (Special Microcontroller Features) Különböző kiegészítő egységeket és funkciókat is beintegráltak az IC-be, amelyek közül néhányat megemlítünk: 3/8
Mérés labor II. ATmega128 2004-09-20 • • • • •
Bekapcsolási Reset áramkör (Power-on Reset) Programozható Brown-out (tápfeszültség-csökkenés) detektor (Brown-out Detection) Belső kalibrált RC Oscillator Belső és külső interrupt lehetőségek Különféle alvó-módok: Idle, Power-save, Power-down, Standby, Extended Standby
2. Regiszterek Általános célú regisztertömb (General Purpose Register File) A CPU mag 32 darab 8-bites általános célú regisztert tartalmaz, melyek közvetlenül kapcsolódnak az ALU egységhez. Általánosan ezen regiszterek tartalmazzák az aritmetikai utasítások operandusait, és az eredmény is valamelyik regiszterbe kerül. A regiszterek általában egyenrangúak, de néhány utasításnál egyes regisztereknek kivételes szerepük van. A legfontosabbak a következők: Az LDI (Load Immediate) utasítás csak a felső 16 regiszterre (R16 -R31) van értelmezve. Az R26-27, R28-29 és az R30-31 regiszter-párok 16 bites mutatóként szerepelnek egyes Load/Store utasításokban, mint pl. Load indirect From Data Space to Register using Index X, Y or Z Load Byte pointed by Z into Register Store indirect From Register to Data Space using Index X, Y or Z
Stack-mutató (Stack Pointer) A 16 bites SP (Stack Pointer) regiszter mindig a stack logikai tetejére mutat. A stack fizikai növekedési iránya a magasabb memória címek felől az alacsonyabb címek felé tart. (A PUSH utasítás az SP regiszter tartalmát csökkenti, a POP növeli.) Ezért a stack kezdetét a RAM legmagasabb címére szokás helyezni. Állapotregiszter (Status Register) A 8 bites állapotregiszter elsődlegesen az aritmetikai műveletek eredményére utal. Például a Z (Zero) bit megmutatja, hogy az eredmény értéke nulla-e. Az, hogy az egyes utasítások mely biteket állítják, az utasítás-táblázatban van feltüntetve. A regiszter ezen kívül tartalmazza az interruptot általánosan engedélyező/tiltó bitet, az I-bitet. Fontos megjegyezni, hogy a státuszregiszter tartalma interrupt rutinba ugráskor nem mentődik automatikusan, ezt a programozónak kell biztosítani. (A PC-k Intel IA-32 architektúrájú (és ezzel kompatibilis) processzorjai esetében a mentés és visszaállítás automatikus.)
4/8
Mérés labor II. ATmega128 2004-09-20 Az egyes bitek jelentése: Bit 7 – I: Global Interrupt Enable Bit 6 – T: Bit Copy Storage Bit 5 – H: Half Carry Flag Bit 4 – S: Sign Bit, S = N exor V Bit 3 – V: Two’s Complement Overflow Flag Bit 2 – N: Negative Flag Bit 1 – Z: Zero Flag Bit 0 – C: Carry Flag
3. Az integrált programmemória és adatmemória Az AVR architektúrának két fő memória-tartománya van: • programmemória tartomány (Flash Program Memory) • adatmemória tartomány (Data Memory) A két fő memória-tartomány felépítése a 2. ábrán látható. A programmemóriában kijelölhető egy Boot-szekció, amelyben betöltő, futtató programot (operációs rendszerecskét) lehet elhelyezni. Ez a rész védelemmel is ellátható. A laborban ilyen szekciót nem definiálunk.
Flash Program Memory
Data Memory
$0000
$0000 $0020 $0060 Application Section
32 Registers 64 Standard I/O Registers 160 Extended I/O Registers
$0100 Internal SRAM (4096 x 8 bit) $10FF $1100 Optional External SRAM
Boot Section $FFFF
$FFFF
2. ábra Az ATmega128 két fő memória-tartománya Az adatmemória tartomány érdekessége, hogy ebben az általános regisztertömb és az I/O tartomány regiszterei is megtalálhatók. A regiszterek így is elérhetők. Ezen kívül az ATmega128 mikrokontrollerben található még egy 4 kB kapacitású EEPROM, az adott alkalmazás paramétereinek, adatainak "nem-felejtő" tárolására. 5/8
Mérés labor II. ATmega128 2004-09-20
4. Az általános digitális I/O portok felépítése A digitális I/O portok a mikrokontrollereknél szokásos felépítésűek. Az I/O portok kétirányúak, tehát kimenetként vagy bemenetként is működhetnek. Az irány bitenként programozható, minden porthoz tartozik egy irányt meghatározó regiszter. Az ATmega128 portjainak felépítését (a [2] dokumentum Figure 30 alapján) a 3. ábra mutatja, működését pedig a 4. ábrán látható táblázat (Table 25 in [2]).
3. ábra Az általános digitális I/O portok felépítése A port működése a következőképp foglalható össze. A porthoz tartozik egy adatregiszter melynek jelölése PORTx, egy DDRx jelölésű irányregiszter, és egy csak olvasható PINx regiszter, ahol x a port betűjele (A - G). A regiszter n-edik bitje PORTxn, DDxn illetve PINxn. Ha az irányregiszter DDxn bitje 1 értékű, akkor az adatregiszter PORTxn bitje hajtja meg a megfelelő kivezetést (PIN) egy tri-state pufferen keresztül. Ha a kivezetést bemenetként kívánjuk használni, akkor kimeneti puffer harmadik (HiZ, nagyimpedanciás) állapotba kell kapcsolni a DDxn bit 0-ba írásával.
6/8
Mérés labor II. ATmega128 2004-09-20
4. ábra A digitális I/O portok vezérlése A kivezetés állapotát, az ott észlelhető logikai szintet a PINx regiszterből olvashatjuk vissza. A kivezetés állapota egy szinkronizáló áramkörön keresztül kerül beolvasásra, hogy elkerüljék a metastabil állapot esetleges fellépését. Minden kivezetéshez egy felhúzó (pull-up) ellenállás is kapcsolódik. A felhúzó ellenállás lekapcsolható az SFIOR regiszter PUD jelü bitjének állításával, illetve befelé irány esetén a megfelelő PORTxn bit törlésével. Fontos megjegyezni, hogy az ATmega128 kontrollerben az F és G port címzése már nem fért be az I/O regiszterek tartományába, hanem memóriába ágyazott (memory mapped) lett, a PINF regiszter kivételével. Ennek megfelelően nem in vagy out utasításokkal, hanem load és store típusú utasításokkal férhetünk hozzá.
5. Az I/O portok alternatív funkciói A mikrokontroller nagyszámú integrált perifériát tartalmaz, melyeknek természetesen vannak bemeneteik és kimeneteik. Ha ezek mindegyikéhez egy dedikált kivezetést rendelnének, akkor olyan nagy lábszám adódna, aminek használata az alkalmazást jelentősen nehezítené és nagy költségekkel járna. Ezért az integrált perifériák be/kimeneteit ugyanazon lábakhoz vezetik, mint az általános digitális I/O portokét. A perifériák be/kimeneti jeleit nevezik az I/O portok alternatív funkciójának. Az áramkörök úgy vannak kialakítva, hogy ha engedélyezzük az integrált periféria működését, akkor annak kimenő jelei automatikusan meghatározzák a kivezetés állapotát, felülírják (override) a digitális I/O port által meghatározott értéket.
Irodalom [1] -: Atmel ATmega128(L) 8-bit AVR Microcontroller; Summary (27 pages, updated 05/04) http://www.atmel.com/dyn/resources/prod_documents/2467S.pdf, [2] -: Atmel ATmega128(L) 8-bit AVR Microcontroller; Complete (389 pages, updated 05/04) http://www.atmel.com/dyn/resources/prod_documents/doc2467.pdf [3] Zier, David: AVRStudio4 and Atmega128; A Beginner's Guide starterguide.pdf http://eecs.oregonstate.edu/education/classes/ece375/starterguide.pdf (Oregon State University),
7/8
Mérés labor II. ATmega128 2004-09-20
Függelékek F1. Az AVR ATmega128 mikrokontroller részletesebb tömbvázlata Az alábbi tömbvázlat az [1] irodalomból van átvéve.
8/8