osnove mikroprocesorske elektronikelpvo.fe.uni-lj.si/fileadmin/files/izobrazevanje/ome/...texas msp...
TRANSCRIPT
Osnove mikroprocesorske elektronikedoc. dr. Marko Jankovec
Arhitektura AVR
O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 2
Rezultati ankete
6.3.2013Arhitektura AVR
Ali si predstavljate princip delovanja mikoprocesorja? 24
Medlo. 5
Približno. 13
Se mi ne sanja. 3
Vse jasno. 3
Ali ste že kdaj delali s kakšnim mikroprocesorjem/mikrokrmilnikom? 24
Nikoli. 2
Samo v okviru vaj na FE. 12
Samo v okviru vaj na srednji šoli. 2
Večkrat. 8
Kateri programski jezik najbolje poznate? 48
C 19
Html 12
Java script 9
Nobenega od teh. 6
Php 2
Katero družino mikrokrmilnikov poznate? 48
ARM7 4
ATMEL AVR 6
INTEL 8051 2
MOTOROLA 68xxx 6
Nobene od teh. 20
PIC 9
TEXAS MSP 1
O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 3
Rezultati ankete
6.3.2013Arhitektura AVR
Koliko imate predznanja iz jezika C? 24
Ločim med *a, a in &a. 7
Vem kaj pomeni a+=b; 6
Vem, kaj pomeni i++; 11
Koliko imate predznanja iz področja elektronskih vezij? 24
Sem si že načrtal in sestavil elektronsko vezje. 13
Vem, da po žici lahko teže tok. 2
Znam izračunati napetostni delilnik. 6
Znam uporabiti operacijski ojačevalnik. 3
Koliko imate predznanja o digitalnih logičnih operacijah in vezjih? 24
Ločim med 1 in 0. 1
Poznam delovanje D celice (flip flopa). 13
Toliko, da sem naredil izpit. 4
Znam pretvarjati med številskimi sistemi. 6
Koliko imate predznanja o kakršnemkoli zbirniškem (assemblerskem) jeziku? 24
Kakšnem jeziku? 4
Nekje sem že slišal nekaj o tem. 11
Sem pri programiranju že uporabil zbirniški ukaz. 5
Sem že napisal program v zbirniku. 4
O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 4
Pregled ATMEL mikrokrmilnikov
6.3.2013Arhitektura AVR
O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 5
Pregled ATMEL AVR mikrokrmilnikov
6.3.2013Arhitektura AVR
• tinyAVR®▫ 8-bitni mikrokrmilniki z do 16kB Flash programskega pomnilnika, 512B
SRAM in EEPROM.• megaAVR®▫ 8-bitni mikrokrmilniki s strojnim množilnikom. Do 256kB Flash, 4kB
EEPROM in 8kB SRAM.• XMEGA™▫ 8/16-bit mikrokrmilniki z napredno periferijo
• AVR32 UC3 in AP7▫ Visokozmogljivi 32-bitni mikrokrmilniki z do 512kB Flash, 128kB SRAM.
• Aplikacijsko specializirani mikrokrmilniki▫ Vsebujejo posebno periferijo za namensko aplikacijo▫ LCD gonilniki, CAN povezovanje (avtomobilska industrija), USB
povezovanje, gonilniki za motorje, razsvetljava, upravljanje z baterijami, IEEE 802.15.4/ZigBee™ brezžične komunikacije, brezžično daljinsko upravljanje.
http://www.atmel.com/dyn/resources/prod_documents/doc4064.pdf
O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 6
AVR 8-bitni mikrokrmilniki
6.3.2013Arhitektura AVR
• 8-bit CMOS RISC s harvardsko arhitekturo
• večina inštrukcij se izvede v 1 ciklu
• 32 splošno-namenskih (GPR) registrov
• (1MIPS na MHz), ura od DC do 32 MHz
• 1.8 V do 5.5 V napetostno območje
• PicoPower – poraba 0.4 mA @(1.8V, 1 MHz)
• Programski FLASH 1–256 kB v ohišjih 6-100 pin
• In-system programiranje in razhroščevanje
• Širok nabor periferije
• Nizka cena in neproblematična dobavljivost
O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 7
Periferija
6.3.2013Arhitektura AVR
• Programabilni FLASH in EEPROM▫ Ločen pomnilniški del za samoprogramiranje (boot)
• SPI in paralelno programiranje, JTAG, debugWIRE• 8-bit in 16-bit časovniki z prescalerji▫ IC, CC in PWM▫ 32 kHz RTC
• večkanalni 10-bit oz. 12-bit ADC▫ notranja ali zunanja referenca▫ diferencialni predojačevalniki▫ primerjalnik
• POR, Brown-out, sleep modes• Notranje in zunanje prekinitve• Notranji RC oscilator• USART, SPI, TWI (I2C), USB, CAN• LCD gonilniki, skenerji za tipkovnice
O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 8
Tipični predstavniki
6.3.2013Arhitektura AVR
μC Ohišje I/O FLASH RAM EE ADC TimerCena
1 kos
Cena
100 kos
ATtiny10 6-SOT23 4 1kB 32B - 4x8bit1x16bit
2xPWM0.52€ 0.38€
ATtiny13A 8SOIC 6 1kB 64B 64B 4x10bit1x8bit
2xPWM1.11€ 0.72€
ATmega8 32TQFP 23 8kB 1kB 512B 8x10bit2x8,1x16bit
3xPWM1.75€ 1.3€
ATmega88PA 32TQFP 23 8kB 1kB 512B 8x10bit2x8,1x16bit
6xPWM2.88€ 1.88€
ATmega1284PA 44TQFP 32 128kB 16kB 4kB 8x10bit2x8, 2x16bit
6xPWM8.04€ 5.27€
ATmega2560V 100TQFP 86 256kB 8kB 4kB 16x10bit2x8,4x16bit,
16xPWM19.6€ 8.93€
ATmega32U2 32TQFP 22 32kB 1kB 1kB -1x8,1x16bit
5xPWM2.96€ 2.19€
ATxmega128D3 64TQFP 50 128kB 8kB 2kB16x12bit
2xDAC
5x16bit
16xPWM3.87€ 2.87€
ATxmega128A1 100TQFP 78 128kB 8kB 2kB16x12bit
4xDAC
8x16bit
24xPWM11.09€ 5.31€
O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 9
ATMEL razvojna orodja
6.3.2013Arhitektura AVR
• ATMEL Studio 6 ▫ assembler + simulator + WinAVR GNU C
• AVR ISP mkII▫ in-curcuit SPI programmer
• AVR Dragon▫ SPI, Paralel, JTAG, debugWIRE
• AVR JTAG ICE mkII▫ JTAG in debugWIRE
• STKxxx starter kits▫ Tipke, LED, RS-232, serial EEPROM▫ SPI in paralelno programiranje▫ Generator ure, napajalnih napetosti▫ Različni adapterji
O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 10
Ostala razvojna okolja
6.3.2013Arhitektura AVR
• BASCOM AVR – BASIC – 89€▫ www.mcselec.com,
• WinAVR – opensource gcc▫ http://winavr.sourceforge.net/
• iMAGEcraft – C - $249▫ www.imagecraft.com/
• Codevision – C – 150€▫ www.hpinfotech.ro
• IAR AVR – C - ∞€▫ www.iar.com
O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 11
Arhitektura AVR mikrokrmilnikov
6.3.2013Arhitektura AVR
• Harvardska arhitektura▫ 8-bitna
▫ Ločen programski (flash) in delovni pomnilnik (SRAM)
• Pomnilniki▫ Flash programski pomnilnik
▫ SRAM 32 splošno namenskih registrov Posebni registri (PC, IR, SREG, …) Delovni pomnilnik I/O registri za kontrolo perifernih enot
▫ EEPROM
• Programiranje Flash in EEPROM▫ Paralelno, JTAG, SPI, DebugW, …)
• Periferija▫ Nadzor delovanja (WDT, Brown-out, …)
▫ Digitalna (I/O linije, števci, prekinitve)
▫ Komunikacije (UART; SPI, IIC, …)
▫ Analogna (ADC, Analogni primerjalnik, …)
O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 12
Jedro AVR6.3.2013Arhitektura AVR
Microschematic
• ALU ▫ neposredno izvaja operacije
nad 32 splošno-namenskimi registri
▫ prenaša vsebino med splošno namenskimi registri in
SRAM registri I/O enot Flash EEPROM
• Neposredno naslavljanje▫ Vsebina, ki se prenese v
register je del vsebine inštrukcije v flash pomnilniku
• Posredno naslavljanje▫ Del kode v flash pomnilniku
vsebuje naslov v SRAM, kjer se nahaja vsebina, ki se prenese v register
O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 13
Izvajanje inštrukcij - dvonivojsko cevovodenje
6.3.2013Arhitektura AVR
R -> ALU -> R
Naloži 1
Izvedi 1 Izvedi 2 (PC=x)
Naloži 2 (skok) Naloži 3 Naloži x
Izvedi 3 Izvedi x
Naloži x+1
O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E
SRAM pomnilnik pri AVR
• Organiziran po 8-bitov
• Prvih 32 lokacij
▫ rezervirano za splošne registre
• Naslednjih 64 lokacij
▫ rezervirano za registre I/O enot
• Če je to premalo:
▫ Dodatne lokacije v RAM-u (npr. 160) rezerviranih za registre I/O enot
6.3.2013Arhitektura AVR
14
Microschematic
O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 15
32 splošnih registrov
6.3.2013Arhitektura AVR
• Večina inštrukcij lahko neposredno dostopa do vseh registrov▫ Nekatere (operacije s konstantami,
množenje) le od R16 do R31
• Registri so dostopni tudi preko RAM na lokacijah od 0x00 do 0x1F
• Posebni registri:▫ RO in R1 – rezultat nekaterih ukazov
16 bitni rezultat množenja 16 bitna vrednost za ukaz SPM rezultat ukaza LPM
▫ X, Y in Z kazalci So uporabljeni v posebnih ukazih z
indirektnim naslavljanjem
Xlow
Xhigh
Ylow
Yhigh
Zlow
Zhigh
O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 16
Splošni in I/O registri
6.3.2013Arhitektura AVR
O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 17
I/O registri
6.3.2013Arhitektura AVR
I/O pin
O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 18
I/O registri
6.3.2013Arhitektura AVR
• Ukazi OUT in IN
▫ Naslovi od 0x00 do 0x3F
▫ Ti ukazi trajajo 1 cikel
• Registri od 0x00 do 0x1F so tudi bitno naslovljivi (CBI,SBI,SBIS,SBIC)
• Vsi so dostopni preko RAM (LD,ST)
▫ Vendar na drugih lokacijah + 0x20 (od 0x20 do 0x5F) !!
▫ Ti ukazi trajajo 2 cikla
• Več periferije?
▫ Razširjeni I/O registri, dostopni le preko RAM
http://lpvo.fe.uni-lj.si/fileadmin/files/Izobrazevanje/OME/dev/doc8272.pdf, poglavje 29
O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 19
Programski števec (PC)
6.3.2013Arhitektura AVR
Microschematic
• PC šteje vedno navzgor• PC kaže na lokacijo v
programskem pomnilniku, ki se bo izvedla
• Vejitveni ukazi (jmp, rjmp, ..) vpišejo novo lokacijo v PC▫ V naslednjem strojnem
ciklu se program izvaja od nove lokacije naprej 0000
O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 20
Statusni register
6.3.2013Arhitektura AVR
Maskiranje prekinitev Bit store
Polovični prenos
Predznak
Preliv
Negativna vrednost
Vrednost 0
Prenos
V HC
O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 21
Organizacija inštrukcij
6.3.2013Arhitektura AVR
Microschematic
O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 22
Nabor inštrukcij – arimetične in logične operacije
6.3.2013Arhitektura AVR
Microschematic
O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 23
Nabor inštrukcij – bitne operacije in testiranja
6.3.2013Arhitektura AVR
Microschematic
O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 24
Nabor inštrukcij – vejitve
6.3.2013Arhitektura AVR
Microschematic
O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 25
Nabor inštrukcij – Prenos podatkov
6.3.2013Arhitektura AVR
Microschematic
O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 26
Načini naslavljanja
6.3.2013Arhitektura AVR
Microschematic
O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 27
Neposredno naslavljanje enega splošnega registra
6.3.2013Arhitektura AVR
SER Rd Set Register
CLR Rd Clear Register
INC Rd Increment
DEC Rd Decrement
LSL Rd Logical Shift Left
LDI Rd,K Load immediate constant
ORI Rd,K OR immediate with constant
Microschematic
O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 28
Neposredno naslavljanje dveh splošnih registrov
6.3.2013Arhitektura AVR
CP Rd, Rr CompareADC Rd, Rr Add with CarrySBC Rd, Rr Subtract with CarryAND Rd, Rr Logical ANDOR Rd, Rr Logical OR
Microschematic
O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 29
Neposredno naslavljanje I/O registrov
6.3.2013Arhitektura AVR
SBI A, b Set Bit in I/O Register CBI A, b Clear Bit in I/O RegisterBST Rr, b Bit Store from Register to TBLD Rd, b Bit load from T to RegisterIN Rd, A In From I/O Location RdOUT A, Rr Out To I/O Location
Microschematic
O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 30
Neposredno naslavljanje delovnega pomnilnika
6.3.2013Arhitektura AVR
LDS Rd, k Load Direct from data spaceSTS k, Rr Store Direct to data space
Microschematic
O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 31
Posredno naslavljanje delovnega pomnilnika
6.3.2013Arhitektura AVR
LD Rd, X Load IndirectLD Rd, Y Load IndirectLD Rd, Z Load IndirectST X, Rr Store Indirect
Microschematic
O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 32
Posredno naslavljanje DP z naknadnim povečanjem za 1
6.3.2013Arhitektura AVR
LD Rd, Z+ Load Indirect and Post-IncrementST Y+, Rr Store Indirect and Post-Increment
1 0 0 0
Microschematic
O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 33
Posredno naslavljanje DP s predhodnim zmanjšanjem za 1
6.3.2013Arhitektura AVR
LD Rd, -X Load Indirect and Pre-DecrementST -X, Rr Store Indirect and Pre-Decrement
1
Microschematic
O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 34
Posredno naslavljanje delovnega pomnilnika z odmikom
6.3.2013Arhitektura AVR
LDD Rd,Y+a Load Indirect with Displacement
Microschematic
O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 35
Posredno naslavljanje programskega pomnilnika
6.3.2013Arhitektura AVR
LPM Load Program Memory into R0LPM Rd, Z Load Program Memory into RdSPM Store Program Memory from R0,R1 (16 bit)
Microschematic
O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 36
Posredni skok na lokacijo programskega pomnilnika
6.3.2013Arhitektura AVR
IJMP Z Jump to location Z (PC <- Z)ICALL Z Call subroutine on location Z (PC <- Z)
Microschematic
O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 37
Neposredni skok na relativno lokacijo programskega pomnilnika
6.3.2013Arhitektura AVR
RJMP k Jump to location PC+k+1RCALL k Call subroutine on location PC+k+1
Microschematic
O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 38
Neposredni skok na absolutno lokacijo programskega pomnilnika
6.3.2013Arhitektura AVR
JMP k Jump to location kCALL k Call subroutine on location k
0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 10 0 0 0 0 0Op. Code
0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1
Microschematic