aulas_atmega128_1_.pdf

16
Aulas Sistemas Digitais 2 2012/2013 ATmega 128 Página 1 SISTEMAS DIGITAIS 2

Upload: manuel-jose-domingues

Post on 23-Dec-2015

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Aulas_ATmega128_1_.pdf

AAuullaass  SSiisstteemmaass  DDiiggiittaaiiss  22                                                                                                                                                                              22001122//22001133  

ATmega 128  Página 1 

SSIISSTTEEMMAASS DDIIGGIITTAAIISS 22

Page 2: Aulas_ATmega128_1_.pdf

AAuullaass  SSiisstteemmaass  DDiiggiittaaiiss  22                                                                                                                                                                              22001122//22001133  

ATmega 128  Página 2 

AATTmmeeggaa112288

Page 3: Aulas_ATmega128_1_.pdf

AAuullaass  SSiisstteemmaass  DDiiggiittaaiiss  22                                                                                                                                                                              22001122//22001133  

ATmega 128  Página 3 

Características do ATmega128:

Arquitectura RISC 133 instruções (a maior parte executada num único ciclo de execução) 32 registos de trabalho de 8 bits (arquitectura de registos) Até 16 MIPS (@16MHz) – 62.5ns / instrução 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)

Tensão de alimentação: 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)

Page 4: Aulas_ATmega128_1_.pdf

AAuullaass  SSiisstteemmaass  DDiiggiittaaiiss  22                                                                                                                                                                              22001122//22001133  

ATmega 128  Página 4 

AATTmmeeggaa112288 –– DDiiaaggrraammaa ddee bbllooccooss

Page 5: Aulas_ATmega128_1_.pdf

AAuullaass  SSiisstteemmaass  DDiiggiittaaiiss  22                                                                                                                                                                              22001122//22001133  

ATmega 128  Página 5 

AATTmmeeggaa 112288 –– AArrqquuiitteeccttuurraa

AArrqquuiitteeccttuurraa ddee HHaarrvvaarrdd

•• MMeemmóórriiaass iinnddeeppeennddeenntteess ppaarraa pprrooggrraammaa ee ddaaddooss

•• BBaarrrraammeennttooss iinnddeeppeennddeenntteess ((eennddeerreeççooss ee ddaaddooss)) ppaarraa aacceessssoo ààss mmeemmóórriiaass ddee

pprrooggrraammaa ee ddaaddooss

•• EExxeeccuuççããoo ddoo pprrooggrraammaa ccoomm ssoobbrreeppoossiiççããoo

Page 6: Aulas_ATmega128_1_.pdf

AAuullaass  SSiisstteemmaass  DDiiggiittaaiiss  22                                                                                                                                                                              22001122//22001133  

ATmega 128  Página 6 

Arquitectura de Von Newman - execução sequencial (sem sobreposição)

Arquitectura de Harvard – execução com sobreposição

RReeggiissttoo ddee EEssttaaddooss ((SSttaattuuss RREEGGiisstteerr))

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

Page 7: Aulas_ATmega128_1_.pdf

AAuullaass  SSiisstteemmaass  DDiiggiittaaiiss  22                                                                                                                                                                              22001122//22001133  

ATmega 128  Página 7 

RReeggiissttooss ddee UUssoo GGeerraall

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

Page 8: Aulas_ATmega128_1_.pdf

AAuullaass  SSiisstteemmaass  DDiiggiittaaiiss  22                                                                                                                                                                              22001122//22001133  

ATmega 128  Página 8 

PPoonntteeiirroo ddaa SSttaacckk (( SSttaacckk PPooiinntteerr))

MMeemmóórriiaa ddee PPrrooggrraammaa

Page 9: Aulas_ATmega128_1_.pdf

AAuullaass  SSiisstteemmaass  DDiiggiittaaiiss  22                                                                                                                                                                              22001122//22001133  

ATmega 128  Página 9 

VVeeccttoorreess ddee IInntteerrrruuppççããoo

Vector nº Endereço Fonte Definição 1 0x0000 RESET Operação de RESET 2 0x0002 INT0 Interrupção externa 0 3 0x0004 INT1 Interrupção externa 1 4 0x0006 INT2 Interrupção externa 2 5 0x0008 INT3 Interrupção externa 3 6 0x000A INT4 Interrupção externa 4 7 0x000C INT5 Interrupção externa 5 8 0x000E INT6 Interrupção externa 6 9 0x0010 INT7 Interrupção externa 7

10 0x0012 TIMER2 COMP T/C2 comparação 11 0x0014 TIMER2 OVF T/C2 overflow 12 0x0016 TIMER1 CAPT T/C1 captura 13 0x0018 TIMER1 COMPA T/C1 comparação A 14 0x001A TIMER1 COMPB T/C1 comparação B 15 0x001C TIMER1 OVF T/C1 overflow 16 0x001E TIMER0 COMP T/C0 comparação 17 0x0020 TIMER0 OVF T/C0 overflow 18 0x0022 SPI, STC SPI, transferência terminada 19 0x0024 USART0, RX USART0, recepção terminada 20 0x0026 USART0, UDRE USART0, registo de dados vazio 21 0x0028 USART0, TX USART0, transmissão terminada 22 0x002A ADC ADC, conversão terminada 23 0x002C EE READY EEPROM ready 24 0x002E ANALOG COMP Comparador analógico 25 0x0030 TIMER1 COMPC T/C1 comparação C 26 0x0032 TIMER3 CAPT T/C3 captura 27 0x0034 TIMER3 COMPA T/C3 comparação A 28 0x0036 TIMER3 COMPB T/C3 comparação B 29 0x0038 TIMER3 COMPC T/C3 comparação C 30 0x003A TIMER3 OVF T/C3 overflow 31 0x003C USART1, RX USART1, recepção terminada 32 0x003E USART1, UDRE USART1, registo de dados vazio 33 0x0040 USART1, TX USART1, transmissão terminada 34 0x0042 TWI Two Wire Interface 35 0x0044 SPM READY Store Program Memory Ready

Page 10: Aulas_ATmega128_1_.pdf

AAuullaass  SSiisstteemmaass  DDiiggiittaaiiss  22                                                                                                                                                                              22001122//22001133  

ATmega 128  Página 10 

MMeemmóórriiaa ddee DDaaddooss ((RRAAMM))

Page 11: Aulas_ATmega128_1_.pdf

AAuullaass  SSiisstteemmaass  DDiiggiittaaiiss  22                                                                                                                                                                              22001122//22001133  

ATmega 128  Página 11 

SSiisstteemmaa ddee SSiinnaaiiss ddee RReellóóggiioo

Page 12: Aulas_ATmega128_1_.pdf

AAuullaass  SSiisstteemmaass  DDiiggiittaaiiss  22                                                                                                                                                                              22001122//22001133  

ATmega 128  Página 12 

Sinais de Relógio no ATmega128 • Fontes de Sinal de Relógio

o Oscilador a cristal

Opções possíveis: 0.4 MHz a 16 MHz

o Oscilador a cristal de baixa frequência Utilização de um cristal de 32.768 KHz

o Oscilador RC externo

o Oscilador interno RC

Frequências fixas: 1, 2, 4 ou 8 MHz (@5 V, 25°C) Com calibração é possível conseguir uma precisão de ±1% para qualquer valor de Vcc e de temperatura.

Page 13: Aulas_ATmega128_1_.pdf

AAuullaass  SSiisstteemmaass  DDiiggiittaaiiss  22                                                                                                                                                                              22001122//22001133  

ATmega 128  Página 13 

Registo de calibração

o Sinal de relógio externo

o Divisão da frequência de relógio

É possível efetuar a divisão da frequência do sinal de relógio de maneira a conseguir uma frequência de funcionamento menor

d = 0b (XDIV6 .. XDIV0)

  .     ó  

Page 14: Aulas_ATmega128_1_.pdf

AAuullaass  SSiisstteemmaass  DDiiggiittaaiiss  22                                                                                                                                                                              22001122//22001133  

ATmega 128  Página 14 

PPoorrttoo ddee II//OO ((rreepprreesseennttaaddoo uumm úúnniiccoo bbiitt ddee uumm ppoorrttoo))

1 – Registo de direção 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 saída de dados.

2 – Registo de saída de dados do porto de E/S (PORTx). Se o bit do porto estiver

programado como saída de dados, a escrita de um ‘0’ ou um ‘1’ neste registo faz com que esse valor apareça no pino de saída (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 – Resistência de pull-up interna. No caso do bit do porto estar programado como entrada de dados, podemos optar por inserir esta resistência de pull-up caso o dispositivo exterior não consiga definir o valor lógico ‘1’.

5 – Pino exterior para entrada / saída de dados.

Page 15: Aulas_ATmega128_1_.pdf

AAuullaass  SSiisstteemmaass  DDiiggiittaaiiss  22                                                                                                                                                                              22001122//22001133  

ATmega 128  Página 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

Page 16: Aulas_ATmega128_1_.pdf

AAuullaass  SSiisstteemmaass  DDiiggiittaaiiss  22                                                                                                                                                                              22001122//22001133  

ATmega 128  Página 16 

Exemplo 2 Programar o Porto C como saída 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 saída ser r16 ; escreve 1s em DDRC para DDRA = 0xFF; out DDRC ; programar o porto como saída

Exemplo 3 Programar os 6 bits –sig do Porto A como entrada de dados e os 2 bits +sig como saída de dados. Desactivar os pull-ups internos das entradas e inicializar os bits de saída com ‘11’

Linguagem Assembly Linguagem C ldi r16,0xC0 ; programa o DDRA DDRA = 0xC0; out DDRA ldi r16,0b11000000 ; bits de saída a 1 e pull_ups PORTA = 0xC0; out PORTA ; internos desactivados