Você está na página 1de 16

A Au ul la as s S Si is st te em ma as s D Di ig gi it ta ai is s 2 2 2 20 01 12 2/ /2 20 01 13 3

ATmega 128 Pgina 1




S SI IS ST TE EM MA AS S D DI IG GI IT TA AI IS S 2 2









E El la ab bo or ra ad do o p po or r: : J Jo o o o P Pa au ul lo o B Ba ap pt ti is st ta a 2 20 01 13 3



A Au ul la as s S Si is st te em ma as s D Di ig gi it ta ai is s 2 2 2 20 01 12 2/ /2 20 01 13 3

ATmega 128 Pgina 2


A AT Tm me eg ga a1 12 28 8




A Au ul la as s S Si is st te em ma as s D Di ig gi it ta ai is s 2 2 2 20 01 12 2/ /2 20 01 13 3

ATmega 128 Pgina 3


Caractersticas do ATmega128:

Arquitectura RISC
133 instrues (a maior parte executada num nico ciclo de execuo)
32 registos de trabalho de 8 bits (arquitectura de registos)
At 16 MIPS (@16MHz) 62.5ns / instruo
64K palavras de programa de 16 bits 128K bytes FLASH
4K bytes de RAM interna
4K bytes de E
2
PROM de dados
Ciclos de escrita / leitura FLASH=10000, E
2
PROM=100000
7 Portos de IO
6 x 8 bits (Portos A .. F)
1 x 5 bits (Porto G)
2 x Timer / Counter de 8 bits
2 x Timer / Counter de 16 bits
1 x Real Time Counter ( com oscilador independente)
2 x PWM de 8 bits
6 x PWM de 16 bits
ADC de 10 bits (8 canais)
2 x USART
SPI
TWI (I2C)

Tenso de alimentao:
ATmega128L - 2.7V a 5.5V (0 a 8MHz)
ATmega128 - 4.5V a 5.5V (0 a 16MHz)

Software de Desenvolvimento:

AVR Studio 4 (http://www.atmel.com)
WINAVR (http://winavr.souceforge.net)
PonyProg (http://www.lancos.com/prog.html)


Boards ATmega128:

FUTURLEC (http://www.futurlec.com)

A Au ul la as s S Si is st te em ma as s D Di ig gi it ta ai is s 2 2 2 20 01 12 2/ /2 20 01 13 3

ATmega 128 Pgina 4


A AT Tm me eg ga a1 12 28 8 D Di ia ag gr ra am ma a d de e b bl lo oc co os s





A Au ul la as s S Si is st te em ma as s D Di ig gi it ta ai is s 2 2 2 20 01 12 2/ /2 20 01 13 3

ATmega 128 Pgina 5


A AT Tm me eg ga a 1 12 28 8 A Ar rq qu ui it te ec ct tu ur ra a






A Ar rq qu ui it te ec ct tu ur ra a d de e H Ha ar rv va ar rd d
M Me em m r ri ia as s i in nd de ep pe en nd de en nt te es s p pa ar ra a p pr ro og gr ra am ma a e e d da ad do os s
B Ba ar rr ra am me en nt to os s i in nd de ep pe en nd de en nt te es s ( (e en nd de er re e o os s e e d da ad do os s) ) p pa ar ra a a ac ce es ss so o s s m me em m r ri ia as s d de e
p pr ro og gr ra am ma a e e d da ad do os s
E Ex xe ec cu u o o d do o p pr ro og gr ra am ma a c co om m s so ob br re ep po os si i o o





A Au ul la as s S Si is st te em ma as s D Di ig gi it ta ai is s 2 2 2 20 01 12 2/ /2 20 01 13 3

ATmega 128 Pgina 6


Arquitectura de Von Newman - execuo sequencial (sem sobreposio)




Arquitectura de Harvard execuo com sobreposio






R Re eg gi is st to o d de e E Es st ta ad do os s ( (S St ta at tu us s R RE EG Gi is st te er r) )



C Carry Flag Z Zero Flag
N Negative Flag V Twos Complement Overflow Flag
S Sign Bit H Half Carry Flag
T Bit Copy Storage I Global Interrupt Enable

A Au ul la as s S Si is st te em ma as s D Di ig gi it ta ai is s 2 2 2 20 01 12 2/ /2 20 01 13 3

ATmega 128 Pgina 7


R Re eg gi is st to os s d de e U Us so o G Ge er ra al l



7 0
Addr
R0 0x00
R1 0x01
R2 0x02
..
R13 0x0D
Registos R14 0x0E
de uso R15 0x0F
geral R16 0x10
R17 0x11
..
R26 0x1A Byte sig registo X
R27 0x1B Byte +sig registo X
R28 0x1C Byte sig registo Y
R29 0x1D Byte +sig registo Y
R30 0x1E Byte sig registo Z
R31 0x1F Byte +sig registo Z







A Au ul la as s S Si is st te em ma as s D Di ig gi it ta ai is s 2 2 2 20 01 12 2/ /2 20 01 13 3

ATmega 128 Pgina 8


P Po on nt te ei ir ro o d da a S St ta ac ck k ( ( S St ta ac ck k P Po oi in nt te er r) )







M Me em m r ri ia a d de e P Pr ro og gr ra am ma a




A Au ul la as s S Si is st te em ma as s D Di ig gi it ta ai is s 2 2 2 20 01 12 2/ /2 20 01 13 3

ATmega 128 Pgina 9


V Ve ec ct to or re es s d de e I In nt te er rr ru up p o o


Vector n Endereo Fonte Definio
1 0x0000 RESET Operao de RESET
2 0x0002 INT0 Interrupo externa 0
3 0x0004 INT1 Interrupo externa 1
4 0x0006 INT2 Interrupo externa 2
5 0x0008 INT3 Interrupo externa 3
6 0x000A INT4 Interrupo externa 4
7 0x000C INT5 Interrupo externa 5
8 0x000E INT6 Interrupo externa 6
9 0x0010 INT7 Interrupo externa 7
10 0x0012 TIMER2 COMP T/C2 comparao
11 0x0014 TIMER2 OVF T/C2 overflow
12 0x0016 TIMER1 CAPT T/C1 captura
13 0x0018 TIMER1 COMPA T/C1 comparao A
14 0x001A TIMER1 COMPB T/C1 comparao B
15 0x001C TIMER1 OVF T/C1 overflow
16 0x001E TIMER0 COMP T/C0 comparao
17 0x0020 TIMER0 OVF T/C0 overflow
18 0x0022 SPI, STC SPI, transferncia terminada
19 0x0024 USART0, RX USART0, recepo terminada
20 0x0026 USART0, UDRE USART0, registo de dados vazio
21 0x0028 USART0, TX USART0, transmisso terminada
22 0x002A ADC ADC, converso terminada
23 0x002C EE READY EEPROM ready
24 0x002E ANALOG COMP Comparador analgico
25 0x0030 TIMER1 COMPC T/C1 comparao C
26 0x0032 TIMER3 CAPT T/C3 captura
27 0x0034 TIMER3 COMPA T/C3 comparao A
28 0x0036 TIMER3 COMPB T/C3 comparao B
29 0x0038 TIMER3 COMPC T/C3 comparao C
30 0x003A TIMER3 OVF T/C3 overflow
31 0x003C USART1, RX USART1, recepo terminada
32 0x003E USART1, UDRE USART1, registo de dados vazio
33 0x0040 USART1, TX USART1, transmisso terminada
34 0x0042 TWI Two Wire Interface
35 0x0044 SPM READY Store Program Memory Ready


A Au ul la as s S Si is st te em ma as s D Di ig gi it ta ai is s 2 2 2 20 01 12 2/ /2 20 01 13 3

ATmega 128 Pgina 10


M Me em m r ri ia a d de e D Da ad do os s ( (R RA AM M) )





A Au ul la as s S Si is st te em ma as s D Di ig gi it ta ai is s 2 2 2 20 01 12 2/ /2 20 01 13 3

ATmega 128 Pgina 11


S Si is st te em ma a d de e S Si in na ai is s d de e R Re el l g gi io o






A Au ul la as s S Si is st te em ma as s D Di ig gi it ta ai is s 2 2 2 20 01 12 2/ /2 20 01 13 3

ATmega 128 Pgina 12

Sinais de Relgio no ATmega128

Fontes de Sinal de Relgio

o Oscilador a cristal


Opes possveis: 0.4 MHz a 16 MHz


o Oscilador a cristal de baixa frequncia

Utilizao de um cristal de 32.768 KHz


o Oscilador RC externo




o Oscilador interno RC

Frequncias fixas: 1, 2, 4 ou 8 MHz (@5 V, 25C)

Com calibrao possvel conseguir uma preciso de 1% para qualquer valor de Vcc e
de temperatura.





A Au ul la as s S Si is st te em ma as s D Di ig gi it ta ai is s 2 2 2 20 01 12 2/ /2 20 01 13 3

ATmega 128 Pgina 13

Registo de calibrao




o Sinal de relgio externo





o Diviso da frequncia de relgio

possvel efetuar a diviso da frequncia do sinal de relgio de maneira a conseguir
uma frequncia de funcionamento menor



d = 0b (XDIV6 .. XDIV0)

c|k
=
Freq. de re|g|u unte
129-d

A Au ul la as s S Si is st te em ma as s D Di ig gi it ta ai is s 2 2 2 20 01 12 2/ /2 20 01 13 3

ATmega 128 Pgina 14

P Po or rt to o d de e I I/ /O O ( (r re ep pr re es se en nt ta ad do o u um m n ni ic co o b bi it t d de e u um m p po or rt to o) )




1 Registo de direo de dados do porto de E/S (DDRx). Para cada um dos bits do porto, a
escrita de um 0 neste registo programa o porto com entrada de dados. A escrita de um 1
programa o bit do porto como sada de dados.

2 Registo de sada de dados do porto de E/S (PORTx). Se o bit do porto estiver
programado como sada de dados, a escrita de um 0 ou um 1 neste registo faz com que
esse valor aparea no pino de sada (5). Se o bit estiver programado como entrada de dados, a
escrita de um 0 desactiva o pull-up interno, a escrita de um 1 activa o pull-up interno.

3 Registo de entrada de dados do porto de E/S (PINx). Se o bit do porto estiver
programado como entrada, os valores presentes no pino exterior (5) podem ser lidos para o
registo PINx.

4 Resistncia de pull-up interna. No caso do bit do porto estar programado como entrada
de dados, podemos optar por inserir esta resistncia de pull-up caso o dispositivo exterior no
consiga definir o valor lgico 1.

5 Pino exterior para entrada / sada de dados.
A Au ul la as s S Si is st te em ma as s D Di ig gi it ta ai is s 2 2 2 20 01 12 2/ /2 20 01 13 3

ATmega 128 Pgina 15


Registos dos Portos (Porto A)




Registo Especial de IO


PUD Pull Up Disable. O valor 1 escrito neste bit desactiva todos os pull up
internos dos diferentes portos do ATmega128




Exemplo 1

Programar o Porto A como entrada de dados, activando os pull-ups internos

Linguagem Assembly Linguagem C

clr r16 ; escreve 0s em DDRA para DDRA = 0;
out DDRA ; programar o porto como entrada
ser r16 ; escreve 1s em PORTA para PORTA = 0xFF;
out PORTA ; activar os pull-ups internos






A Au ul la as s S Si is st te em ma as s D Di ig gi it ta ai is s 2 2 2 20 01 12 2/ /2 20 01 13 3

ATmega 128 Pgina 16



Exemplo 2

Programar o Porto C como sada de dados e inicializ-lo com o valor 8(0b00001000)

Linguagem Assembly Linguagem C

ldi r16,0b00001000 ; escreve 8 em PORTC PORTA = 0b00001000;
out PORTC ; programar o porto como sada
ser r16 ; escreve 1s em DDRC para DDRA = 0xFF;
out DDRC ; programar o porto como sada






Exemplo 3

Programar os 6 bits sig do Porto A como entrada de dados e os 2 bits +sig como sada de dados.
Desactivar os pull-ups internos das entradas e inicializar os bits de sada com 11

Linguagem Assembly Linguagem C

ldi r16,0xC0 ; programa o DDRA DDRA = 0xC0;
out DDRA
ldi r16,0b11000000 ; bits de sada a 1 e pull_ups PORTA = 0xC0;
out PORTA ; internos desactivados