Está en la página 1de 16

AulasSistemasDigitais22012/2013

SISTEMAS DIGITAIS 2

ATmega128

Pgina1

AulasSistemasDigitais22012/2013

ATmega128

ATmega128

Pgina2

AulasSistemasDigitais22012/2013

Caractersticas do ATmega128:
9
9
9
9
9
9
9
9
9
9
9
9
9
9
9
9
9
9

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 E2PROM de dados
Ciclos de escrita / leitura FLASH=10000, E2PROM=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)

ATmega128

Pgina3

AulasSistemasDigitais22012/2013

ATmega128 Diagrama de blocos

ATmega128

Pgina4

AulasSistemasDigitais22012/2013

ATmega 128 Arquitectura

Arquitectura de Harvard
Memrias independentes para programa e dados
Barramentos independentes (endereos e dados) para acesso s memrias de
programa e dados
Execuo do programa com sobreposio

ATmega128

Pgina5

AulasSistemasDigitais22012/2013

Arquitectura de Von Newman - execuo sequencial (sem sobreposio)

Arquitectura de Harvard execuo com sobreposio

Registo de Estados (Status REGister)

C
N
S
T

Carry Flag
Negative Flag
Sign Bit
Bit Copy Storage

ATmega128

Z
V
H
I

Zero Flag
Twos Complement Overflow Flag
Half Carry Flag
Global Interrupt Enable

Pgina6

AulasSistemasDigitais22012/2013

Registos de Uso Geral


7

Addr

R0

0x00

R1

0x01

R2

0x02

..
R13

0x0D

Registos

R14

0x0E

de uso

R15

0x0F

geral

R16

0x10

R17

0x11

..

ATmega128

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

Pgina7

AulasSistemasDigitais22012/2013

Ponteiro da Stack ( Stack Pointer)

Memria de Programa

ATmega128

Pgina8

AulasSistemasDigitais22012/2013

Vectores de Interrupo
Vector n
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35

ATmega128

Endereo
0x0000
0x0002
0x0004
0x0006
0x0008
0x000A
0x000C
0x000E
0x0010
0x0012
0x0014
0x0016
0x0018
0x001A
0x001C
0x001E
0x0020
0x0022
0x0024
0x0026
0x0028
0x002A
0x002C
0x002E
0x0030
0x0032
0x0034
0x0036
0x0038
0x003A
0x003C
0x003E
0x0040
0x0042
0x0044

Fonte
RESET
INT0
INT1
INT2
INT3
INT4
INT5
INT6
INT7
TIMER2 COMP
TIMER2 OVF
TIMER1 CAPT
TIMER1 COMPA
TIMER1 COMPB
TIMER1 OVF
TIMER0 COMP
TIMER0 OVF
SPI, STC
USART0, RX
USART0, UDRE
USART0, TX
ADC
EE READY
ANALOG COMP
TIMER1 COMPC
TIMER3 CAPT
TIMER3 COMPA
TIMER3 COMPB
TIMER3 COMPC
TIMER3 OVF
USART1, RX
USART1, UDRE
USART1, TX
TWI
SPM READY

Definio
Operao de RESET
Interrupo externa 0
Interrupo externa 1
Interrupo externa 2
Interrupo externa 3
Interrupo externa 4
Interrupo externa 5
Interrupo externa 6
Interrupo externa 7
T/C2 comparao
T/C2 overflow
T/C1 captura
T/C1 comparao A
T/C1 comparao B
T/C1 overflow
T/C0 comparao
T/C0 overflow
SPI, transferncia terminada
USART0, recepo terminada
USART0, registo de dados vazio
USART0, transmisso terminada
ADC, converso terminada
EEPROM ready
Comparador analgico
T/C1 comparao C
T/C3 captura
T/C3 comparao A
T/C3 comparao B
T/C3 comparao C
T/C3 overflow
USART1, recepo terminada
USART1, registo de dados vazio
USART1, transmisso terminada
Two Wire Interface
Store Program Memory Ready

Pgina9

AulasSistemasDigitais22012/2013

Memria de Dados (RAM)

ATmega128

Pgina10

AulasSistemasDigitais22012/2013

Sistema de Sinais de Relgio

ATmega128

Pgina11

AulasSistemasDigitais22012/2013

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.

ATmega128

Pgina12

AulasSistemasDigitais22012/2013
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)

ATmega128

Pgina13

AulasSistemasDigitais22012/2013

Porto de I/O (representado um nico bit de um porto)

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.
ATmega128

Pgina14

AulasSistemasDigitais22012/2013
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
out
ser
out

DDRA = 0;

r16
DDRA
r16
PORTA

ATmega128

; escreve 0s em DDRA para


; programar o porto como entrada
; escreve 1s em PORTA para
; activar os pull-ups internos

PORTA = 0xFF;

Pgina15

AulasSistemasDigitais22012/2013

Exemplo 2
Programar o Porto C como sada de dados e inicializ-lo com o valor 8(0b00001000)
Linguagem Assembly
ldi
out
ser
out

r16,0b00001000
PORTC
r16
DDRC

Linguagem C
; escreve 8 em PORTC
; programar o porto como sada
; escreve 1s em DDRC para
; programar o porto como sada

PORTA = 0b00001000;
DDRA = 0xFF;

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
ldi
out
ldi
out

r16,0xC0
DDRA
r16,0b11000000
PORTA

ATmega128

Linguagem C
; programa o DDRA

DDRA = 0xC0;

; bits de sada a 1 e pull_ups


; internos desactivados

PORTA = 0xC0;

Pgina16

También podría gustarte