Buscar

Arquitetura do Microcontrolador AVR

Prévia do material em texto

Interfaceamento 
Eletrônico I
Material Teórico
Responsável pelo Conteúdo:
Prof. Esp. Elvis Luiz dos Santos
Revisão Textual:
Prof. Me. Luciano Vieira Francisco
Arquitetura e Recursos Básicos do Microcontrolador 
• Arquitetura AVR – ATmega328; 
• Unidade Lógica e Aritmética (ULA).
• Tratar das particularidades dos microcontroladores.
OBJETIVO DE APRENDIZADO
Arquitetura e Recursos Básicos 
do Microcontrolador 
Orientações de estudo
Para que o conteúdo desta Disciplina seja bem 
aproveitado e haja maior aplicabilidade na sua 
formação acadêmica e atuação profissional, siga 
algumas recomendações básicas:
Assim:
Organize seus estudos de maneira que passem a fazer parte 
da sua rotina. Por exemplo, você poderá determinar um dia e 
horário fixos como seu “momento do estudo”;
Procure se alimentar e se hidratar quando for estudar; lembre-se de que uma 
alimentação saudável pode proporcionar melhor aproveitamento do estudo;
No material de cada Unidade, há leituras indicadas e, entre elas, artigos científicos, livros, vídeos 
e sites para aprofundar os conhecimentos adquiridos ao longo da Unidade. Além disso, você tam-
bém encontrará sugestões de conteúdo extra no item Material Complementar, que ampliarão sua 
interpretação e auxiliarão no pleno entendimento dos temas abordados;
Após o contato com o conteúdo proposto, participe dos debates mediados em fóruns de discus-
são, pois irão auxiliar a verificar o quanto você absorveu de conhecimento, além de propiciar o 
contato com seus colegas e tutores, o que se apresenta como rico espaço de troca de ideias e 
de aprendizagem.
Organize seus estudos de maneira que passem a fazer parte 
Mantenha o foco! 
Evite se distrair com 
as redes sociais.
Mantenha o foco! 
Evite se distrair com 
as redes sociais.
Determine um 
horário fixo 
para estudar.
Aproveite as 
indicações 
de Material 
Complementar.
Procure se alimentar e se hidratar quando for estudar; lembre-se de que uma 
Não se esqueça 
de se alimentar 
e de se manter 
hidratado.
Aproveite as 
Conserve seu 
material e local de 
estudos sempre 
organizados.
Procure manter 
contato com seus 
colegas e tutores 
para trocar ideias! 
Isso amplia a 
aprendizagem.
Seja original! 
Nunca plagie 
trabalhos.
UNIDADE Arquitetura e Recursos Básicos do Microcontrolador 
Arquitetura AVR – ATmega328 
Após tratarmos das características, anteriormente, iniciaremos o estudo de um 
microcontrolador real; para esta tarefa elegeremos o microcontrolador ATmega328, 
da Microchip, que é o uC usado na placa do Arduino UNO. 
Pinagem do ATmega quando usado na board Arduino: http://bit.ly/2pOdjKL
Ex
pl
or
Figura 1 – Pinagem do CI ATmega
Fonte: Reprodução
Figura 2 – Placa do Arduino Uno
Fonte: Wikimedia Commons
Aprofunde os seus conhecimentos assistindo ao trailer intitulado Arduino: The Documentary, 
Disponível em: https://bit.ly/2TL9YJhEx
pl
or
Arduino é uma plataforma de desenvolvimento para sistemas microcontrolados. 
A facilidade de uso e o sistema aberto, tanto do hardware quanto do software, fazem 
desse uma ótima opção para qualquer um que queira construir projetos eletrônicos.
Ademais, permite que você conecte componentes e circuitos de interfaceamento 
eletroeletrônico em seus terminais, de modo a controlar cargas como, por exemplo, 
ligar ou desligar lâmpadas e motores, ou medir, por meio de sensores, variáveis 
como níveis de água, luz e temperatura.
Arduino é conectado ao computador para que possa receber os arquivos do 
programa que foi desenvolvido. Essa conexão se dá por meio de um conector 
Universal Serial Bus (USB). Dessa forma, podemos usar o Arduino como placa de 
interface e controlar os dispositivos a partir de comandos do seu computador como, 
por exemplo, usar o assistente Jarvis do filme Homem de Ferro, a fim de acionar 
as lâmpadas da sua casa através de comando de voz.
8
9
Assista ao vídeo intitulado Jarvis com Arduino – agora você vai viajar nas ideias!
Disponível em: https://youtu.be/p9bADo8dRCkEx
pl
or
O “coração” do seu Arduino é um microcontrolador. A maioria dos diversos 
componentes da placa destina-se a alimentar o Arduino e proporcionar a comuni-
cação com o computador. Como já vimos, o microcontrolador tem tudo que havia 
nos primeiros computadores domésticos. Os pinos de entrada e saída ligam o 
microcontrolador aos demais componentes eletrônicos e os coloca no conector de 
saída, onde são conectados os componentes e circuitos de interfaceamento. Esses 
pinos podem ser utilizados como saída ou como entrada, lendo dados analógicos 
ou digitais.
A função de cada pino é definida por um programa, no qual configuramos as 
funções em uma linha de comando. Por exemplo, para configurar o pino 10 do 
Arduino como uma entrada, utilizamos o comando pinMode(10, output);
Vale lembrar que o Arduino é programado através de um programa proprietário.
Disponível em: https://bit.ly/37hPTOmEx
pl
or
Figura 3 – Ícone do programa do Arduino
Fonte: Reprodução
O microcontrolador utilizado é de linha, produzido em massa e disponível para 
venda separadamente da board Arduino. Assim, podemos programar o microcon-
trolador na board do Arduino e logo após retirá-lo e utilizar em uma aplicação com 
interface eletroeletrônica produzida por você mesmo.
9
UNIDADE Arquitetura e Recursos Básicos do Microcontrolador 
Figura 4
Fonte: Acervo do conteudista
As características do ATmega 328 são as seguintes:
• Microcontrolador da família AVR-RISC de 8 bits e de baixo consumo de corrente; 
• Arquitetura Harvard;
• Velocidade de processamento de até 20 Mips – Milhões de Instruções por 
Segundo –, em 20 MHz;
• Memória de programa – flash – de 32 Kbytes;
• 2 Kbytes de memória volátil (RAM);
• 1 Kbyte de Electrically-Erasable Programmable Read-Only Memory (Eeprom).
MEGA8-P
PC8(/RESET) PC0(ADC0)
PC1(ADC1)
PC2(ADC2)
PC3(ADC3)
PC4(ADC4/SDA)
PC5(ADC5/SCL)
POD(RXD)
PD1(TXD)
PD2(INT0)
PD3(INT1)
PD4(XCK/T0)
PD5(T1)
PD6(AIN0)
PD7(AIN1)
P800(CP)
PB1(OC1A)
PB2(SS/OC1B)
PB3(MOSI/OC2)
PB4(MISO)
PB5(SCK)
AGND
AREF
AVCC
FB6(XTAL1/TOSC1)
FB7(XTAL2/TOSC2)
GND
VCC
IC1A
X1
1
1
23
24
2
22
6
6
11
12 73
3
3
4
4
4
5
5
7404N
IC1B
7404N
R2
220
GND
GND
R1
S1
IC4
OUT
GND
7805
22
pF
22
pF C
4
C3 Q
1uF
C2
4
3
2
1
IN
10uF
C1
+12V
10K
IC2
LE
D1
1
22
21
20
9
10
8
7
8
9
25
26
27
28
13
14
15
16
17
18
19
Figura 5
Assista ao vídeo sobre arquitetura de microcontroladores: https://youtu.be/1sWl_nZWO7A
Ex
pl
or
10
11
AVR CPU
SRAMFlash
EEPROM
8bit T/C 0 16bit T/C 1 A/D Conv.
USART 0
PORT D (8)
SPI TWI
PORT B (8) PORT C (7)
DA
TA
BU
S
AVCC
AREF
GND
RESET
XTAL [1.2]
PD(0...7) PB(0..7) PC(0...6) ADC[6...7]
GN
D
VC
C
8bit T/C 2 AnalogComp.
Internal
Bandgap
6
2
debugWIRE
PROGRAM
LOGIC
Power
Supervision
PQR / BQD &
RESET
Watchdog
Timer
Watchdog
Oscillator
Oscillator
Circuits/
Clock
Generation
Figura 6 – Estrutura interna do ATmega 328
Unidade Lógica e Aritmética (ULA)
Conectada diretamente aos registradores gerais, a Unidade Lógica e Aritmética 
(ULA) é responsável por executar operações entre os quais, ou entre um registra-
dor e uma constante, de acordo com o comando decodificado da instrução corres-
pondente, aplicado pela unidade central de controle.
As operações podem ser executadas com um único operando e podem ser divi-
didas em três categorias principais: aritmética, lógica e funções de bit. Após uma 
operação aritmética, o registrador de status é atualizado para exibir informações 
sobre o resultado da operação.
11
UNIDADE Arquitetura e Recursos Básicos do Microcontrolador 
Algumas implementações da arquitetura AVR também fornecem um hardware 
multiplicador para valores com sinal e fracionários. Os seguintes esquemas de trans-
ferência interna à Unidade Central de Processamento (UCP) são suportados sob o 
ponto de vista da ULA:
• Um operando de entrada de 8 bits e um resultado de saída de 8 bits;
• Dois operandos de entrada de 8 bits e um resultado de saída de 8 bits;
• Dois operandos deentrada de 8 bits e um resultado de saída de 16 bits;
• Um operando de entrada de 16 bits e um resultado de saída de 16 bits.
Registrador de Status
O registrador armazena informações após a manipulação de dados e o resul-
tado da instrução aritmética mais recentemente executada, que serão utilizadas 
para alterar o fluxo do programa através de operações condicionais. Ao ocorrer 
o desvio para uma rotina de interrupção, o registrador deve ser armazenado na 
pilha, via hardware. 
Ponteiro de Pilha
Pilha é a parte do hardware usada para armazenar dados temporários. Assim 
como a memória cache dos processadores, a pilha guarda também as variáveis 
locais e endereços de retorno após interrupções e chamadas de sub-rotina. Pilha 
é implementada no hardware de maneira invertida, parte do endereço mais alto 
assume endereços menores a partir do momento em que a pilha aumenta. Para 
que se possa apontar para o endereço do último dado armazenado na pilha temos 
o ponteiro de pilha. Dessa forma, os primeiros dados a serem colocados serão os 
últimos a serem tirados, seguindo uma fila do tipo Lifo – Last Input, First Output 
– ou Filo – First Input, Last Output (LIMA; VILLAÇA, 2012).
A pilha deve ser definida na Random Access Memory (RAM) pelo programa 
antes da ocorrência de qualquer sub-rotina ou interrupção. O valor do ponteiro de 
pilha inicial é igual ao último endereço da RAM e esse registrador é implementado 
como dois registros de 8 bits no espaço de entradas e saídas. A pilha é efetivamente 
alocada na memória RAM e, consequentemente, o tamanho da pilha é limitado ex-
clusivamente pelo tamanho de memória RAM, além do quanto dessa será utilizado 
por outras finalidades.
O contador de programa funciona também como um ponteiro, porém, indica 
para o processador qual é o endereço da próxima instrução a ser executada 
na memória do programa. É incrementado automaticamente à medida que 
as instruções são executadas, exceto quando ocorrem saltos, que têm os seus 
endereços indicados na própria instrução. Esses saltos, diretos ou por chamadas 
12
13
de sub-rotina, determinam o fluxo do programa e podem desviá-lo para qualquer 
endereço válido. Pode também ser diretamente manipulado pelo programa usuário 
(LIMA; VILLAÇA, 2012).
Unidade Central de Controle
A unidade central de controle é considerada o núcleo do núcleo. Essa máquina 
de estados é responsável por controlar, de fato, todos os outros componentes, exe-
cutando as operações descritas pelas instruções, depois de decodificadas. Opera a 
partir do princípio da máquina de Turing universal, realizando as ações de busca, 
decodificação e execução (LIMA; VILLAÇA, 2012).
Barramentos
O barramento de dados é de 8 bits, caracterizando o número de bits do micro-
controlador. As instruções do ATmega328 são de 16 ou 32 bits – a maioria é de 
16 bits. Assim, cada instrução consome dois ou quatro bytes na memória de pro-
grama – um byte par e um ímpar. O acesso às posições de memória, dado pelo 
contador de programa – Program Counter (PC) –, é realizado de dois em dois 
bytes, começando sempre por uma posição par. Portanto, o barramento de endere-
ços deve ser capaz de endereçar sempre posições pares da memória de programa. 
Assim, o bit menos significativo do barramento de endereços pode ser desprezado. 
Dessa forma, para a memória de 32 Kbytes – 25.210 = 215 bytes – do Atmega328 
são necessários 14 bits de endereçamento – ou seja, 214 = 16.384 endereços 
(LIMA ; VILLAÇA, 2012).
Memórias e Espaços
O espaço de memória de programa é dividido em duas seções: a parte de Boot 
Program, ou programa de inicialização, e a parte de programa de aplicação, ou 
programa usuário. Ambas as seções possuem bit de travamento para proteções de 
escrita ou leitura e escrita.
Durante interrupções e chamadas de sub-rotinas, o endereço de retorno do PC 
é armazenado na pilha. Assim como o ponteiro de pilha, todos os programas usu-
ários devem inicializar o SP na rotina de reset, antes de sub-rotinas e interrupções 
ocorrerem, ou seja, a primeira ação a ser feita quando ligado. Os dados na Static 
Random-Access memory (SRAM) podem ser facilmente acessados através de cinco 
diferentes modos de endereçamento suportados pela arquitetura AVR. Os espaços 
de memória na arquitetura AVR são todos lineares e regulares.
13
UNIDADE Arquitetura e Recursos Básicos do Microcontrolador 
32 registers
64 I/O registers
160 Ext I/O registers
Internal SRAM
(2048x8)
0x08FF
Load/Store
0x0000 - 0x001F
IN/OUT
0x0000 - 0x001F
0x0100
0x0060 - 0x00FF
0x0020 - 0x005F
Figura 7 – Memória interna
Tempo de Execução de Instruções
O sinal de clock usado pelo núcleo AVR é gerado diretamente pela fonte de 
relógio selecionada para chip e nenhuma divisão de relógio é feita internamente. 
O paralelismo gerado pelo sistema de pipeline, no qual a busca e execução de ins-
truções ocorrem simultaneamente é permitido pela arquitetura Harvard e provê o 
conceito de rápido acesso ao arquivo de registros.
Tratamento do Reset e Interrupções
O sistema AVR fornece várias fontes de interrupções diferentes. Assim como o 
vetor de reset, essas interrupções possuem vetores de programa individuais, que 
apontam, cada um, para a sua respectiva rotina no espaço de programa. Logo, as-
sim que uma interrupção ocorrer, o programa saltará para o endereço indicado no 
vetor dessa interrupção, onde fica a devida rotina de tratamento, e retornará para 
aonde estava antes do desvio. Todas as interrupções são ativadas através de bits in-
dividuais, nos devidos registradores, além do bit habilitador global de interrupções, 
visto no registrador de status.
14
15
Botão Reset
atmega328
C2
22pF
Cristal 16MHz
RESET
D0 (RX)
D1 (TX)
D2
D3 (PWM)
D4
VCC
GND
XLAT1
XLAT2
D5 (PWM)
D6 (PWM)
D7
D8
A5
A4
A3
A2
A1
A0
GND
AREF
AVCC
D13
D12
D11 (PWM)
D10 (PWM)
D9 (PWM)
11
1
1
1
1
2
2 2
2
2
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
C1
22pF
5V
R1
10kΩ
5V
Figu ra 8 – Esquema de reset do Arduino
15
UNIDADE Arquitetura e Recursos Básicos do Microcontrolador 
Material Complementar
Indicações para saber mais sobre os assuntos abordados nesta Unidade:
 Livros
Some assembly required: assembly language programming with the AVR microcontrollers
MARGUSH, T. S. Some assembly required: assembly language programming with 
the AVR microcontrollers. New York: CRC, 2011.
The avr microcontroller and embedded system: usingassembly and c
MAZIDI, M. A.; NAIMI S.; NAIMI S. The avr microcontroller and embedded 
system: usingassembly and c. New Jersey: Prentice Hall, 2011.
AVR e Arduino – técnicas de projeto
LIMA, C. B. D.; VILLAÇA, M. V. M. AVR e Arduino – técnicas de projeto. 
Florianopolis, SC: [s.n.], 2012.
Microcontroladores e microprocessadores
PERIM, G. de C. F.; NASCIMENTO, J. N. R. do. Microcontroladores e micropro-
cessadores. Londrina, PR: Editora e Distribuidora Educacional, 2017.
 Leitura
8-bit AVR Microcontrollers. ATmega328/P
ATMEL AVR. 8-bit AVR Microcontrollers. ATmega328/P. Datasheet complete. 2016.
https://bit.ly/37zdMRH
16
17
Referências
LIMA, C. B. D.; VILLAÇA, M. V. M. AVR e Arduino – técnicas de projeto. 
Florianopolis, SC: [s.n.], 2012.
SOUZA, D. J. Desbravando o PIC. 9. ed. São Paulo: Erica, 2005.
ZANCO, W. S. Microcontroladores PIC 18 com linguagem C – uma abordagem 
prática e objetiva. São Paulo: Erica, 2010.
____________. Microcontroladores PIC – técnicas de software e hardware para 
projetos de circuitos eletrônicos. São Paulo: Erica, 2006.
17

Continue navegando