1 / 29

EA869 Microcontrolador ATMega328P

EA869 Microcontrolador ATMega328P. Faculdade de Engenharia Elétrica e de Computação (FEEC) Universidade Estadual de Campinas (UNICAMP) Prof. Levy Boccato. Introdução. “Conjunto Reduzido de Instruções de Computador”. R ISC. ATMega328P

croach
Télécharger la présentation

EA869 Microcontrolador ATMega328P

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. EA869Microcontrolador ATMega328P Faculdade de Engenharia Elétrica e de Computação (FEEC) Universidade Estadual de Campinas (UNICAMP) Prof. Levy Boccato

  2. Introdução “Conjunto Reduzido de Instruções de Computador” RISC • ATMega328P • O microcontrolador ATMega328P é inspirado na “filosofia” RISC, cuja ideia é desenvolver um hardware otimizado que contenha um conjunto simplificado de instruções. • Microcontroladores: embora sejam processadores de propósito geral, os microcontroladores possuem algumas otimizações tendo em vista aplicações de controle embarcado (e.g., monitoramento de grandezas por meio de sensores). • Trata-se de um sistema digital completo com periféricos (temporizadores, conversores analógico-digital, porta serial, etc.) e memória dentro do mesmo chip. • O ATMega328P é baseado na família AVR de processadores.

  3. ATMega328P • Características : • Microcontrolador de 8 bits. • 32 registradores de propósito geral: Endereço Registrador X: R27 (high byte) e R26 (low byte) Registrador Y: R29 (high byte) e R28 (low byte) Registrador Z: R31 (high byte) e R30 (low byte)

  4. ATMega328P Operações lógico-aritméticas • Arquitetura Busca (Fetch) e decodificação de instrução Entrada e saída (I/O) e funções especiais

  5. ATMega328P • Arquitetura

  6. ATMega328P • Arquitetura

  7. ATMega328P • Máquina de 2 endereços: • 1º operando: especifica o local onde será armazenado o resultado da operação. • 2º operando: valores imediatos ou locais onde se encontram os dados. • Exemplo: ADD R1, R2 R1 ← (R1) + (R2) • Conjunto de instruções: • A maior parte das instruções ocupa uma palavra (word) de 16 bits na memória de programa. • Algumas instruções, porém, por permitirem a especificação de um endereço de memória como operando, requerem 32 bits. • Os campos das instruções apresentam certo grau de uniformidade para facilitar a decodificação. • Em uma operação típica da unidade lógico-aritmética, dois operandos são obtidos do arquivo de registradores, a operação escolhida é executada e o resultado é armazenado em um dos registradores, tudo em um único ciclo de relógio. • Há instruções, porém, que requerem um número maior de ciclos.

  8. ATMega328P • Operandos: • Registradores: • ADD r1, r2 • MOV r1, r2 • Valores imediatos: • LDI r16, 0xF8 • ANDI r18, 1 • Endereços • LDS r16, 0xFF00 • Tipos básicos de instruções: • Processamento de dados: operações lógico-aritméticas e movimentação entre registradores. • Exemplos: ADD, SUB, MOV • Fluxo de controle: instruções de desvio (branch) • Exemplo: JMP rótulo • Carregamento / Armazenamento: load-store

  9. ATMega328P • Arquitetura Harvard: memórias separadas para programa e dados. • Memória Flash de 32 KBytes para armazenamento de programa. • Memória RAM estática (SRAM) de 2 KBytes para armazenamento de dados. • Memória EEPROM de 1 KByte para armazenamento não-volátil. • As memórias Flash e SRAM possuem barramentos fisicamente distintos.

  10. ATMega328P • Memória de programa (Flash): • Cada palavra de memória possui 16 bits (2 bytes). • Organização: 16 K  16 • Endereço: • Especificado no registrador PC (programcounter). • Refere-se sempre a palavras (words). • Como temos 16 K palavras na memória, o registrador PC possui 14 bits.

  11. ATMega328P • Memória de dados: • Endereço referente a byte.

  12. ATMega328P Disposição dos bytes na memória Byte mais significativo Byte mais significativo Registrador Registrador Memória Memória Little-endian Big-endian Adotado no ATMega328P

  13. ATMega328P • Linguagem Assembly: • Substitui o código de máquina, representado pelas cadeias binárias, por símbolos mais próximos da linguagem humana. • Trata-se de uma linguagem diretamente dependente da arquitetura do computador (hardware). • O código em linguagem Assembly precisa ser interpretado, isto é, convertido ao formato binário para ser executado pelo computador.

  14. ATMega328P • Formato típico de uma instrução em Assembly: LABEL: MNEMÔNICO Op1, Op2 ; comentários • LABEL: rótulo que serve para identificar o endereço de memória onde será colocada a instrução. • MNEMÔNICO: identifica a operação desejada (MOV, ADD, JMP etc.). • Op1: registrador alvo. • Op2: registrador, imediato ou endereço.

  15. ATMega328P • Exemplo de um programa:

  16. ATMega328P Instruções de Processamento de Dados Exemplo: CP R1, R2 Implicitamente, a subtração (R1) - (R2) é feita. Dependendo do resultado (e.g., se foi zero ou negativo), algumas flags são setadas, podendo ser analisadas posteriormente por outras instruções. Registrador de estado

  17. ATMega328P Registrador de Estado (SREG) Registrador de estado

  18. ATMega328P Instruções de Processamento de Dados Exemplo: ADD Rd, Rr Efeito: Rd (Rd) + (Rr) Formato:

  19. ATMega328P Instruções de Armazenamento e Carregamento • São as instruções para acesso à memória. • Load: carrega no registrador alvo o conteúdo de uma posição de memória. • Store: coloca o conteúdo de um registrador em uma determinada posição de memória • Exemplo: • LD r0, X Efeito: r0  ((X)) O conteúdo da posição de memória cujo endereço está no registrador X (r27:r26) é carregado em r0.

  20. ATMega328P Instruções de Desvio • Incondicional: JMP rótulo • Condicional: BRcondend • O sufixo cond determina o tipo de condição a ser testada. • O teste envolve as flags do registrador de estado (SREG). • Exemplo: • BREQ end – o desvio para a posição de memória indicada pelo símbolo end ocorre somente se a flag Z estiver setada.

  21. ATMega328P • Características : • Memória de dados: • Pilha: • Reside na própria memória de dados (SRAM). • O registrador SP (stack pointer) aponta para a primeira posição livre da pilha (topo). • A pilha cresce de endereços de memória maiores para menores. • No caso do ATMega328P, o registrador SP contém inicialmente o endereço 0x08FF. End. menor End. maior SP

  22. ATMega328P • Características : • Memória de dados: PUSH Rd Formato: Efeito: (SP) (Rd) SP  (SP) - 1 Instruções de Manipulação da Pilha

  23. ATMega328P • Características : • Memória de dados: POP Rd Formato: Efeito:SP  (SP) + 1 Rd ((SP)) Instruções de Manipulação da Pilha

  24. Montador • Dado um programa escrito em linguagem simbólica (Assembly), para que ele possa ser executado, é necessário que ele seja traduzido para a linguagem de máquina. Ou seja, é preciso que cada instrução do programa seja codificada na forma de cadeias binárias e, depois, transferida para a memória. • O software de sistema conhecido como montadoré o responsável por esta tarefa. • Para realizar esta tradução, o montador tem acesso a uma tabela contendo as representações de todas as instruções do processador. • Existem, também, algumas diretivas que auxiliam o montador a decidir conteúdos de memória e em que local o código será instalado (endereços). Estas diretivas são conhecidas como pseudo-instruções. • Exemplos: .org 0x0021 .equ SIMB = 2 define a posição de memória da próxima instrução cria uma constante (SIMB) cujo valor é 2

  25. Montador • Processo de montagem: Busca o código de máquina na tabela de instruções Monta instrução na memória Instrução Lê linha do código Assembly Define endereços / monta dados na memória Segue o procedimento definido na tabela de pseudo-instruções Pseudo-instrução • Além disso, o montador também resolve as referências internas a símbolos presentes no código.

  26. Montador – ATMega328P • Processo de montagem: E como ele está alocado na memória?

  27. Montador – ATMega328P Processo de Montagem • A instrução de multiplicação entre registradores, cuja sintaxe é definida como MUL Rd, Rr, possui o seguinte formato: • Exemplo: MUL R18, R1 • Supondo que esta instrução fosse gravada no endereço (word) 0x0000, teríamos o seguinte conteúdo (binário) na memória de programa: Hexadecimal: 1 9 d 2 End. (byte): 0x0000 0x0001

  28. Softwares de Sistema • Nem sempre o programa em linguagem de máquina é alocado diretamente na memória pelo próprio montador. Muitas vezes, recorre-se a outro programa dedicado exclusivamente ao carregamento na memória. Esse programa é conhecido como • Além disso, o programa pode utilizar recursos fornecidos por outras rotinas, desenvolvidas por outros programadores. Assim, é preciso realizar um processo que combine tais rotinas com o código montado. O programa que realiza esta tarefa é conhecido como CARREGADOR LIGADOR

  29. ATMega328P • Links: • Datasheet completo do microcontrolador ATMega328P http://ww1.microchip.com/downloads/en/DeviceDoc/ATmega48A-PA-88A-PA-168A-PA-328-P-DS-DS40002061A.pdf • Manual com o conjunto de instruções do ATMega328P http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-0856-AVR-Instruction-Set-Manual.pdf • Detalhes do montador, incluindo as pseudo-instruções aceitas https://www.microchip.com/webdoc/avrassembler/index.html

More Related