Documente Academic
Documente Profesional
Documente Cultură
E Galati
Laborator uC&DSP
TS41a - Grupa 1
Botin Bogdan
TEMA 1
Microcontrolere si DSp-uri
Fabricantul de microntrolere: ATMEL-AVR.
- comparatoare
Prezenta tuturor acestor blocuri interne determina utilizarea microcontrollerelor intr-o gama foarte
larga de aplicatii.
Consumul de energie este foarte mic, domeniul tensiunilor de alimentare este cuprins intre 1.8 si 5V.
Prezinta 6 module diferite de stand-by care asigura ca aceste micrcontrollere nu vor consuma energie decat
atunci cand este nevoie.
b. Caracterizarea din punct de vedere software (mediu de programare, aplicatii):
Instructiunile acestei familii de microcontrolere au fost proiectate pentru a reduce dimensiunea unui
program scris in limbaje precum asamblare sau C.
Controlul software al frecventei garanteaza o viteza mare de executie atunci cand este nevoie, iar in
restul timpului microcontrolerul poate trece in stand-by unde consumul de energie este minim.
Pentru dezvoltarea programelor se poate folosi orice editor text (notepad, vim, etc) recomandat fiind
totusi un ide mai puternic. IDE-ul OEM este AVR Studi, oferit de catre Atmel, si foloseste compilatorul
WinAVR.
c. Domenii de aplicabilitate
Posibilitatea programarii memoriei FLASH si a memoriei EEPROM, determina ca acestea sa aiba o
larga utilizare datorata costului mic de dezvoltare a unei aplicatii (timpul de proiectare scurt).
Utilizarea acestor microcontrolere poate reduce semnificativ timpul de dezvoltare a unei aplicatii
datorita prezentei pe acestea a unui bloc de depanare in timp real, circuitul aflandu-se pe placa ce reprezinta
aplicatia. Se poate face in timp real operatii de watch asupra unor registri,operatii de rulare pas cu pas,
operatii de oprire in breakpoint.
Microcontrollerele ATMEL i gsesc utilitatea n accesoriile audio, smartphone-uri, perifericele jocurilor
video, echipamentele medicale avansate, circuite de control i management a ncrcrii bateriilor LiIon/Polymer,n circuitele de iluminare etc. De asemenea pot utilizate cu succes n comanda display-urilor
LCD, Touchscreen i a motoarelor, n circuite de comunicatii wireless , USB i/sau Ethernet, etc.
Descrierea pinilor
Portul A (PA7 .. PA0)
Port-ul A servete drept port de intrri analogice pentru Convertorul A/D.
Port-ul A serveste de asemenea i ca un port bidirecional I/O de 8 bii,n cazul n care Convertorul A/D nu
este folosit. Pinii de port pot fi conectai opional la VCC prin rezistori interni, (selectai pentru fiecare bit).
Buffer-ele de ieire ale Portului A au caracteristici de amplificare .
5
Modul Power-down salveaza coninutul registrelor, dar blocheaza oscilatorul, dezactivnd toate
celelalte funcii al chip-ului pan la urmatoarea Intrerupere Externa sau Reset hardware. In modul Powersave, timer-ul asincron continua sa mearga, permiind user-ului sa menina o baza de timp in timp ce restul
dispozitivului este oprit.
In modul Stand-by , oscilatorul funcioneaz n timp ce restul despozitivului este oprit. Acest lucru
permite un start rapid combinat cu un consum redus de energie. In modul stand-by extins (Extended Stanby
Mode), atat oscilatorul principal cat i timer-ul asincron vor continua s funcioneze.
Memoria flash (On-chip) permite s fie reprogaramat printr-o interfa serial SPI , de catre un
programator de memorie nonvolatil convenional, sau de ctre un program de boot On-chip ce ruleaza pe
baza AVR. Programul de boot poate folosi orice interfata pentru a incarca programul de aplicaie in memoria
Flash .
Combinnd un CPU RISC de 8 bii cu un Flash In-system auto programabil pe un chip monolithic,
ATmega 16 este un microcontroler puternic ce ofera o solutie extrem de flexibil i cu un cost redus n
comparaie cu multe altele de pe piaa.
.
Dispune de un set de 131 instruciuni i 32 de regitri de uz general. Cele 32 de registre sunt direct
adresabile de Unitatea Logica Aritmetica (ALU), permind accesarea a doua registre independente intr-o
singura instruciune. Se obine astfel o eficiena sporita in execuie (de pana la zece ori mai rapide decat
microcontrorelerele convenionale CISC).
ALU- Unitatea Aritmetica Logica
Cea mai inalt performan a AVR ALU este aceea c lucreaz direct cu cele 32 de registre. In timpul
unui singur ciclu de ceas se efectueaza operaii aritmetice ntre registre sau ntre registre i o constanta ,
acestea sunt executate imediat. Operaiile pe care le executa unitatea ALU sunt mparite n trei mari
categorii: aritmetice, logice i funciuni de bit. Unele implementri ale arhitecturi pot efectua i multiplicri
cu sau far semn i/sau n regim de fracie. Mai multe detalii se gsesc n Setul de Instruciuni.
Registrul de stare
Registrului conine informaii despre ultima operaie aritmetica efectuat. Aceast informaie poate fi
folosit pentru a alterna de la program la executarea unei alte operaii mai prioritar. Situaia registrului este
actualizat dup fiecare execuie a unei operaii aritmetice, aa cum se specific n setul de instructiuni.
Aceasta poate duce n multe cazuri la nefolosirea concreta a fiecrei instruciuni n parte ci a unui cod mai
compact de instruciuni care efectueaz mai rapid operaia.AVR Status Register este definit ca:
8
10
11
12
13
ADD
Program counter(PC) contine adresa instructiunii (adunare) ce urmeaza a fi executata ,este transferata prin
intermediul magistralei de adrese la memoria Flash (EPROM) si prin intermediul unei magistrale bidirectionale
ajung la decodificatorul de instructiuni. Valoarea coninut de PC va fi incrementat dupa fiecare ciclu instruciune.
Instructiunea este preluata din memoria de program (EPROM). ALU va executa operatia(adunare) care a fost
indicata in memoria program cu ajutorul adresei din program counter
Descriere:
Aduna doua register fara indicatorul carry si pune rezultatul in registrul destinatie
Operation:
(i) Rd Rd + Rr
Syntax:
(i) ADD Rd,Rr
Operands:
0 d 31, 0 r 31
Program Counter:
PC PC + 1
16-bit Opcode:
0000
11rd
dddd
rrrr
T
-
Exemplu:
a
d
a
r1,r
2r28,
r28
; Add r2 to r1 (r1=r1+r2)
;
Add
r28
(r28=r28+r28)
to
itself
SUBB
PC contine adresa instructiunii(scadere) ce urmeaza a fi executata , este transferata prin intermediul
magistralei de adrese la memoria program (EPROM) si prin intermediul unei magistrale bidirectionale ajung la
decodificatorul de instructiuni. Valoarea coninut de PC va fi incrementat dupa fiecare ciclu instruciune.
Instrctiunea este preluata din memoria de program (EPROM). ALU va executa operatia(scadere) care a fost
indicata in memoria program cu ajutorul adresei din program counter
Descriere:
Scade dou registre i pune rezultatul n registrul destinaie Rd.
Operation:
(i) Rd Rd - Rr
14
Syntax:
(i) SUB Rd,Rr
Operands:
0 d 31, 0 r 31
Program Counter:
PC PC + 1
16-bit Opcode:
000
10r
ddd
rrrr
Operands:
0 d 31, 0 r 31
Program Counter:
PC PC + 1
16-bit Opcode:
0001
11rd
dddd
rrrr
T
-
Operands:
Program Counter:
d {24,26,28,30}, 0 K 63 PC PC + 1
16-bit Opcode:
1001
0110
KKd
KKK
Operands:
0 d 31, 0 r 31
Program Counter:
PC PC + 1
15
16-bit Opcode:
000
10r
ddd
rrrr
Operands:
16 d 31, 0 K 255
16-bit Opcode:
010
KK
ddd
Program Counter:
PC PC + 1
KK
Operands:
0 d 31, 0 r 31
Program Counter:
PC PC + 1
16-bit Opcode:
000
10r
ddd
rrrr
16 d 31, 0 K 255
PC PC + 1
16
16-bit Opcode:
010
KK
ddd
KK
Operands:
Program Counter:
d {24,26,28,30}, 0 K 63 PC PC + 1
16-bit Opcode:
100
011
KK
KK
Operands:
0 d 31, 0 r 31
Program Counter:
PC PC + 1
17
16-bit Opcode:
0010
00rd
dddd
rrrr
Operands:
16 d 31, 0 K 255
16-bit Opcode:
0111
KKK
dddd
KKK
Anexa 1
18
Program Counter:
PC PC + 1
19
ANEXA 2
Operands
Description
ADD
Rd, Rr
Operation
Flags
#Clocks
ADC
Rd, Rr
Rd, K
SUB
Rd, Rr
Rd, K
Rd, Rr
SBCI
Rd, K
Rd, K
Rd, Rr
Logical AND
ANDI
Rd, K
ORI
Rd, Rr
Rd, K
Rd, Rr
Exclusive OR
Rd
Ones Complement
Rd,K
CBR
Rd,K
Rd
Rd
Decrement
TST
Rd
Rd
Rd
Set Register
MUL
Rd,Rr
Multiply Unsigned
MULSU
Rd,Rr
Rd,Rr
Rd + 1:Rd + K
Rd
Rd - Rr
Rd
Rd - K
Rd
Rd - Rr - C
Rd
Rd - K - C
Rd + 1:Rd
Rd + 1:Rd - K
Rd
Rd Rr
Rd
Rd K
Rd
Rd v Rr
Rd
Rd v K
Rd
Rd Rr
Rd
$FF - Rd
Rd
$00 - Rd
Rd
Rd v K
Rd
Rd ($FFh - K)
Rd
Rd + 1
Rd
Rd - 1
Rd
Rd Rd
Rd
Rd Rd
Rd
$FF
R1:R0
Rd x Rr (UU)
R1:R0
Rd x Rr (SS)
R1:R0
Rd x Rr (SU)
R1:R0
Rd x Rr<<1 (UU)
R1:R0
Rd x Rr<<1 (SS)
R1:R0
Rd x Rr<<1 (SU)
if (H = 0) then R15:R0
else if (H = 1) then R15:R0
Encrypt(R15:R0, K)
Decrypt(R15:R0, K)
PC
PC + k + 1
Clear Register
SER
MULS
Increment
DEC
CLR
Rd
Twos Complement
SBR
INC
Rd + Rr + C
COM
Rd
Logical OR
EOR
NEG
Rd
AND
OR
Rd + Rr
Subtract Immediate
SBC
SBIW
ADIW
SUBI
Rd
Multiply Signed
Multiply Signed with Unsigned
FMUL
Rd,Rr
FMULS
Rd,Rr
FMULSU
Rd,Rr
DES
Data Encryption
Z,C,N,V,S,H
Z,C,N,V,S,H
Z,C,N,V,S
Z,C,N,V,S,H
Z,C,N,V,S,H
Z,C,N,V,S,H
Z,C,N,V,S,H
Z,C,N,V,S
Z,N,V,S
Z,N,V,S
Z,N,V,S
Z,N,V,S
Z,N,V,S
Z,C,N,V,S
Z,C,N,V,S,H
Z,N,V,S
Z,N,V,S
Z,N,V,S
Z,N,V,S
Z,N,V,S
Z,N,V,S
None
Z,C
Z,C
Z,C
Z,C
Z,C
Z,C
2
1/2
Branch Instructions
RJMP
Relative Jump
None
IJMP
PC(15:0)
PC(21:16)
Z,
0
None
EIJMP
PC(15:0)
PC(21:16)
Z,
EIND
None
None
JMP
PC
Jump
20
RCALL
PC
PC + k + 1
None
2 / 3(1)
ICALL
PC(15:0)
PC(21:16)
Z,
0
None
2/3
EICALL
PC(15:0)
PC(21:16)
Z,
EIND
None
3(1)
21
(1)
Mnemonics
Operands
Description
CALL
call Subroutine
RET
Rd,Rr
CP
Rd,Rr
Compare
CPC
Rd,Rr
CPI
Rd,K
Rr, b
Rr, b
SBIC
A, b
BRBS
A, b
s, k
BRBC
s, k
BREQ
Branch if Equal
BRNE
k
k
BRCC
k
k
Branch if Lower
BRMI
Branch if Minus
BRGE
k
k
STACK
if (Rd = Rr) PC
PC + 2 or 3
BRTS
BRTC
BRVC
BRIE
BRID
MOV
Rd, Rr
Copy Register
3 / 4(1)
None
4/5
4 / 5(1)
None
1/2/3
1
Rd - Rr - C
Z,C,N,V,S,H
Rd - K
Z,C,N,V,S,H
PC + 2 or 3
If (I/O(A,b) =1) PC
PC + 2 or 3
if (SREG(s) = 1) then PC
PC + k + 1
if (SREG(s) = 0) then PC
PC + k + 1
if (Z = 1) then PC
PC + k + 1
if (Z = 0) then PC
PC + k + 1
if (C = 1) then PC
PC + k + 1
if (C = 0) then PC
PC + k + 1
if (C = 0) then PC
PC + k + 1
if (C = 1) then PC
PC + k + 1
if (N = 1) then PC
PC + k + 1
if (N = 0) then PC
PC + k + 1
if (N V= 0) then PC
PC + k + 1
if (N V= 1) then PC
PC + k + 1
if (H = 1) then PC
PC + k + 1
if (H = 0) then PC
PC + k + 1
if (T = 1) then PC
PC + k + 1
if (T = 0) then PC
PC + k + 1
if (V = 1) then PC
PC + k + 1
if (V = 0) then PC
PC + k + 1
if (I = 1) then PC
PC + k + 1
if (I = 0) then PC
PC + k + 1
Rd
Rr
Rd+1:Rd
Rr+1:Rr
#Clocks
None
Z,C,N,V,S,H
if (I/O(A,b) = 0) PC
Flags
Rd - Rr
PC + 2 or 3
BRHS
BRVS
Branch if Plus
BRLT
BRHC
PC
if (Rr(b) = 1) PC
BRLO
BRPL
STACK
PC + 2 or 3
BRCS
BRSH
if (Rr(b) = 0) PC
SBRS
PC
Interrupt Return
CPSE
SBIS
PC
Subroutine Return
RETI
SBRC
Operation
(1)
None
1/2/3
None
1/2/3
None
2/3/4
None
2/3/4
None
1/2
None
1/2
None
1/2
None
1/2
None
1/2
None
1/2
None
1/2
None
1/2
None
1/2
None
1/2
None
1/2
None
1/2
None
1/2
None
1/2
None
1/2
None
1/2
None
1/2
None
1/2
None
1/2
None
1/2
None
None
MOVW
LDI
Rd, Rr
Rd, K
Rd
Load Immediate
Rd
(k)
Rd
(X)
None
None
(1)(2)
None
1(1)(2)
LDS
Rd, k
LD
Rd, X
Load Indirect
LD
Rd, X+
Rd
X
(X)
X+1
None
1(1)(2)
LD
Rd, -X
X X - 1,
Rd (X)
X-1
(X)
None
LD
Rd, Y
Load Indirect
Rd (Y)
(Y)
None
1(1)(2)
22
(1)(2)
LD
Rd, Y+
Rd
Y
23
(Y)
Y+1
None
1(1)(2)
Mnemonics
Operands
Description
LD
Rd, -Y
LDD
Rd, Y+q
Operation
Y
Rd
Y-1
(Y)
Rd
(Y + q)
Rd
(Z)
Flags
#Clocks
None
2(1)(2)
None
None
1(1)(2)
(1)(2)
LD
Rd, Z
Load Indirect
LD
Rd, Z+
Rd
Z
(Z),
Z+1
None
1(1)(2)
LD
Rd, -Z
Z
Rd
Z
(Z)- 1,
None
LDD
Rd, Z+q
Rd
(Z + q)
None
2(1)(2)
(k)
Rd
None
2(1)
(X)
Rr
None
STS
k, Rr
(1)(2)
ST
X, Rr
Store Indirect
ST
X+, Rr
(X)
X
Rr,
X+1
None
1(1)
ST
-X, Rr
X
(X)
X
Rr - 1,
None
2(1)
ST
Y, Rr
Store Indirect
(Y)
Rr
None
ST
Y+, Rr
(Y)
Y
Rr,
Y+1
None
1(1)
ST
-Y, Rr
Y
(Y)
Y
Rr - 1,
None
2(1)
STD
Y+q, Rr
(Y + q)
Rr
None
2(1)
(Z)
Rr
None
(Z)
Z
Rr
Z+1
None
1(1)
Z-1
None
2(1)
(Z + q)
Rr
None
R0
(Z)
Rd
(Z)
Rd
Z
(Z),
Z+1
R0
(RAMPZ:Z)
Rd
(RAMPZ:Z)
Rd
Z
(RAMPZ:Z),
Z
+1
(RAMPZ:Z)
R1:R0
(RAMPZ:Z)Z
R1:R0,
Z+2
Rd
I/O(A)
I/O(A)
Rr
STACK
Rr
Rd
STACK
Rd(n+1)
Rd(0)
C
Rd(n),
0,
Rd(7)
Z,C,N,V,H
Rd(n)
Rd(7)
C
Rd(n+1),
0,
Rd(0)
Z,C,N,V
ST
Z, Rr
Store Indirect
ST
Z+, Rr
ST
-Z, Rr
STD
Z+q,Rr
LPM
LPM
Rd, Z
LPM
Rd, Z+
ELPM
ELPM
Rd, Z
ELPM
Rd, Z+
SPM
SPM
Z+
IN
Rd, A
OUT
A, Rr
PUSH
Rr
POP
Rd
LSL
Rd
LSR
Rd
(1)
(1)
(1)
(1)
None
None
None
None
None
None
None
None
None
None
None
1(1)
None
(1)
24
Mnemonics
Operands
Description
ROL
Rd
ROR
Rd
ASR
Rd
SWAP
BSET
Rd
s
Swap Nibbles
Flag Set
BCLR
Flag Clear
SBI
A, b
CBI
BST
BLD
SEC
CLC
A, b
Rr, b
Rd, b
CLN
CLZ
SEI
CLI
SES
CLS
SEV
CLV
SET
Set T in SREG
CLT
Clear T in SREG
SEH
CLH
Rd(0)
Rd(n+1)
C
Rd(7)
Rd(n)
C
Flags
C,
Rd(n),
Rd(7)
C,
Rd(n+1),
Rd(0)
Rd(n)
Rd(n+1), n=0..6
Rd(3..0)
Rd(7..4)
SREG(s)
SREG(s)
I/O(A, b)
I/O(A, b)
SEN
SEZ
Operation
Rr(b)
Rd(b)
#Clocks
Z,C,N,V,H
Z,C,N,V
Z,C,N,V
None
SREG(s)
SREG(s)
None
None
None
None
Break
NOP
No Operation
None
SLEEP
Sleep
None
WDR
Watchdog Reset
None
25
Bibliografie:
http://support.atmel.no/knowledgebase/avrstudiohelp/mergedProjects/AVRASM/Html/ATmega
32_ATmega16_instructions.html
www.atmel.com/atmel/acrobat/doc2466.pdf
http://datasheetreference.com/avr-atmega16-datasheet.html
http://en.wikipedia.org/wiki/Atmel_AVR
26