Baixe o app para aproveitar ainda mais
Prévia do material em texto
1 www.mackenzie.com.br APOSTILA MICROPROCESSADORES – EEUPM ENGENHARIA ELÉTRICA PROF. IVAIR REIS N. ABREU http://www.mackenzie.com.br/ 2 PLANEJAMENTO DIDÁTICO PEDAGÓGICO DA DISCIPLINA MICROPROCESSADORES DISPONÍVEL NO MOODLE - DISCIPLINA MICROPROCESSADORES Bibliografia Complementar (livros fora de catálogos ou digitais) Malvino, Albert. Microcomputadores e Microprocessadores. Zuffo, João A. Circuitos Integrados Em Média Escala E Em Larga Escala, Compêndio de Microeletrônica - Volumes, Sistemas Eletrônicos Digitais Livros www.u8051.com.br http://www.u8051.com.br/ 3 Compilador Arduino e Placa Arduino UNO R3 Arduino IDE -> http://arduino.cc/en/Main/Software Placa Arduino UNO R3 -> http://arduino.cc/en/Main/ArduinoBoardUno http://www.robocore.net/modules.php?name=GR_LojaVirtual&prod=120 https://www.sparkfun.com/ http://www.eletrogate.com/ http://www.u8051.com.br/ http://www.robocore.net/modules.php?name=GR_LojaVirtual&prod=120 http://www.eletrogate.com/ 4 1. Conceitos de Sistemas Programáveis Planejamento (P): Este capítulo capacitará o aluno nos seguintes pontos: - Conceituar Sistema Programável, Microprocessador e Microcontrolador. - Compreender a linguagem física, linguagem de máquina, Assembler e linguagem estruturadas e a relação do compilador nestas camadas de programação. - Conhecer os barramentos paralelos e seriais de um Sistema Programado - Descrever a arquitetura interna de uma Unidade Central de Processamento. - Entendimento de um Sistema Mínimo com microprocessador, memória e periférico. - Estudo dos periféricos básicos de um microcontrolador. Execução (D): 1.1 Sistema Programável: A grande utilização dos microprocessadores nos sistemas eletrônicos atuais vem do fato de serem programáveis, ou seja, estes sistemas são compostos por um conjunto físico (Hardware) constante, com repetibilidade, dentro de um processo industrial e portanto com uma ótima relação custo / benefício que realizará determinada tarefa, orientado por uma seqüência de instruções conhecidas por programa (Software), proporcionando grande versatilidade e poder de processamento. Observem a determinação da tarefa do sistema a partir a mudança do programa, mantendo o sistema físico inalterado. Estrutura de um sistema programável Exemplos: O computador pessoal (PC) é padronizado e pode realizar infinitas funções com a simples troca de aplicativo. Este sistema jamais custaria o preço atual dos computadores pessoais se fosse customizado para cada aplicação. Um mesmo computador é capaz, sem alteração nenhuma na máquina, torna-se um poderoso 5 processador de texto ou um grande parceiro em um jogo de xadrez apenas com a mudança do aplicativo. O próprio ser humano é um sistema físico relativamente padronizado (a genética já prova a grande semelhança entre nós) mas com grandes diferenças de capacidade de acordo com a experiência de vida individual e oportunidade de aprendizado. O sistema físico programável recebe normalmente a denominação de computador. 1.2 Estrutura de um computador: Essencialmente os sistemas programáveis podem ter as suas estruturas resumidas a 3 blocos: Unidade Central de Processamento (C.P.U), Memória e Periféricos. Figura - Arquitetura Computador mais barramentos 1.2.1 Unidade Central de Processamento (C.P.U.) : Bloco com capacidade de realizar tarefas (controlar sinais de controle e temporização do sistema, bem como barramentos de dados e endereço) orientadas por instruções. Desta forma a CPU controla todas as atividades do Sistema Programável através da LEITURA e EXECUÇÃO de instruções localizadas na memória. É o principal elemento de decisão do computador, podendo ser comparado ao cérebro do computador “ser humano”. Microprocessador -> CPU encapsulada em um único circuito integrado. Pelo fato de concentrar apenas a função de controle no “chip”, as aplicações de microprocessadores são complexas voltadas para multimídia (controle de som + imagem + comunicação). 6 Exemplo: - Microprocessador 64 bits Pentium Intel i7. Maiores informações dos Microprocessadores Pentium i3 / i5/ i7: https://www.pcworld.idg.com.au/article/386100/what_difference_between_an_intel_core_i 3_i5_i7_/ https://www.intel.com/content/www/us/en/products/processors/core/view-all.html Microcontrolador -> CPU + MEMORIA + PERIFËRICOS encapsulados em um único circuito integrado. Dedicado a funções menos complexas de controle. Normalmente está “embarcado” em equipamentos dedicados. Utiliza o conceito de “firmware” para o programa dedicado. Exemplos - Microcontrolador 8 bits 8051 da Intel (89S51 – Atmel; LPC935 – NXP) - Microcontrolador 8 bits AVR (ATMEGA328 – Atmel) - Microcontrolador 8 bits PIC12F628A Microchip - Microcontrolador 8 bits MC9RS08LC60 Freescale. - Microcontrolador 16 bits MSP430 Texas Instruments. - Microcontrolador 32 bits ARM - Cortex M0 -> KL25Z Freescale Alguns microcontroladores possuem recursos de Processamento Digital de Sinais (PDS ou DSP). Possuem um poder de processamento intermediário entre produtos com https://www.pcworld.idg.com.au/article/386100/what_difference_between_an_intel_core_i3_i5_i7_/ https://www.pcworld.idg.com.au/article/386100/what_difference_between_an_intel_core_i3_i5_i7_/ https://www.intel.com/content/www/us/en/products/processors/core/view-all.html 7 microcontroladores (dedicados) e produtos com microprocessadores (multimídia) com capacidade de fazer processamento aritmético e memória suficiente para cálculos complexos. Aplicações típicas: telefonia celulares, aparelhos MP3, DVDs portáteis, GPS, aplicações médicas, etc. Os microcontroladores DSC (Digital Signal Controller) tem a capacidade matemática do DSP mas, pelo fato de possuírem PORTs, tem aplicações mais voltadas a área de controle principalmente o controle de motores. 1.2.2 Memória Bloco semicondutor com capacidade de armazenar informações. Memoriza basicamente as instruções a serem processadas (através de seus códigos de operação), variáveis (como resultados de operações da C.P.U.) ou dados de entrada e saída dos periféricos. O programa a ser processado deve necessariamente estar presente na memória. Por isso o tamanho cada vez maior das memórias voláteis - RAMs - dos computadores atuais, ou da memória não volátil FLASH dos microcontroladores, pois os programas têm tamanhos cada vez maiores. A memória dos computadores pode ser dividida em volátil (RAM estática / dinâmica) e não voláteis (ROM / PROM / EPROM / E2PROM - FLASH). Em computadores com capacidade de executar aplicativos Multimidia existe o conceito de BIOS (programa de inicialização de periféricos) + SISTEMA OPERACIONAL ( interface gráfica amigável ao usuário) + APLICATIVO (programa final). Exemplo: BIOS inicializa placa de vídeo, interfaces seriais e paralelas, comunicação. Após este processo, existe a busca do sistema operacional (Windows) e aplicativos com a carga dos programas selecionados na memória volátil. Em sistemas dedicados (também conhecidos como EMBARCADOS) a programa tem o nome de Firmware (software dedicado) normalmente residente em uma memória não volátil (normalmente tipo FLASH). Exemplo: Firmware contido em um controle remoto ou um alarme residencial. Os seres humanos, de maneira análoga, têm a memória para armazenamento de funções permanentes (aprendizado, controle dos órgãos internos) e armazenamento de funções temporárias (lembranças armazenadas apenas durante uma tarefa como dirigir entre a residência e o local de trabalho). Resumindo: O computador pessoal (PC) possui o sistema BIOS + SISTEMA OPERACIONAL (WINDOWS / LINUX) + APLICATIVO (WORD, EXCEL,GAMES, ETC). Equipamentos com funções específicas possuem FIRMWARE dedicado. 8 1.2.3 Periféricos Interface de comunicação do conjunto CPU / memória com o meio exterior. Pode ser caracterizado como Entrada (teclado, mouse, etc.) ou Saída (monitor, impressora, plotter, etc.) ou ambas (periféricos de comunicação serial bidirecional). Trata-se da interface de comunicação com o usuário e portanto o conjunto onde o mesmo controla o Sistema Programável. Em microcontroladores estes periféricos são menos complexos, como PORTS, TIMERS, UARTS, CONVERSORES A/D e D/A, SPI / I2C, etc, estudados na sequência. 1.2.4 Barramento Paralelo do Sistema Programável Conforme pode ser observado na figura representativa da arquitetura do computador, os barramentos são meios físicos (normalmente trilhas de circuito impresso) interligando a CPU, memória e os periféricos de entrada / saída. Em um circuito impresso, são as trilhas interligando os diversos pinos dos “chips” do sistema. 9 Figura - Representação de um barramento em um lay-out de circuito impresso Considerando o tipo de INFORMAÇÃO presente no barramento o mesmo pode ser classificado em: Barramento de Dados (Data Bus): carrega a informação da instrução através do código de operação, variável do processamento como o cálculo intermediário de uma fórmula por exemplo ou informação de um periférico de E/S tal como o dado digitado em um teclado. O tamanho da via de dados determina respectivamente o máximo número de instruções, portanto o potencial de processamento e a precisão do processamento aritmético, através do cálculo de ponto flutuante, ou o número de símbolos possíveis a ser representado como os pontos ou pixels de uma foto. Exemplo: 1) - O processador 8085 possui 8 bits no barramento -> máximo de 256 instruções e variáveis numéricas entre -127 a +127 (ou 0 a 255). 2) - O processador Pentium possui 32 bits no barramento -> variáveis numéricas entre - 2147483648 e + 2147483648. O número de bits do barramento de dados está ligado a capacidade de processamento do sistema. Se o processamento é simples (como o controle booleano de um CLP) 8, 16 ou 32 bits são suficientes. Por outro lado, se há a necessidade de um processamento complexo (como os sistemas de multimídia onde há a necessidade de processarmos milhões de pontos de imagem) processamento de 64 a 128 bits já estão disponíveis. 10 Obviamente existe a necessidade de aumentar igualmente a velocidade do sistema pois a “paciência” do usuário é a mesma ao ligar uma lâmpada ou processar uma imagem fotográfica. Exemplo: para controle de uma lâmpada é necessário 1 bit (ligado / desligado), mas para controle de uma foto VGA, com pixels composto de 3 pontos RGB com variação de luminosidade, 640 linhas x 480 colunas, ou 307.200 pixels, sendo necessário no mínimo 32 bits para controle. Por isso, para um controle de vídeo adequado foi necessário o advento de processadores de 32 bits e o sistema operacional Windows ocorrido no início dos anos 90. Barramento de Endereço (Address Bus) : carrega a informação binária da localização de um dado de memória ou E/S. A capacidade de acesso é determinada pela expressão 2n. O tamanho do barramento de endereço acompanhou a evolução do poder de processamento dos microprocessadores já que foi necessário cada vez mais memória para armazenar uma quantidade cada vez maior de dados. Exemplo: - 8085 -> 16 bits na via de endereço -> 216 = 65512 kbytes de acesso a memória / periféricos. - 8088 -> 20 bits na via de endereço -> 1 Mbyte de memória / periféricos. Barramento de controle (Control Bus): leva todas os outros sinais que não são dados ou endereçamento. Exemplo: sinais de alimentação (Vcc e GND), sinais de temporização (“clock”), sinais de inicialização (reset) Exemplo de barramentos - CPU / Memórias e Periféricos Figura Barramentos de Endereço (16), Dados (8) e Controle da CPU Z80 (fonte: http://www.msxarchive.nl/pub/msx/mirrors/msx2.com/zaks/z80prg02.htm) http://www.msxarchive.nl/pub/msx/mirrors/msx2.com/zaks/z80prg02.htm 11 Memória EPROM 27256 RAM 62256 Periféricos (8255 - Interface Paralela PPI ) 12 Esquema Completo (CPU + Eprom + RAM + IO) 1.2.5 Barramento Serial do Sistema Programável Proporciona a diminuição da pinagem do microcontrolador mas com uma velocidade menor. Os barramentos seriais mais utilizados são o barramento SPI (3 pinos) e I2C (2 pinos) Barramento SPI: Barramento com 3 pinos de controle: “clock” (SCLK), saída de dados (MOSI) e entrada de dados (MISO). O controlador SPI (normalmente embarcado no microcontrolador) controla, através de PORTS, os blocos a serem selecionadas (SS1, SS2 ou SS3). Controlador SPI Master acessando 3 dispositivos escravos. http://en.wikipedia.org/wiki/File:SPI_three_slaves.svg 13 Sugestão de Links: http://en.wikipedia.org/wiki/SPI_bus http://ww1.microchip.com/downloads/en/AppNotes/00909B.pdf Barramento I2C: Sistema desenvolvido e proprietário da Philips com 2 sinais de controle: SCL (“clock”) e DAS (dado bidirecional com sentido controlado por protocolo específico). O exemplo a seguir mostra um controlador Mestre acessando 3 dispositivos escravos. Exemplo controlador I2C com 1 Mestre e 3 escravos Sugestão de Links: http://en.wikipedia.org/wiki/I%C2%B2C http://ww1.microchip.com/downloads/en/AppNotes/00974A.pdf 1.2.6 Instruções – Códigos de Operação – Linguagens de Programação Instruções são conjuntos binários com 8, 16, 32 ou 64 bits que uma vez executadas pela CPU executam uma função ligada a configuração da instrução. Um conjunto de instruções forma os programas e aplicativos. Toda “família” de microprocessadores tem seu próprio conjunto de instruções não sendo normalmente compatíveis entre si. A instrução binária forma o CÓDIGO DE OPERAÇÃO formando a Linguagem de Máquina. O código de operação normalmente é representado por uma expressão mnemônica (lembra a sua função) conhecido por mnemônico. Exemplo de Mnemônicos do Microcontrolador 8051: Instruções Significado Código MOV A,R0 A <- [R0] 0E8h MOV R7,A R7 <- [A] 0FFh ADD A,R0 A <- [A]+[R0] 028h Algumas instruções irão ocupar mais de uma posição de memória pois precisam de um complemento. http://ww1.microchip.com/downloads/en/AppNotes/00909B.pdf http://en.wikipedia.org/wiki/I%C2%B2C http://ww1.microchip.com/downloads/en/AppNotes/00974A.pdf http://en.wikipedia.org/wiki/File:I2C.svg 14 Exemplo: MOV A, 0x30 (o dado do endereço de memória 30 hexadecimal é carregado no acumulador A) Códigos de Operação -> 0xE5 , 0x30 O código 0xE5 refere-se ao mnemônico MOV A,xxx e 0x30 é o operando exigido pela instrução MOV A,xxx (endereço 030h da memória de dados). No exemplo acima, o número 0x30 não pode ser compilado como a instrução JNB (cujo código de operação é 0x30). Portanto deve-se prestar atenção se o código de operação pede 1 ou 2 bytes de complemento e colocar o operando seguindo imediatamente a instrução. O resultado disso tudo, colocado sequencialmente na memória é: . . . 1 1 1 0 0 1 0 1 0 0 1 1 0 0 0 0 . . Todas linguagens de computação tais como Visual Basic, C++, Java e etc. nada mais são do que tradutores (compiladores) da linguagem de alto nível para instruções de máquina (representadas por mnemônicos ou instruções Assembler). Um detalhe importante é que uma instrução em linguagem de alto nível corresponde a muitas – às vezes milhares – de instruções de máquina. O processo de compilação de um programa de alto nível pode ser representado como a seguinte sequência: LING. ALTO NÍVEL / INTERMEDIÁRIA (Java ou Linguagem C) => LINGUAGEMDE MÁQUINA (mnemônico representado o código de operação físico) => MICROPROCESSADOR (hardware) Observe que a CPU e o CÓDIGO DE OPERAÇÃO são FÍSICOS enquanto o MNEMÔNICO e as ESTRUTURA DE PROGRAMAÇÃO DE NÍVEL INTERMEDIÁRIO E ALTO NÍVEL (como IF THEN ELSE) são representações que necessitam ser compiladas para gerar o código físico. Uma instrução da linguagem de alto nível (C++ por exemplo) pode gerar centenas ou milhares de instruções de máquina que implementam a dada instrução. A linguagem Assembler também é um tradutor muito simples das instruções do microprocessador para o respectivo código binário. Mas com uma característica importante: cada comando em Assembler gera uma ÚNICA instrução em linguagem de máquina. Um 15 programa escrito em Assembler será sempre traduzido da mesma forma independente do compilador (ASM51 ou IAR Workbench). Toda CPU possui sua própria Linguagem de Máquina ou Linguagem Assembler. Por exemplo, no caso do microcontrolador Intel 8051 a instrução que copia o conteúdo do registrador R0 para o Acumulador (A) é representada na Linguagem Assembler como: MOV A,R0 (mover para o Acumulador o conteúdo do registrador R0) e estará em uma posição da memória como: . . . 1 1 1 0 1 0 0 0 . . Verificação (C) Exercícios – Arquitetura do Computador 1. Definir Sistema Programável, Microprocessador e Microcontrolador. 2. Quais são os 3 elementos de um computador. Explicar a função destes elementos. Comparar estas estruturas artificiais com o “computador humano”. 3. Explicar os 3 barramentos e o tipo de informação que os mesmos transportam. 4. Qual a capacidade de manipulação numérica (faixa numérica). do 8085 (8 bits), 8088 (16 bits), 80386 (32 bits) e Pentium (64 bits). 5. Qual o tamanho do barramento de endereços do 8085 (64 kbits), 8088 (1Mbits), 80386 (4 Gbits) e Pentium (64 Gbits). 6. Qual as características dos barramentos seriais I2C e SPI. Qual a vantagem e desvantagem em relação ao barramento serial? 7. Bibliografia “The 8051 Family of Microcontrollers” – Ler páginas 1 a 4 Responder as questões 1 a 8 (página 5). 8. Explicar a relação entre Hardware, Código de Operação, Mnemônico, Linguagem C e Java. 9. O que é compilador? 10. Compilar as seguintes instruções com auxílio da tabela de instruções do microcontrolador 8051: MOV A,#05 MOV R0,A ADD A,#06 16 INC A MOV 030h,A DEC 030h DEC 031h MOV 033h,030h 11. Descompilar os seguintes códigos do microcontrolador 8051: 078h, 005h, 0E8h, 0FDh, 000h, 012h, 000h, 010h Exercícios – ENADE Questão 13 - Enade 2005 O supercomputador T-Rex (Tiranossauro Rex) e o software Harpia são as mais novas armas da Receita Federal do Brasil para combater a sonegação fiscal. Esse hardware, que realiza 2.860 milhões de instruções por segundo, é capaz de cruzar informações, com rapidez e precisão, de um número de contribuintes equivalente ao de contribuintes do Brasil, dos EUA e da Alemanha juntos. O novo software vai permitir que, a partir de técnicas de inteligência artificial, sejam identificadas operações de risco para o fisco. A novidade do sistema é a capacidade que ele terá de aprender com o comportamento dos contribuintes e com isso detectar irregularidades. Folha de S.Paulo, p. B1, 16/10/2005 (com adaptações). Considerando o texto acima, assinale a opção correta, relativa a informática. A - A capacidade do T-Rex é equivalente à de 2.860 computadores pessoais de 1 GB de memória RAM, desde que suas capacidades possam ser adicionadas. B - Para “cruzar informações, com rapidez e precisão”, o T-Rex poderá usar a Internet, que constitui meio inviolável de transmissão de informação entre bancos de dados. C - É possível que a capacidade de “aprender com o comportamento dos contribuintes”, mencionada no texto, seja decorrente do uso de redes neurais como ferramenta de inteligência artificial. D - Embora os computadores sejam indispensáveis a diversos ramos da engenharia, o estágio atual do desenvolvimento de sistemas operacionais restringe o uso de redes de computadores a grandes empresas. E - O sistema de informação descrito no texto deve ter sido desenvolvido em Linux ou Unix, que constituem linguagens de programação avançadas usadas na implementação de sistemas de informação complexos. QUESTÃO SIMULADO ENADE MACKENZIE 2010 "Em junho, um novo campeão conquistou importante marca no mundo dos bits. Surgiu o supercomputador mais veloz do planeta, o Roadrunner – nome do pássaro, incansavelmente perseguido por um coiote, que inspirou o desenho animado Papa-Léguas. Ele quebrou um recorde espetacular. Atingiu a velocidade de processamento de dados chamada de petaflops, 17 que corresponde a 1 quatrilhão de operações por segundo. Ou seja, a máquina fez 1 000 000 000 000 000 de contas no intervalo de tempo em que uma pessoa pisca os olhos. (...). O maior supercomputador do Brasil é o Netuno, inaugurado em maio pela Universidade Federal do Rio de Janeiro (UFRJ). Ocupa o 138º lugar na lista dos Top500. Alcança 16,24 teraflops. Tem menos de 2% da velocidade do Roadrunner. Mas isso não é pouco. Uma previsão de chuvas para dez dias é feita em uma hora na UFRJ. Se fosse usado um PC comum, levaria quarenta dias. Ou seja, a chuva já teria caído. Financiado pela Petrobras, o Netuno custou 5 milhões de reais. Será empregado na exploração de petróleo. Nesse setor, a força do processamento de dados auxilia na descoberta de novas reservas, quer por meio de cálculos, quer pelo conhecimento adquirido sobre o comportamento do leito oceânico. "Com o Netuno podemos prever também como o solo vai se comportar após a retirada do petróleo e do gás, além de estimar quanto isso pode alterar o regime de correntes e as temperaturas do mar", disse a VEJA Sergio Guedes de Souza, coordenador do Centro de Computação de Alto Desempenho de Geofísica e Oceanografia da UFRJ. (...) A maior parte dos supercomputadores em atividade é formada por aglomerados de máquinas que usam peças de PCs comuns. São chamados de clusters. O Roadrunner, o mais rápido do mundo, é um exemplo. Foi construído com dois tipos de chip: 12 240 deles feitos pela IBM, semelhantes aos usados no PlayStation 3, e 6 562 processadores dual core da AMD. O uso de dispositivos existentes em qualquer loja ajuda a reduzir o preço das supermáquinas." (Veja - Setembro / 2008 - Caderno Tecnologia) Qual das alternativas abaixo é correta baseada no texto acima? A. É necessário o desenvolvimento de um sistema operacional Linux para sincronizar as CPUs dos supercomputadores desenvolvidos. B. A memória de dados dos computadores devem ser a mesma velocidade de acesso do tempo de execução das instruções dos clusters. C. O conceito de utilizar milhares de microprocessadores em uma máquina é igual ao conceito de multiprocessamento presente no cérebro humano, onde cada "cluster" executa uma parte da tarefa proposta. D. A energia elétrica consumida pelo Roadrunner equivale a 12240 computadores IBM PC? E. O Netuno teve um custo de construção equivalente a 2 % do custo do Roadrunner? ENADE 2001 QUESTÃO 18 – COMPUTAÇÃO A figura abaixo representa a hierarquia de memória dos microcomputadores. 18 a) Explique a razão da existência da memória cache. (valor: 2,0 pontos) b) Analise, comparativamente, as memórias cache e principal (RAM), com relação a: capacidade de armazenamento; velocidade de acesso; volatilidade; custo. 1.4 Arquitetura de Microprocessadores 1.4.1 Arquitetura Interna Os blocos essenciais para implementar um microprocessador (CPU) são mostradas a seguir. Figura - Arquitetura típica de um Microprocessador Decodificador de Instruções Bloco lógico combinacional responsável por receber o código de operação das diversas instruções e a partir deste gerar sinais de controleexternos e/ou internos, bem como sinais de temporização, com o objetivo de executar a instrução. É implementado através de lógica combinacional (tabela da verdade), onde as variáveis de entrada são o código de operação do microprocessador e as variáveis de saída os diversos sinais de controle e temporização internos/externos. 19 Exemplo: Execução da Instrução MOV A,R0 (código operação 0xE8) e MOV R1,A ( 0xF9) REPRESENTAÇÃO DA EXECUÇÃO DAS INTRUÇÕES MOV A,R0 (0xE8) E MOV R1,A (0xF9) 20 TABELA COM OS SINAIS DE CONTROLE DAS INSTRUÇÕES MOV A,RO e MOV R1,A Considerando o Decodificador de Instruções uma TABELA DA VERDADE chega- se ao projeto de Circuito Lógico Combinacional (Mapa de Karnaugh). Cada família de C.P.U.s possui um conjunto de instruções (códigos de operação) próprios tornando cada componente da família COMPATÍVEL em termos de código. Unidade Lógica Aritmética (ULA) Unidade responsável pela realização de operações lógico / aritméticas no microprocessador. As operações aritméticas são todas baseadas na soma (implementada através de lógica ‘OU EXCLUSIVO’). Toda lógica de decisão dos programas é baseada em operações lógica / aritméticas. Exemplo: a comparação entre duas variáveis é implementada através da operação de subtração que por sua vez é viabilizada pela operação de complemento de 2: A - B = A + /B + 1 A complexidade da ULA do microprocessador determina a capacidade do mesmo em realizar processamentos complexos (como tratamento de imagem ou som em sistemas multimídia). Registradores Posições de memória internas (latchs tipo D) responsáveis pelo armazenamento temporário de informações gerais (registradores genéricos) ou específicas. São implementados através de “latchs” internos podendo ser comparados a posições de memória dentro do microprocessador. Quanto maior o número de registradores internos maior é a velocidade de processamento, pois não é necessário o acesso à memória externa para armazenamento de variáveis. Registradores Específicos Acumulador: principal registrador de auxílio da U.L.A. Bastante acessado pelas instruções é o registrador armazenador dos resultados da U.L.A. O número de bits 21 do acumulador pode ser do tamanho da via de dados ou o dobro (para aumentar a precisão do resultado presente no acumulador). Flag: registrador sinalizador de algumas condições do acumulador (portanto do resultado) depois de realizadas operações lógico / aritméticas. As condições encontradas normalmente são: zero, sinal, “vai-um”, “overflow”, paridade, etc. Exemplo Flag do 8085: | S | Z | - | AC | - | P | - | C | S -> flag de sinal. Indica a condição do oitavo bit do acumulador. S = 0 -> positivo S=1 -> negativo Z -> flag indicar de zero. Z = 1 -> zero no acumulador , Z = 0 -> número diferente de zero. P -> flag de paridade. Indica o número de ‘1’ no acumulador. P = 1 -> número par , P = 0 -> número impar AC -> flag auxiliar carry. Em 1 indica “vai um” entre primeiro e segundo nibble do resultado. C -> flag carry principal. Em 1 indica “estouro” (“overflow”) do acumulador. Exemplo: Fazer a soma dos números ( 0xBB + 0xFA) MOV A,#0xBB MOV B,#0xFA 22 ADD A,B JC MAIOR Qual o resultado do acumulador e prever se este programa saltará 1 0 1 1 1 0 1 1 FLAG: S Z - AC - P - C + 1 1 1 1 1 0 1 0 --------------- Contador de Programa (PC): registrador armazenador do endereço da próxima instrução. Determina o fluxo do programa. Quando o programador altera o valor do PC, necessariamente desvia o programa (através de saltos sem retorno ou chamada de sub-rotinas). Apontador de Pilha (SP): registrador armazenador do endereço na área de pilha do sistema. Será nesta área que serão armazenados endereços de retorno das sub- rotinas, bem como parâmetros dos diversos registradores. Exemplo 1: instrução CALL 4000 com a pilha definida pelo registrador SP carregado com o endereço 0xFFFF MOV SP,#0xFFFF ; define a pilha no endereço 0xFFFF Exemplo 2: Diferença entre as instruções JMP 2000H e CALL 2000H Instrução: JMP 2000H -> carrega o PC com o endereço 2000H. O conteúdo anterior do PC é destruído (por isso o programa não consegue voltar). Instrução: CALL 2000H -> carrega o PC com o endereço 2000H. Neste caso, o conteúdo anterior do PC (PCH->SP-1 e PCL->SP-2) é salva em uma região de memória (interna ou externa ao microprocessador) conhecida por PILHA. Ao ser executada a instrução RET, o programa retorna ao ponto em que foi chamado. A rotina acessada pela instrução CALL é conhecida por sub-rotina. O conteúdo do registrador SP é decrementado de dois para possibilitar o salvamento de outros parâmetros na pilha (ou a chamada de outras sub-rotinas dentro de sub-rotinas) 23 Exemplo de vídeo -> Subrotinas 8085 https://www.youtube.com/watch?v=_LZxAObNjJo&t=61s 1.4.2 Conceitos Complementares Microprocessador 1.4.2.1 Temporização das Instruções (Ciclo de Instrução e Ciclo de Máquina) As atividades de um processador central são cíclicas. O processador busca a instrução na memória, executa a tarefa ligada ao código lido, busca a próxima instrução e assim por diante. A temporização de um computador depende basicamente do sinal de relógio (“clock”) que sincroniza todas as operações do sistema. O “clock” é gerado a partir de um oscilador com freqüência determinada normalmente por um cristal (mais estável) ou conjunto de resistor e capacitor em série (mais econômico, mas suscetível a variação de temperatura). A figura a seguir mostra um exemplo de “clock” gerado através de cristal no microcontrolador 8051 e ATMEGA328 com capacitores de desacoplamento e circuito interno oscilador e “prescaler”. 24 Oscilador a cristal Fonte: Manual ATMEGA328 25 Fonte: Manual ATMEGA328 Segundo o Manual do microcontrolador ATMEGA328: ww1.microchip.com/downloads/en/DeviceDoc/Atmel-42735-8-bit-AVR-Microcontroller- ATmega328-328P_Datasheet.pdf A seleção da “fonte” do oscilador é configurada por registradores internos do microcontrolador AVR ATMEGA328. O bloco de “system clock prescaler” pode dividir ou mesmo multiplicar a frequência da fonte de entrada em alguns microcontrolador (comum na família PIC da Microchip). Para o processador ATMEGA 328 veja capítulo 13 “System Clock and Clock Options” para maiores detalhes. A fonte do clock no ATMEGA é selecionada através de “bits de gravação da memória Flash” CKSEL função normalmente controlada pelo “bootloader” do IDE do Arduino. 26 Fonte: Manual ATMEGA328 Na placa ARDUINO UNO R3 o cristal oscilador EXTERNO é de 16 Mhz (ver esquema a seguir), mas é importante destacar o oscilador INTERNO do processador ATMEGA328 de 8 Mhz (ver item 8.4 do Manual do ATMEGA) não acessível pelo sistema Arduino. Fonte: www.arduino.cc http://www.arduino.cc/ 27 Com o cristal de 16 Mhz a temporização de cada pulso de clock da CPU do processador ATMEGA passa a ser de 1/16 Mhz ou 62,5 ns. Ciclo de instrução: número de períodos de “clock” necessários para executar uma instrução. O ciclo de instrução é composto basicamente dos ciclos de máquina M1( temporização para busca da instrução) e M2 (temporização para a execução da instrução). No exemplo abaixo para o processador 8085 temos 4 clocks para o ciclo de busca e 3 clocks para o ciclo de execução Fonte: Manual microcontrolador 8085 Ciclo de Máquina: composto dos ciclos M1 ou busca da instrução (onde o código de operação é lido na memória) e ciclo M2 ou ciclo de execução. O ciclo de busca da instrução vai depender do número de bytes necessáriospara a leitura da instrução (por exemplo: o 8085 possui instruções de até 3 bytes que obviamente necessitam de 3 ciclos de busca de códigos na memória). O tempo total necessário para o ciclo de instrução é determinado pelo número de estados T (ou número de pulsos do “clock”) fornecidos pelo conjunto de instruções do microprocessador. Exemplo: Calcular os ciclos M1, M2 e o ciclo de instrução para a instrução MOV A,M (leitura da memória e escrita no registrador A) utilizando fc = 6 Mhz, n = 3, M1 = 4 “clock”s e M2 = 3 “clock”s. - Temporização x Consumo de Potência: o consumo de energia é diretamente proporcional a frequência de operação da CPU. Para um projeto com baixo consumo de energia (utilização de baterias) será necessário avaliar a relação temporização x consumo para atender a demanda de baixo consumo e velocidade de processamento. A seguir é mostrada o gráfico a tabela de consumo do processador ATMEGA328 em função da frequência de operação e tensão de alimentação. 28 Para um cristal de 16 Mhz com alimentação 5 V (placa Arduino) temos uma corrente aproximada de 9 mA. Já para a frequência de 8 Mhz a corrente na mesma tensão de alimentação cai para menos de 6 mA. Fonte: Manual ATMEGA328 - Busca de Instrução “Pipeline”: algumas CPUs otimizam o ciclo de busca (M1) e execução (M2) integrando estes dois processos (enquanto uma instrução é executada a próxima é lida). Este processo acelera a execução do programa. Instrução 1 -> M1 M2 Instrução 2 -> M1 M2 Instrução 3 -> M1 M2 Observe que o ciclo de instrução (M1 + M2) fica reduzida a um único ciclo de máquina. A seguir um exemplo do processo “Pipeline” em um microcontrolador PIC 16F84: 29 1.4.2.2 Circuito de Inicialização (“RESET”) e Supervisório “Watch Dog” Inicialização: também conhecido por “reset”, a entrada de inicialização nos microprocessadores carrega o registrador de endereço PC com o endereço inicial da área de programa (normalmente 0). Pode ser acionado com sinal positivo (0 -> 1) ou negativo (1 -> 0). O manual do microprocessador normalmente informa o tempo mínimo necessário para que o sinal de reset fique ativo de tal forma a se determinar a constante RC do circuito. É fundamental que o sinal de reset seja gerado cada vez que o microprocessador seja ligado (reset automático) e em pequenas quedas de rede (pois o microprocessador quando tem a tensão de alimentação abaixo do nível mínimo recomendado, passa a executar tarefas fora do controle). O circuito a seguir mostra o reset utilizado pelo 8051 (ativo em nível alto, reset manual e automático) e no LPC935 (NXP, ativo em nível baixo). 30 Figura - Sistema de Reset Ativo Alto (8051) e Ativo Baixo (LPC935) Alguns processadores como o ATMEGA328 tem um tempo de reconhecimento de nível de reset baixo muito rápido dispensando o uso do capacitor de carga. Fonte: www.sparkfun.com A curva de sinal do RESET é dada pela fórmula da Carga do Capacitor (no caso de Reset negativo) ou Descarga de Capacitor (no caso de Reset positivo) 31 Considerando que o tempo de Reset típico é de 100 períodos de ““clock”” e que a CPU permanece em inicialização até 2/3 Vcc (no caso de reset negativo) ou 1/3 Vcc (no caso de reset positivo) pode-se calcular o valor de R ou C, fixando um deles. Exemplo: Determinar o mínimo valor de um capacitor para um circuito de reset automático ativo em nível baixo considerando: Vreset = 2/3 Vcc R = 100k Freqüência: 100 Mhz Número de “clock”s mínimo para reset: 100 Supervisórios: circuitos eletrônicos com a função de monitorar o funcionamento do programa e nível da tensão de alimentação (não pode ser menor que um mínimo) gerando um reset no caso de aplicativo "se perder" ou a tensão de alimentação for menor que um patamar. Normalmente estes supervisórios são chamados de Watch Dog (reinicializam a CPU se o programa se perder), Brown-out (instabilidade da alimentação no início do programa) ou Power On Reset (P.O.R) (instabilidade da alimentação durante o processamento). Bibliografia: A.N. 31003 Microchip - Reset e B.O.R. http://ww1.microchip.com/downloads/en/devicedoc/31003a.pdf Bibliografia Watch Dog Timer -> A.N. Microchip 31026a http://ww1.microchip.com/downloads/en/devicedoc/31003a.pdf 32 http://ww1.microchip.com/downloads/en/DeviceDoc/31026a.pdf Watch Dog (“cão de guarda”) : circuito supervisório que inicializa (gera um "reset") no microprocessador a cada período de tempo configurável (1 ou 2 segundos normalmente) se não receber um sinal do microprocessador. Desta forma o programa do sistema deve, em um tempo menor que o tempo do W.D., gerar este sinal (normalmente através de uma instrução do microcontrolar com CLR WDT). Se o programa se perder e não gerar o referido sinal, o W.D. inicializará o microprocessador. Watch Dog Timer Brown out Reset (B.O.R.): inicializa o microcontrolador se a tensão de alimentação cai abaixo de um mínimo (normalmente 90 % do Vcc nominal) DURANTE A OPERAÇÃO DO SISTEMA. http://ww1.microchip.com/downloads/en/DeviceDoc/31026a.pdf 33 Power on Reset (P.O.R.): inicializa o microcontrolador se a tensão de alimentação cair abaixo de um mínimo quando a fonte é ligada. Portanto garante que o programa do microcontrolador estará estável quando o aplicativo começar a "rodar". Figura - P.O.R. Externo 1.4.2.3 Sistema de Interrupções Sinal de entrada no microprocessador gerado normalmente por periféricos, fazendo o microprocessador parar seu processamento, salvar o endereço atual, saltar para uma sub- rotina específica do periférico (endereçado pelo vetor de interrupção, que pode ser fixo ou variável) e posteriormente retornar ao ponto de parada (poderíamos comparar o processo a uma chamada de sub-rotina através de um sinal de hardware). 34 Figura - Funcionamento do Sistema de Interrupção Exemplo -> Atendimento de Teclado: quando uma tecla é acionada, o teclado gera um sinal positivo que ao entrar na interrupção do microprocessador faz o mesmo parar o processamento, salvar o endereço atual do PC na pilha e saltar para o endereço indicado no “vetor de interrupção” (variável ou fixo). A função do programa chamado pela interrupção está ligado ao atendimento à requisição do periférico. Se um mouse gerou uma interrupção o programa está ligado ao aplicativo (“driver”) do mouse. 35 Dentro dos microprocessadores estão disponíveis registradores de configuração que determinam interrupções pendentes e níveis de prioridade. A seguir são mostradas as interrupções do microcontrolador 8051 (5 interrupções com os vetores de salto) e do AVR ATMEGA328 ( 26 interrupções com 2 externas INT0 e INT1 e as demais ligadas a periféricos internos). Tabela de Interrupções 8051 (manual AT80S52) Tabela de Interrupções ATMEGA328 (manual AVR) 36 Verificação (C) Exercício – Arquitetura Microprocessadores 1. Explicar a função do Acumulador e Flag em uma CPU. Descrever os bits do Flag do 8085. 2.Qual o conteúdo do Acumular e Flag da seguinte rotina considerando um flag da CPU do 8085? Haverá salto no programa? MOV A,CAH ;CARREGA ACUMULADOR COM O NÚMERO CA ADD A,9DH ;SOMA A + 9D JZ SALTO ;SALTA SE Z = 1 3. Qual o conteúdo do Acumular e Flag da seguinte rotina? Haverá salto no programa? MOV A,7AH MOV B,53H ADD A,B JNC SALTO 4. Fazer uma tabela de controle considerando os sinais RD, WR e CS das instruções MOV A,R3 e MOV R3,A. Representar a movimentação dos códigos de operação entre a Memória e CPU. 5. Explicar o significado de Ciclo de Máquina e Ciclo de Instrução. Qual o significado do fator de divisão do oscilador N no cálculo destes ciclos. 6. Calcularo ciclo de máquina M1 e M2 e o ciclo de instrução de < ADD A,B > (soma A com B), fc = 10 Mhz, n=2, M1=4 “clock”s, M2=3 “clock”s. 7. Calcular os ciclos de máquina M1, M2 (busca 2 códigos de instrução) e M3 (execução) e o ciclo de instrução (soma dos ciclos de máquina) para a instrução < OUT 10h > (carrega o o periférico de saída com o dado do acumulador), fc = 1 Mhz, n=4, M1 = 4 “clock”s, M2 = 3 “clock”s e M3 = 3 “clock”s. 8. Qual a relação entre Potência e Tempo / Frequência de Processamento. 9. Explicar o conceito de “Pipeline” e seu efeito sobre o tempo de execução de uma instrução. 10. Determinar o mínimo valor de um capacitor para um circuito de reset automático ativo em nível alto (fórmula de descarga do capacitor) considerando: Vr = 1/3 Vcc R = 10 Kohms Freqüência: 500 Mhz Número de “clock”s mínimo para reset: 500 11. Explicar o significado de Watch Dog, P.O.R e B.O.R. e seu princípio de funcionamento. Mostrar os circuitos típicos. 37 12. Explicar o conceito de interrupção. Quem gera o sinal de interrupção? O que é vetor de interrupção? Qual a função do programa de interrupção? Quais são os vetores de interrupção de pinos externos dos microcontroladores 8051 e ATMEGA328? QUESTÃO ENADE Questão nº 6 (E.N.C. 1998) - Gabarito Anexo no final da apostila Nos sistemas microprocessados, o pulso de inicialização (“reset”) é usado para colocar a UCP (Unidade Central de Processamento) em um estado conhecido. Esse pulso precisa ser gerado automaticamente no ato da energização do sistema, e deve ser o mais curto possível, desde que não fique aquém da especificação da UCP. No presente caso, o “reset” deve ser ativado em nível alto (lógico 1) durante um intervalo não inferior a 40 períodos de relógio, gerado a partir do cristal. A figura apresenta um esquema típico para atender a essas necessidades. O inversor é do tipo “Schmitt-Trigger”, cujo comportamento está caracterizado nas informações técnicas e cuja impedância de entrada deve ser considerada infinita. Pede-se: a) a duração mínima do pulso de inicialização; (valor: 2,0 pontos) b) o esboço da tensão sobre o capacitor, logo após a energização do sistema; (valor: 2,0 pontos) c) o valor mínimo da constante RC; (valor: 4,0 pontos) d) a escolha dos componentes, supondo a seguinte disponibilidade: (valor: 2,0 pontos) capacitores: 1 μF, μ10 F e 100 μF; resistores: 56 R, 62 R, 72 R, 82 R, 100 R e 120 R. Questão Simulado Enade Mackenzie 2010 1. Nos sistemas com microprocessador, o pulso de inicialização (“reset”) é usado para colocar a UCP (Unidade Central de Processamento) em um estado conhecido. Esse pulso precisa ser gerado automaticamente no ato da energização do sistema, e deve ser o mais curto possível, desde que não fique aquém da especificação da UCP. No circuito mostrado abaixo o “reset” deve ser ativado em nível alto (lógico 1) durante um intervalo não inferior a 100 períodos de relógio, gerado a partir do cristal. A figura apresenta um esquema típico para atender a essas 38 necessidades. A especificação da UCP indica nível mínimo de tensão de "reset" igual a 50 % da tensão de alimentação do sistema. Escolher a alternativa correta para as questões abaixo: O valor mínimo do resistor R considerando um capacitor de 1 µF . (Dado: ln 0,5 = -0,69) a) 77 ῼ b) 145 ῼ c) 190 ῼ d) 1450 ῼ e) 770 ῼ 1.5 Estudo de Caso - Microprocessador 8085 (8 bits) Manuais: 8085 -> https://www.sigc.edu/department/mca/studymet/Intel8085.pdf Z80 -> http://www.z80.info/zip/z80cpu_um.pdf 6502 -> http://archive.6502.org/datasheets/rockwell_r650x_r651x.pdf Meados da década de 70 do século XX -> Microcontroladores de 8 bits -> primeiros computadores pessoais Microcontrolador 8085 -> TK85 https://www.sigc.edu/department/mca/studymet/Intel8085.pdf http://www.z80.info/zip/z80cpu_um.pdf http://archive.6502.org/datasheets/rockwell_r650x_r651x.pdf 39 TK85 6502 (Motorola) -> Apple II Apple 2 Z80 (Zilog) - TRS80 TRS80 (Radio Shack) Principais características do microprocessador 8085: - 8 bits na via de dados (possui 246 instruções) D0-D7. - 16 bits na via de endereço (acessa 64 k de memória e 256 periféricos) sendo o byte A0- A7 multiplexado com D0-D7 - 5 entradas para interrupções. - Interface serial. 40 - Controle de D.M.A. (sistema de controle de barramento – “tri-state” para acesso a dispositivos externos) - Controle de sincronização para periféricos / memória lentos (sinal “ready”) - “clock” típico de 3 Mhz. Análise da arquitetura interna e pinagens: ver data-book Figura - Arquitetura interna 8085 Descrição das principais funções internas: - U.L.A: realiza operações aritméticas (soma, subtração, incrementação e decrementação) e operações lógicas (AND, OR, OR EXCLUSIVO, Inversão, deslocamentos bit a bit e comparação). - FLAG: registrador que sinaliza o resultado de operações da U.L.A. - Acumulador: registrador de 8 bits com multiplas funções (armazena resultados e operandos da U.L.A., dados de dispositivos de E/S, máscara de interrupções, etc). 41 - Registradores de uso geral: 6 registradores de 8 bits (armazenando dados) podendo ser utilizados como pares de 16 bits (armazenando endereços): BC, DE, HL (ponteiro) - Registrador contador de programa (PC): registrador de 16 bits com a função específica de armazenar o endereço de busca da próxima instrução. Quando carregado através de instrução altera o fluxo seqüencial do programa ( realizando uma salto simples - instrução ‘jump’ - ou chamando uma subrotina - instrução ‘call’). - Registrador apontador de pilha (SP): registrador de 16 bits com a função específica de armazenar o endereço final da área de memória denominada “pilha” (onde são armazenados parâmetros de retorno das subrotinas) - Decodificador de instruções: bloco lógico interno com a função de receber as instruções (códigos de operação que entram pela via de dados), decodificando-as e gerando sinais de controle e temporização. - Buffer de endereços alto (A8-A15): via de endereços mais significativa formando junto com A0-A7 os 16 bits totais da via de endereço. - Controle Serial: o 8085 possui uma saída serial de dados (SOD) controlada pela instrução SIM (coloca o oitavo bit do acumulador no pino SOD) e uma entrada serial de dados (SID), controlada pela instrução RIM (coloca o bit da entrada serial no oitavo bit do acumulador). Análise da pinagem do microprocessador 8085: - Alimentações +5V e GND: alimentação única. Recomenda-se a colocação de um capacitor cerâmico de desacoplamento com valor variando entre 10-100 nF para eliminar ruídos. - X1 e X2: pinos de entrada do cristal. Possui um oscilador interno com a função de gerar um sinal de “clock” de 2 fases. Dispensa o circuito dedicado gerador de “clock”. - “CLOCK”OUT: saída de “clock” para periféricos. Tem a metade da freqüência do cristal ligado ao X1 e X2. - RESETIN: entrada de reset do 8085. Inicializa o 8085 (colocando o PC = 0000h e portanto buscando a primeira instrução) quando temos um nível baixo por mais de 10 mseg. - RESETOUT: saída ativa em nível alto com a função de inicializar os periféricos ligados ao 8085. Sincronizado com o sinal RESETIN. - RD: saída ativa em nível baixo indicando processo de leitura de memória ou periférico. Coloca o barramento de dados como entrada. - WR: saída ativa em nível baixo indicando processo de leitura na memória ou periférico. Coloca o barramento de dados como saída. _ - IO/M: sinal de saída. Em nível alto indica acesso a periféricos. Em nível baixo indica acesso a memórias. - S0 e S1: sinais de saída indicando status. 0 0 -> 8085 parado (HALT) 0 1 -> processo de leitura 1 0 -> processode escrita 1 1 -> processo de busca de instrução (“fetch”) 42 - READY -> sinal de entrada com a função de sincronizar periférico ou memória mais lenta que o 8085. Em nível alto habilita a operação do 8085. Em nível baixo para o 8085, fazendo- o permanecer em estado de ‘WAIT’. - HOLD: sinal de entrada. Em nível alto coloca barramentos de dado, endereço e controle em “tri-state”. Desta forma, um sistema externo (controlador de D.M.A. ou um outro microprocessador mais prioritário) assume um controle do barramento: - HOLDA: saída ativa em nível alto indicando barramento em tri-state para o controlador de D.M.A. ou para o microprocessador paralelo. Sistema Mínimo com o 8085: SKD85 Sistema Mínimo 8085 43 Esquema Sistema Mínimo 8085 Eprom 27256 RAM 62256 Periféricos Programáveis (8 periféricos -> 8255 - PPI - 8251 - USART - 8253 - Timer, etc) Análise de 1 ciclo de temporização da instrução 8085 OUT <END> (2 bytes) Temporização da Instrução 'OUT <end>' (2 bytes) (ver livro Microprocessadores e Microcomputadores - A.Malvino) mostrando sinais da pinagem do 8085. Exemplo: OUT 20H ;códigos de operação -> D3 20 Sinais monitorados (com analisador lógico) CLK: sinal de “clock” (para o 8085 frequência do cristal dividido por 2. AD0-AD7: 8 sinais de Ao-A7 (endereço) e D0-D7 (dado) multiplexado na pinagem do 8085. A8-A15: 8 sinais do byte mais significativo totalizando 16 sinais de endereço. ALE: sinal de saída Address Latch Enable indicando natureza do sinal em AD0-AD7 (1 -> endereço AO-A7; 0-> dado D0-D7) RD: sinal de saída indicando leitura de Memória / IO. WR: sinal de entrada indicando escrita de Memória / IO. IO/M: sinal de saida indicando acesso a IO (1-> periférico) ou M (0 -> memória). 44 Status: sinais S1-S0 (busca de código, leitura ou escrita) Mother Board Asus ( 2012 ) Mostra a evolução da tecnologia de 1975 (8085) para o Pentium IV (2012) mas mantendo os blocos de CPU, Memória Volátil (RAM) e não Volátil (Flash) e Periféricos (chipsets). 45 1.6 Microprocessadores Intel Lista com os microprocessadores da Intel atualizada: http://www.intel.com/pressroom/kits/quickreffam.htm Processadores INTEL -> http://www.intel.com/index.htm?pt_BR_01 http://en.wikipedia.org/wiki/List_of_Intel_microprocessors http://pt.wikipedia.org/wiki/Categoria:Microprocessadores_da_Intel Cronologia -> http://www.intel.com/pressroom/kits/quickrefyr.htm História -> http://download.intel.com/pressroom/kits/IntelProcessorHistory.pdf Novos Processadores Intel -> http://ark.intel.com/ http://www.intel.com/pressroom/kits/quickreffam.htm http://www.intel.com/index.htm?pt_BR_01 http://en.wikipedia.org/wiki/List_of_Intel_microprocessors http://www.intel.com/pressroom/kits/quickrefyr.htm http://download.intel.com/pressroom/kits/IntelProcessorHistory.pdf http://ark.intel.com/ 46 Figura - Tabela comparativa entre microprocessadores Intel (4004-PentiumIII) Vídeo “História do Processadores Pentium – Olhar Digital” http://www.youtube.com/watch?v=ZrTWSJXDfR8 1.7 Sistemas Complementares de Sistema Programáveis 1.7.1 Periféricos Embarcados Ports: típico periférico de microcontroladores de Entrada / Saida para leitura / saída binária de um dispositivo Exemplo: Entrada -> chaves, teclados, sensores binários. Entrada -> Chave (fechada -> 0 ou GND, aberta -> 1 ou Vcc) http://www.youtube.com/watch?v=ZrTWSJXDfR8 47 Saída -> rele, led, lâmpada, motor, solenóide, etc. Acionamento de um rele através de um PORT de um microcontrolador Nivel alto no Port (+Vcc) aciona Rele (instrução SETB <port> no 8051) Nível baixo no Port (GND) desliga Rele (instrução CLR <port> no 8051) Acionamento de um sonorizador ("beep"). Microcontroladores e DSP (Processador Digital de Sinais) / DSC (Controlador Digital de Sinais) possuem Ports internos para controle binários de entradas e saídas. Timers - Temporizadores: contadores de tempo gerando interrupções / eventos temporizados no Microcontrolador. São configurados por software e sincronizados pelo oscilador do sistema ou pulso externo. Exemplo: Timer gerando interrupção a cada 50 msegundos para um alarme verificar os sensores de presença / janela. UART - Comunicação Serial: interface, normalmente Full-Duplex (Tx e Rx simultâneamente), para comunicação serial. Garante a conectividade serial do equipamentos com redes externas (modem, rede Ethernet, Fibra-Otica, satélite, etc). Conversor A/D: Conversor Analógico / Digital responsável por amostrar (taxa de amostragem) sinal externos analógicos (normalmente de baixa frequencia em microntroladores) gerando valores digitais correspondentes. A precisão da conversão depende do número de bits utilizados (amostras = 2n onde n é o número de bits), taxa de amostragem de valor máximo (fundo escala). 48 Exemplo: Leitura do valor de temperatura de 1 ambiente. Se a faixa for de 100º C e for utilizado 8 bits teremos 100 / 28 = 0,4º C Conversor D/A: Conversor Digital / Analógico converte dados digitais binários em valores analógicos correspondentes. Normalmente utilizados em sistemas reprodutores de som (MP3). Sua precisão depende o número de bits utilizado. PWM: Bloco de Modulação por Fase, booleando, normalmente utilizado para gerar sinais com ciclo de trabalho programável. Tem como principal aplicação o controle de luminosidade de lâmpadas ou velocidade de motores. Figura - Sinal PWM. Quanto maior o ciclo de trabalho maior a potência disponibilizada para um dispositivo. USB (Interface Serial Universal): típica interface serial no computador, podendo ser caracterizada por Host (caso do computador) / "on the go" ou Dispositivo (caso de um "pen-drive" ou mouse). Necessita de seguir um protocolo específico de endereçamento. No caso de microcontroladores, normalmente é configurado como dispositivo. Ethernet: interface com uma pilha TCP / IP com a possibilidade de configurar um IP fixo. para o dispositivo. Normalmente utilizada para conectar o microcontrolador a uma rede de computadores para acesso via protocolo TCP / IP. Display LCD: interface para controle de um display de Cristal Liquido. Normalmente necessita de um pino de controle (sinal de 100 Hz), sinais de varredura (no caso de LCD com vários segmentos) e um grande número de pinos para acesso a cada segmento do LCD. Barramento SPI: Barramento Serial de 3 pinos, normalmente utilizado para acesso a perifericos seriais externo (A/D por exemplo) como memória Flash serial (ou interface SD de armazenamento de dados). Barramento I2C: Barramento Serial de 2 pinos com funções similares ao barramento SPI. 49 Barramento CAN: interface serial de 2 fios, com protocolo específico, normalmente utilizado em ambientes ruidosos como os dispositivos em um veículo ou ambiente industrial. Barrramento para Emulação / Gravação: utilizado para gravação / depuração / desenvolvimento do aplicativo. Interage com o hardware do controlador. Normalmente segue o padrão JTAG (6 fios) ou ISP (3 fios) 1.7.2 Memória Virtual e MMU (Memory Management Unit) Para a implementação de Sistemas Operacionais em Computadores, normalmente ocupando uma grande área de memória, é necessário o gerenciamento do espaço disponível de memória atraves de técnicas de gerenciamento e paginação da memória. Alguns destes conceitos são colocados, de forma introdutória, abaixo: - Memória Virtual: técnica para aumentar a capacidade da memória através do chaveamento da memória dando a percepção para o operador de mais memória do que a capacidade real. Isto é realizado através da divisão do programa em blocos, armazenados em área intermediárias (memória secundária - "overlays") e copiandoestes pedaços de programas para um mesmo bloco de memória. - Disco Rígido Físico: guarda todo o programa a ser rodado. - Memória Física Real: memória menor que a Memória Virtual. Para o programador o mapeamento é contínuo. O sistema de MMU (Memory Management Unit) gerencia a cópia do programa armazenado no disco rígido para pedaços da memória real através de registradores de páginas ("page table") e registrador do endereço de offset (segmentação). O endereço real (físico) é determinado pela MMU e o Sistema Operacional trabalha com o endereço total (virtual). Exemplo: 50 1. 1 Mbytes de Memória Virtual (20 bits de endereço) com um aplicativo com 8 Kbytes de Memória Real (13 bits de endereço). A memória virtual será dividida em 128 paginas de 8 Kbytes (128 x 8K = 1Mbytes). Endereço de Offset -> 13 endereços. Endereço de Página -> 7 endereços. O programa controla 1M mas a MMU controla 8Kbytes de memória real dividindo a memória virtual em 128 partes. Links Adicionais -> http://www.embeddedarm.com/products/new-products.php http://en.wikipedia.org/wiki/Memory_management_unit Verificação (C) Exercícios 1. Definir o conceito de PORT, TIMER e UART. Nos microcontroladores 8051 (AT80S52 ou LCP935) e ATMEGA328 (AVR) identificar quais são os PORTS, TIMERS e UART destes microcontroladores. 2. Identifique e descreve a CPU, blocos de memórias e periféricos de um microcontrolador LPC935 (CPU 8051 - 2 “clock”s de ciclo) 3. Faça o esquema de uma típica entrada (chave) e de uma saída (rele ou opto-acoplador) no ATMEGA328 ou 80S52. 4. Liste a linha de tempo da família de microprocessadores da Intel (4004 até Pentium IV - i7) Desafio: Utilizando uma bibliografia do microprocessador 8085 (Microprocessadores e Microcontroladores representar um sistema mínimo com a CPU 8085, uma Eprom 27128 e um RAM 62128. Represente 8 periféricos genéricos e o acesso através de um decodificador. http://www.embeddedarm.com/products/new-products.php http://en.wikipedia.org/wiki/Memory_management_unit 51 2. Arquitetura de Microcontroladores Planejamento (P): Este capítulo capacitará o aluno nos seguintes pontos: - Conceituar Microntrolador - Conhecer a arquitetura interna da família MCS-51 - Sistema Mínimo da família MCS-51 com e sem memória externa - Projetar CLPs utilizando ports de comunicação paralelo. - Arquitetura LPC935, 82S52, ATMEGA328 e aplicações / exercícios Execução (D): 2.1 Introdução Sistemas com microcontroladores são utilizados para controle e sistemas dedicados. São típicos de equipamentos como CLPs e bastante presentes em equipamentos nacionais pelo fato dos mesmos atuarem em nichos de mercado (baixo volume, baixo custo de desenvolvimento, longevidade). Entretanto, com a evolução de microcontroladores atualmente encontra-se dispositivos de 16 e 32 bits com capacidade de rodar um Sistema Operacional e rodar aplicações Multimidia. Exemplo: Microcontroladores ARM Existem diversos fabricantes de Microcontroladores dividindo o mercado competindo de forma agressiva. Os principais fabricantes (e famílias com componentes compatíveis em hardware e código de operação) presentes no mercado (2016 depois das fusões NXP / Freescale e Microchip / Atmel): Principais famílias de Microcontroladores de 8, 16 e 32 bits. 52 Família de Microcontroladores MSC-51 (8051) - 8 bits: ainda uma família bastante utilizada e presente em projetos de 8 bits. Principais fabricantes: NXP (família LPC9xx) e Atmel (família 89S5x) Família de Microcontroladores Microchip (PIC) 8 bits: PIC 10FXX, PIC 12FXX, PIC16FXX, PIC18FXX. Família de Microcontroladores Microchip (PIC) 16 bits: PIC 24FXX Família de Microcontroladores Microchip (PIC) 32 bits: PIC 32FXX Família ATMEL - AVR: ATMEGA328 (Arduino) Família de Microcontroladores Texas Instruments 16 bits: MSP430xxx Família de Microcontroladores Freescale 8 bits: MC9S08XXXX Família de Microcontroladores ARM 32 bits: ARM 7, ARM 9 , ARM 11, CORTEX M-0 (Exemplo KL25Z), CORTEX M2, CORTEX M3, CORTEX M4. Principais fabricantes: NXP, Texas Instruments e ST. Com custo competitivo tem a tendência de se transformar em padrão do mercado. 2.2 ARQUITETURA MICROCONTROLADORES MSC-51 (ORIGINAL) No estudo de uma arquitetura de Microcontroladores é importante observar: Conjunto de Instruções (mnemônicos) Periféricos disponíveis. Memória de Programa (FLASH) e Dados (RAM) - capacidade. ESTRUTURA DA MEMÓRIA RAM. Ao contrário da linha de microprocessadores (segue Lei de Moore no desenvolvimento), microcontroladores tem um “tempo de vida” de décadas. A Intel lançou “apenas” 2 famílias de microcontroladores (8 bits) : MCS-48 (meados da década de 70) MCS-51: presente até hoje de forma bastante atuante no mercado. Apesar de existirem diversas “famílias” importantes de microcontroladores no mercado (Microchip, Texas, Zilog, Motorola, Cypress, National), a linha da Intel continua bastante atuante no mercado (principalmente pelo grande número de fabricantes que utilizam esta arquitetura - NXP, Atmel, Nec, Dallas, Temic) e principalmente muito estudada pela sua arquitetura conceitual (contem conceitos de microcontroladores com acesso a memória externa). Os principais recursos (núcleo básico ou "core") dos microcontroladores MCS-51: - Memória de Programa de 4 kbytes: ROM (8051), OTP (8751), FLASH / EEPROM (89Sxx), ROMLESS (8031) com expansão até 64K. - 256 bytes de RAM (registradores) com expansão até 512 bytes 53 - 4 ports (latchs bidirecionais programáveis) com 8 bits. Existem versões de 2 ports até 6 ports. - 2 temporizadores ("timers") de 16 bits. Expansão até 3 timers - 1 unidade serial assíncrona (UART) "full-duplex". - 5 interrupções (2 externas, 2 "timers" e 1 "UART"). - Oscilador interno para geração de temporização. - Acesso a até 64 Kbytes de RAM externa (dados) e 64 Kbytes de EPROM (programa) externa através do controle de 2 sinais de leitura (PSEN -> área de programa - RD -> área de dados). Esta estrutura é conhecida como 'arquitetura HARVARD'. - 256 instruções otimizadas para controle. Os microcontroladores da família 8051 mantêm este núcleo básico incrementada por periféricos, memória, velocidade maior, oscilador RC, Watch Dog, P.O.R., etc 2.2.1 Arquitetura do Microcontrolador 8051 Arquitetura funcional Figura - Arquitetura Funcional (fonte: Apostila MCS-51 Ricardo Zelenovsky) 54 Descrição das funções internas: - U.L.A.: unidade lógia aritmética de 8 bits, responsável pela execução das 4 operações aritméticas básicas e das operações lógicas tradicionais (AND, OR, OR EXCLUSIVE, INVERSÃO e SHIFT). - Acumulador: registrador de 8 bits mais utilizado pelo microcontrolador. Normalmente utilizado para colocar resultados da U.L.A. ou fatores utilizados nas operações lógico / aritméticas. No caso das operações de multiplicação, o registrador B também é utilizado para colocação dos resultados, pois o resultado é apresentado em 16 bits. - Flag PSW: registrador sinalizador das operações aritméticas da U.L.A., configurador dos registradores R0-R7 e para uso geral. Abaixo é mostrado a posição e nome de seus 8 bits: 55 CY AC F0 RS1 RS0 OV - P CY (PSW.7): indica presença de bit CARRY (vai um) nas operações aritméticas da U.L.A. AC (PSW.6): indica presença do bit Auxiliar Carry quando ocorre vai um entre os 3 e 4 bits nas operações aritméticas da U.L.A.. F0 (PSW.5): bit para uso livre do programador. RS1 e RS0 (PSW.4 E PSW.3): configura qual banco de registradores R0-R7 será acessado. 0 - 0 -> primeiro banco 0 - 1 -> segundo banco 1 - 0 -> terceiro banco 1 - 1 -> quarto bancoEx.: MOV PSW,#00001000B ;RS0=1 E RS1=1 -> SEGUNDO BANCO OV (PSW.2): indica presença de bit CARRY (bit 8 ativado) nas operações de multiplicação da U.L.A. Auxilia também as operações de subtração. P (PSW.0): indica paridade do acumulador. Se setado, indica número par de '1' no acumulador. Caso contrário indica número ímpar. - Contador de Programa (PC): registrador de 16 bits que guarda o endereço da próxima instrução. Quando o 8051 é resetado, este registrador é zerado, fazendo o 8051 buscar a primeira instrução da memória. - Apontador de Pilha (SP): registrador de 8 bits indicador do endereço inicial da pilha do 8051. A pilha necessariamente tem que estar localizada entre os endereços 30H e 7FH da área RAM interna do microcontrolador. O tamanho da pilha deve ser suficiente para permitir os diversos acessos de sub-rotinas do programa (considerando os armazenamento dos endereços do PC e dos parâmetros da instrução PUSH). - Ponteiro de Memória Externo (DPTR): registrador de 16 bits utilizado para armazenar endereços de memória externa. - Registrador B: registrador auxiliar nas operações de multiplicação e divisão. - Decodificador e Registrador de Instruções / Controle e Temporização: sistema responsável pelo armazenamento, decodificação e execução dos códigos de operação (bytes) das 256 instruções do 8051. Controla os sinais externos de controle (reset, ALE, configuração da memória interna de programa e sinal de leitura da memória externa). - Timers: o 8051 possui 2 sistemas de temporização de 16 bits. Maiores detalhes serão fornecidos nos capítulos subsequentes. - Unidade Serial: sistema para comunicação serial assíncrona full-duplex. Maiores detalhes serão fornecidos nos capítulos seguintes. - Memória de Dados (SFR) e de Programa: o 8051 possui um estrutura de acesso ao sistema de memória conhecida como HARVARD, onde o acesso a memória de programa é diferenciado do acesso a memória de dados (através de sinais de leitura distintos). Desta 56 forma, o microcontrolador não permite que um determinado programa fique localizado na área de dados ou vice-versa. A grande vantagem deste sistema é a otimização do sistema no acesso as instruções do programa e aos dados. O programa dos sistemas com microcontroladores normalmente são dedicados (FIRMWARE). Observe que este modo de acesso a memória é diferente dos microcomputadores padrão IBM-PC, onde normalmente os programas localizam-se na área de dados (daí o fato de cada vez mais ser importante uma grande área de memória RAM dentro dos computadores). - Memória de Dados (SRF): o 8051 possuir 256 bytes de memória de dados interna e permite o acesso de mais 64 Kbytes de memória de dados externa (unicamente através das instruções MOVX). Na maioria das vezes a memória interna de dados é suficiente, pois as aplicações de controle normalmente não exigem muita quantidade de memória volátil (já que os programas não são armazenados na área de RAM). Memória RAM 8051 (divididas em memória de trabalho - 0x00 a 0x7F e memória com registradores de função especial SFR - 0x80 a 0xFF) A memória RAM interna é dividida em 4 áreas: - Área de Registradores R0-R7 (00-1FH): o 8051 possui 4 bancos de registradores selecionados através dos bits RS1 e RS0 do registrador PSW. Normalmente estes registradores armazenam endereços da área de rascunho (modo de endereçamento indireto). - Área Booleana (binária) (20H-2FH): 16 bytes endereçados bit a bit (totalizando 128 bits). Pode-se acessar cada bit individualmente indicando uma determinada condição 57 binária (por exemplo: a tecla A de um teclado foi acionada). Estes bits são acessados pelas instruções booleanas do 8051. - Área de Rascunho (30H-7FH): memória de uso geral onde se localiza a pilha do sistema. - Área de Registradores Especiais (SFR) (80H-FFH): área onde se localiza todos os registradores com função especial. O número destes registradores varia de acordo com as funções disponíveis dentro do processador. Os registradores especiais mais comuns são: - PO (80H): port P0. - P1 (90H). - P2 (A0H). - P3 (B0H). - ACC (E0H): acumulador. - B (F0H) - PSW (D0H): registrador de status - SP (81H): apontador de pilha - DPL (82H): byte menos significativo do registrador DPTR. - DPH (83H): byte mais significativo do registrador DPTR. - PCON (87H): registrador de controle de consumo do 8051. - IE (A8H): registrador de habilitação do sistema de interrupções. - IP (B8H): registrador indicador de prioridade do sistema de interrupção. - TMOD (89H): registrador de modo dos timers. - TCON (88H): registrador de controle do timer 1 - T2CON (C8H): registrador de controle do timer 2. - TL0 (8AH): byte inferior do timer 1. - TH0 (8CH): byte superior do timer 1. - TL1 (8DH): byte inferior do timer 2. - TH1 (8BH): byte superior do timer 2. Pinagem 8051 - Vcc,Gnd: alimentação única de 5 Vcc. - X1-X2: conectada ao cristal externo (12 Mhz típico). O sistema de temporização interno divide a freqüência do cristal por 12, proporcionando um ciclo típico de máquina de 1 mseg. 58 - RST: entrada de inicialização ativa em nível alto __ - EA ("external acess"): em nível baixo, desabita os 4 kbytes de memória de programa interna. Toda a busca de instrução é realizada externamente (através de uma EPROM). Em nível alto habilita a memória interna. - ALE ("Address Latch Enable"): na utilização de memória de programa externa, este pino tem a função de indicar a presença de endereço (em nível alto) ou dado (em nível baixo) no barramento de endereço/dado multiplexado (AD0-AD7). ____ - PSEN ("Program Strobe Enable"): em nível baixo indica leitura de uma instrução da área de programa. Normalmente ligado ao pino RD da memória de programa. - Port P0 (P0.0-P0.7): seus 8 pinos podem ter dupla função. Se não houver memória externa, são utilizados como sinais de entrada/saída do "latch" bidirecional P0. Se houver memória externa, atua como 8 sinais multiplexados de dados/endereço (AD0-AD7). O sinal de ALE indica a condição deste barramento. - Port P1 (P1.0-P1.7): 8 pinos de entrada/saída do "latch" bidirecional P1. - Port P2 (P2.0-P2.7): seus 8 pinos também podem ter dupla função. Se não houver memória externa com mais de 256 endereços, são utilizados como sinais de entrada/saída do "latch" bidirecional P2. Se houver necessidade de endereçamento maior que 8 bits, atua como 8 sinais de endereço A8-A15. - Port P3 (P3.0-P3.7): novamente, seus 8 sinais tem dupla função: - P3.0: RxD (recepção serial) / port P3.0 - P3.1: TxD (transmissão serial) / port P3.1 - P3.2: INT0 (interrupção 0) / port P3.2 - P3.3: INT1 (interrupção 1) / port P3.3 - P3.4: T0 (entrada Timer 0) / port P3.4 - P3.5: T1 (entrada Timer 1) / port P3.5 - P3.6: WR (sinal de escrita da RAM externa)/port - P3.7: RD (sinal de leitura da RAM externa)/port 59 Verificação (C) Exercícios / Pesquisa Complementares 1) – Fazer um download de um arquivo .PDF com a arquitetura do 89S51. 2) – Fazer um levantamento dos fabricantes que possuem microcontroladores com a arquitetura do 805. 3) – Fazer um levantamento dos microcontroladores fabricados pela NXP e pela ATMEL compatíveis com o 8051 (LPC9xx e 89Sxx). Sistema Mínimo com o 8051: - 32 sinais de entrada/saída, cristal externo e reset ativo em nível alto. Verificação (C) Exercícios 1. Sistema com o 89S51 com as seguintes características: - “clock” de 12 Mhz - Reset automático e manual. - Controle de 12 motores . - 12 entradas de chaves. 60 2.2.2 Microcontrolador Atmel AT89S32 Manual PDF -> http://ww1.microchip.com/downloads/en/DeviceDoc/doc1919.pdf Arquitetura Interna Fonte: Manual Microchip / Atmel 89S52 Principais características: Compatível com família MCS 51 Memória FLASH 8kbytes Tensão de operação: 4,5 a 5,0 V RAM interna: 256 bytes x 8 bits 32 ports I/O 3 Timers (T0, T1 e T2) http://ww1.microchip.com/downloads/en/DeviceDoc/doc1919.pdf 61 8 fontes de interrupção. UART full duplex Modos de economia de energia: IDLE e Power Down Watchdog Timer Programação Flash Serial ISP Sistema Mínimo: Fonte: www.u8051.com.br (livro Linguagem C para microcontroladores 8051) 2.2.3 Microcontrolador LPC935 (família LPC9xx) http://www.u8051.com.br/ 62 Arquitetura Interna LPC93x NXP 63 Principais Características Memória Flash de 4 / 8 / 16 Kbytes com fácil programação. Memória RAM 256 bytes + 512 bytes de memória auxiliar nas versões LPC935 / 936. Memória EEPROM 512 bytes 4 entradas multiplexadas de conversor ADC de 8 bits e 1 DAC. 2 comparadores analógicos com entrada selecionável. 2 timers de 16 bits (temporizador com “overflow” ou PWM). Sistema adicional de timer de 23 bits podendo ser utilizado como RTC (relógio). UART com gerador de baund rate, detecção de parada e erro de comunicação. CCU (Capture Compare Unit) para geração de PWM e funções de comparação de sinais. RC interno de alta precisão (erro < 1%) dispensando cristal externo. Alimentação de 2,4V a 3,6 V com pinos de I/O tolerantes a 5 V (resistor de pull- up). 64 CPU 8051 de alta velocidade (6 vezes a velocidade 8051 – dividindo a frequencia do cristal / oscilador por 2. Cristal até 18 Mhz (ciclo de instrução de 111 nseg). Gravação Serial (ISP) da memória Flash, facilitando a programação “in circuit”. Gravação In-Circuit Programming (ICP) permitindo processos produtivos ágeis e proteção do código da memória. Watch Dog com oscilador independente (interno). Seleciona até 8 períodos de Watch Dog. Detector de baixa tensão (Brown Out Detect) permitindo o desligamento suave do sistema com opção de gerar uma interrupção. Modo Idle de economia de energia (ativa interrupção) e 2 modos de Power Down com correntes de repouso menores que 1 uA. Reset externo ativo em nível alto (com detector de sinais espúrios). Sistema de Reset interno. Oscilador interno com freqüência selecionada por programação. Frequência externa de 20 Khz e 18 Mhz. Detector de falha de “clock” através do Watch Dog. Programação dos ports de 4 modos: bi-direcional, coletor aberto, com resistor interno de “push pull” e somente entrada. Capacidade de corrente dos ports de até 20 mA (aciona leds) dentro das restrições máximas de corrente de cada chip. Controle de EMI (ruídos) nos ports, exigindo 10 nseg de tempo mínimo de subido de cada sinal. Quando utilizado “clock” e reset interno exige apenas ligação dos pinos GND e Vcc. Interrupções com 4 níveis de prioridade. Interrupções de teclado de 8 entradas. Entradas com Schimitt Trigger. Suporte a emulação externa. Pinagem 65 Diagrama Funcional dos PORTS do LPC93x Observe a múltipla função dos Ports: -> Port P0.0: entrada do ADC AD01, Entrada do Teclado KBI0, Saída do Comparador CMP2. Kit de Desenvolvimento IAR: http://www.iar.com/website1/1.0.1.0/658/1/?item=prod_prod-s1/224 Esquema Elétrico http://www.iar.com/website1/50.0.1.0/224/IAR_LPC935_revB.pdf http://www.iar.com/website1/1.0.1.0/658/1/?item=prod_prod-s1/224 http://www.iar.com/website1/50.0.1.0/224/IAR_LPC935_revB.pdf 66 Configuração dos Ports: Os 3 ports são configurados individualmente de 4 formas (pag. 40, item 5.1 do Manual): Bidirecional: configuração típica do 8051, pode ser configurado como entrada / saída (com resistor de pull-up). Saída: sem resistor de pull-up (“open drain output”) Saída com resistor de “pull-up” Entrada com “scgnutt-trigger” Registradores de configuração: PxM1.y w Px.M2.y, onde X representa o Port e o Y o pino do Port 0 0 Bidirecional 0 1 Saida com resistor “pull up”. 1 0 Entrada (alta inpedância). 1 1 Saída coletor aberto Exemplo: Configurar os 3 ports como bidirecionais mov P0M1,#0x00 mov P0M2,#0x00; mov P1M1,#0x00 mov P1M2,#0x00; mov P2M1,#0x00; mov P2M2,#0x00; Verificação (C) Exercícios 1. Sistema com o LPC935 com as seguintes características: - “clock” de 12 Mhz - Reset automático e manual. - Controle de 12 motores . - 12 entradas de chaves. 2. Fazer um CPL para controlar os ventiladores e lâmpadas da sua sala de aula, com comunicação serial e sensores de presença, temperatura e chave liga / desliga para ventiladores e lâmpadas. 3. Fazer um alarme com o LPC935 com as seguintes características: Cristal externo 12 Mhz Reset externo Comunicação Serial Chave liga/desliga 67 2 Buzinas 2 Lâmpadas. 1 Led 4 sensores para janelas 4 sensores 4. Configurar os seguintes Ports do LPC935 Port 0.3 -> saída com resistor pull-up. Port 1.2 -> entrada alta impedância Port 1.7 -> saída sem resistor de pull-up 2.2.4 Microcontrolador AVR (ATMEL) ATMEGA328 (Arduino) O processador AVR (Atmel) ATMEGA328P é o microcontrolador utilizado na placa do sistema Arduino básica (UNO). Manual PDF -> http://www.atmel.com/Images/doc8161.pdf As principais características deste componente de 8 bits é destacada a seguir: Microcontrolador "low power" AVR de 8 bits. Arquitetura RISC (conjunto reduzido de instruções): o 131 Instruções (maioria executada em um único ciclo de temporização). o 32 registradores de uso geral de 8 bits. o Velocidade de 20 MIPS (“clock” de 20 Mhz) Memória: o 4/8/16/32 K de memória FLASH. Versão ATMEGA328P com 32 K. o 256 a 1 K de memória EEPROM. Versão ATMEGA328P com 1 K. o 512 a 2K de memória RAM. Versão ATMEGA328P com 2K. o Memória de programa com trava de leitura. Periféricos: o 3 Ports: 23 entradas e saídas. Na configuração de Ports os pinos podem ser configurados como bi-direcionais, saída com "buffer" e entrada com resistor de "pull-down" para imunidade a ruido. Na condição de reset os ports estão em "tri-state" e precisam ser configurados. Port B: 8 bits bidirecionais dividindo funções com funções do cristal e Timers. Port C: 7 bits com 6 ports bidirecionais e o pino PC6 para entrada de Reset. Port D: 8 bits bidirecionais o 2 Timers de 8 bits (contagem de 0 a 0xFF). o 1 Timer de 16 bits (contagem de 0 a 0xFFFF) o 6 canais de PWM. o 1 ADC de 10 bits com 8 canais de entrada. o 1 ADC de 10 bits com 6 canais de entrada. 68 o 1 interface serial USART o Interface serial SPI o Interface serial I2C o WatchDog Timer com “clock” separado do oscilador principal. o 1 Comparador Analógico. o Interrupção e "wake-up" através de pino externo. Recursos especiais: o Power On Reset e Brown-out Detection (monitoramento da alimentação). o Oscilador interno calibrado (dispensa cristal externo). o Entradas de Interrupções externas e internas. o 6 modos de economia de energia. o Alimentação entre 1,8 a 5,5 V. o Baixo consumo de energia (modo ativo: 0,2 mA - modo Power Down: 0,1 uA - modo Save: 0,75 uA com oscilador de 32 Khz) Diagrama Interno: DIAGRAMA EM BLOCO AVR ATMEGA328P Pinagem: 28 pinos: 69 Alimentação principal: VCC e GND (2 pinos) Alimentação circuito analógico: AVCC e AREF 23 pinos de Ports multiplexados com os periféricos (ADCs, USART, SPI, I2C), pino de reset externo (PC6), Cristal Externo (PB6 e PB7) PINAGEM AVR ATMEGA328P Comparação entre o ATMEGA48, 88, 168 e 328P Arquitetura da CPU do AVR 70 Registrador de Status (PSW) Registradores de uso geral (R0 a R31) 71 Os registradores de R26 a R31 podem ser utilizados aos pares para "ponteiro de memória" nas instruções do AVR:
Compartilhar