Baixe o app para aproveitar ainda mais
Leia os materiais offline, sem usar a internet. Além de vários outros recursos!
Prévia do material em texto
AULA 1 LÓGICA E MICROCONTROLADORES Prof. Charles Way Hun Fung 2 TEMA 1 – CONCEITOS BÁSICOS DE COMPUTAÇÃO Antes de introduzir os microprocessadores, é necessário conhecer alguns conceitos básicos que serão muito úteis para o entendimento dos assuntos abordados. Nesta área, pequenos conhecimentos se transformam em algo complexo, portanto, a compreensão de cada termo facilita o aprendizado futuro. 1.1 Bit A abreviação de dígito binário, que pode variar entre dois valores possíveis 0, ou nível baixo, e 1, ou nível alto. Normalmente o nível baixo corresponde a 0 V, e o nível alto corresponde a 5 V ou 3,3 V, dependendo do circuito eletrônico (Gimenez, 2010). 1.2 Byte Consiste em uma representação numérica de 8 bits, de números de zero a 255. Para representá-los, são utilizadas bases numéricas como a binária (base 2) ou a hexadecimal (base 16). Por exemplo, 0h = 010, em que o lado esquerdo representa o número em hexadecimal, e do lado direito é o número em decimal. 000000002 = 010, do lado esquerdo, é o número em binário com 8 bits. 1.3 Instruções São ações que podem ser executadas por um microprocessador, e só ocorrem uma por vez. Podemos classificá-las em: leitura, escrita, aritmética ou lógica. Por exemplo, uma instrução muito comum é a MOV, usada para copiar dados de uma posição de memória para outra. O formato de uma instrução é definido pelo fabricante, podendo variar a quantidade de bytes usados para defini- la. Cada família de processadores possui um conjunto de instruções diferente. Por isso, um código desenvolvido para um processador pode não funcionar em outro conjunto de processadores. 1.4 Programa ou software É um conjunto de instruções organizadas escritas em uma linguagem de programação específica, que resolve um problema seguindo ordem lógica. Estes programas podem ser classificados em: básicos ou sistemas operacionais, 3 utilitários e aplicativos. Os sistemas operacionais são os softwares que fazem toda a interface entre o usuário e os recursos disponíveis, por exemplo: DOS, Windows, Linux. Os utilitários disponibilizam recursos do sistema para o usuário, por exemplo: PCShell ou bibliotecas de desenvolvimento. Por último, os aplicativos são programas que o usuário utiliza: Excel, Word, navegadores. Estes softwares devem estar armazenados em uma memória (Monteiro, 2010). 1.5 Firmware É um programa desenvolvido em nível intermediário, entre linguagem de máquina e nível de hardware (Monteiro, 2010). Na prática, é um programa desenvolvido para ser embarcado em microprocessadores. 1.6 Hardware Consiste no conjunto de circuitos eletrônicos que formam todo o sistema computacional: processador, memórias, monitor, mouse, impressora etc. 1.7 Microcomputador Consiste em um equipamento compacto com o objetivo de simular o cérebro humano. Possui grande velocidade de processamento, alta capacidade de armazenamento e alta confiabilidade nas atividades executadas. Pode ser subdividido em algumas partes: Unidade Central de Processamento (UCP), unidade de memória e unidade de entrada e saída (Gimenez, 2010). 1.8 Memória Consiste no local onde são armazenados os dados, subdividido em pequenas regiões chamadas células, compostas por uma quantidade de bits. Normalmente os computadores utilizam células de 8 bits, mas existem computadores de gerações passadas que usavam células de tamanho igual a 16, 32 ou até 60 bits (Machado, 2010). As memórias podem ser classificadas como principais e secundárias. A memória principal armazena os programas que está executando, ou memória RAM (Random Access Memory – memória de acesso aleatório). As secundárias são memórias de grande porte que armazenam todos os programas presentes no computador – pode-se considerar o disco rígido como memória secundária. 4 TEMA 2 – PARTES DE UM MICROCOMPUTADOR A eletrônica está presente na vida de todos na forma de dispositivos e aparelhos usados em nosso dia a dia. Entretanto, os conceitos e ideias que rondam esta área datam da década de 1940, com o surgimento do primeiro transistor. Este dispositivo pode ser considerado uma chave digital, aberta ou fechada dependendo da lógica adotada. O uso de diversos transistores nos circuitos eletrônicos criou uma nova área, que constantemente evolui, chamada microeletrônica. O termo micro indica que a área lida com dispositivos de escalas micrométricas (metros/106) de materiais semicondutores, como o silício e germânio. Nesta tecnologia, os transistores são usados para montar arquiteturas de circuitos mais complexos, como portas lógicas, flipflops, memórias etc. Juntando todos estes circuitos e organizando-os, chega-se a um dispositivo muito conhecido, o microprocessador. 2.1 Microprocessador O microprocessador, ou Unidade de Processamento Central – UCP (em inglês, CPU), é o cérebro dos aparelhos eletrônicos modernos, fazendo o controle de todos os dispositivos no produto e recebendo comandos do usuário. Para isto, o processador possui uma programação capaz de organizar todos os dados recebidos e executar tarefas determinadas. Os processadores possuem três funções principais (Gimenez, 2010): 1. Buscar o programa na memória: isto ocorre por meio de comandos de leitura da memória, na qual o microprocessador busca o programa linha por linha para ser executado. 2. Decodificação ou análise das instruções do programa: cada programa consiste em um conjunto de instruções organizadas, de forma que consigam atender um problema; a decodificação da instrução é entender qual o seu significado e como foi utilizada no programa. 3. Execução da instrução: a execução da instrução que foi lida da memória; pode ser de movimentação, lógica, aritmética ou salto. A execução de uma instrução caracteriza o ciclo de execução, ou seja, para que o processador execute uma instrução precisa realizar dois ciclos, o primeiro de busca/decodificação e o segundo de execução. 5 Para compreender um pouco melhor o funcionamento de um microprocessador, é interessante saber como ele é constituído: Figura 1 – Partes de um microprocessador. 2.1.1 Unidade Lógica e Aritmética (ULA) É responsável pela execução das instruções lógicas e aritméticas. Além disso, é responsável pela condição do resultado: se é igual ou diferente de zero, maior ou igual a um número ou menor ou igual a outro número, positivo ou negativo etc. Os estados do resultado são registrados em alguns bits, que são chamados de flags e podem ser consultados durante a execução do programa no microcontrolador. 2.1.2 Registradores Os registradores fazem parte do processador e possuem duas categorias bem definidas: registradores de configuração e de propósito geral. Os primeiros são usados para configurar o funcionamento do processador; dependendo do valor que receberem, o processador poderá ou não executar de determinada forma. Já os registradores de propósito geral são usados para armazenar dados na execução do programa. Uma característica dos registradores é que possuem uma quantidade de bits, por exemplo, pode-se dizer que o registrador tem 8 bits, 16 bits ou 32 bits. Esta característica dependerá da arquitetura do processador. 6 2.1.2 Unidade de controle (UC) Responsável pelo controle de dados no microprocessador, nesta unidade é realizada a execução do programa (firmware) que foi armazenado no dispositivo. Gerencia os sinais enviados para dispositivos externos, como a memória (operação de leitura), e dispositivos de entrada e saída (operação de escrita). 2.2 Unidade de memória Para que o processador consiga executar as instruções, os dados precisam ser armazenados. Esta unidade é composta por duas partes: Figura 2 – Unidade de memória 2.2.1 Memória de armazenamento de programa Esta parte da memória é denominada não volátil, ou seja, os dados são mantidos na memóriamesmo sem alimentação de corrente elétrica. Esta memória faz todo o controle do computador em nível de hardware e operacionalmente. Para isto é necessário que o programador que o criou tenha conhecimento do funcionamento do hardware e o conjunto de instruções do processador utilizado. É essencial que o computador possua este programa armazenado e em pleno funcionamento. Ele se encontra em memórias chamadas ROM (Read Only Memory, ou memória de apenas leitura), EEPROM (Electrical, Erasable and Programable, Read Only Memory) ou Flash, sendo normalmente apenas de leitura, o que implica em não realizar operações de escrita (Gimenez, 2010). 7 2.2.2 Memória de armazenamento de dados Armazena os dados do programa que está sendo executado no microcomputador, guardando-os para que possam ser usados no decorrer do programa. Esta memória permite operações de leitura e escrita, porém, diferentemente da memória vista anteriormente, é volátil. Isto significa que os dados armazenados só estarão presentes enquanto o hardware estiver energizado. A memória utilizada para este caso é chamada RAM (Random Access Memory), de acesso rápido, mas com tamanho limitado. 2.3 Unidade de entrada e saída (E/S) Esta unidade faz o controle dos dados que chegam ao microcomputador (entrada) e que saem (saída). Em outras palavras, é a unidade responsável pela interface com o mundo externo. 2.3.1 Unidade de entrada Faz o controle dos dados provenientes de outros dispositivos para o microcomputador, que podem vir de dispositivos de armazenamento depois de uma requisição de dados, teclado ou sensores. Normalmente há algum programa esperando estes dados para tratá-los e utilizá-los. 2.3.2 Unidade de saída É responsável por produzir uma resposta que um dispositivo externo ou até mesmo o ser humano possa compreender. Uma saída de dados pode ser compreendida como um led acendendo e apagando, um som sendo produzido por um buzzer ou uma resposta em um display LCD. TEMA 3 – PERIFÉRICOS DO MICROCONTROLADOR Segundo Gimenez (2010), quando realizamos a integração de todas as partes do microcomputador em um único circuito integrado temos um microcontrolador, porém, com limitação de quantidade de memória. Este dispositivo é usado para aplicações específicas, fazendo uso de alguns periféricos, que serão apresentados a seguir: 8 3.1 Conversor analógico/digital Grande parte dos sensores apresenta os dados em forma analógica, a qual pode possuir qualquer valor de tensão entre o mínimo, normalmente 0 V, e o máximo, no caso que iremos estudar, 5 V. A figura a seguir apresenta um exemplo de resposta analógica: Figura 3 – Sinal analógico Fonte: <https://www.embarcados.com.br/sinal-analogico-x-sinal-digital/>. A conversão ocorre primeiramente fazendo a medição do valor de tensão. Em seguida, para converter este valor para digital, deve-se dividir os valores possíveis de tensão pela quantidade de bits que é a precisão do conversor, no caso do Arduino é 10 bits, ou seja, deve-se dividir o intervalo entre 0 e 5 V por 1024 (210). 3.2 Timers/contadores São dispositivos utilizados para fazer contagem. Na configuração é selecionada a forma que será realizada; caso seja a contagem a partir do clock do microcontrolador, este é considerado um timer ou temporizador. Por outro lado, se for selecionado que a contagem será a partir de sinais de entrada, trata-se de um contador. Neste último caso, podemos exemplificar como uma contagem a partir de um sensor de barreira em uma porta, contando a quantidade de pessoas que passa por ela. Os timers são dispositivos muito usados nas mais diversas aplicações pelo fato de criarem uma noção exata de tempo. Esta característica pode parecer simples, mas sem ela seria impossível desenvolver qualquer sistema preciso ou até mesmo criar os sistemas operacionais utilizados nos computadores. 9 3.3 Interface serial Diferentemente do que pode parecer, a interface serial ainda existe e é muito utilizada na comunicação de dados, principalmente entre o dispositivo que está sendo desenvolvido e o microcomputador. A única diferença é que agora a serial é criada com base na interface USB. Para compreender a comunicação serial, vamos ver como é realizada a comunicação de dados. A figura a seguir ilustra este funcionamento: Figura 4 – Comunicação de dados Fonte: <https://learn.sparkfun.com/tutorials/serial-communication>. A figura 4 mostra que, para transmitir dados, temos dois elementos: transmissor, representado por TX, que é a origem da transmissão e que faz o envio dos dados para o receptor, representado por RX. Este segundo elemento apenas recebe os dados da transmissão. Perceba que a transmissão e a recepção dos dados podem ser realizadas pelos dois lados, os quais representam o microcontrolador e o microcomputador. Ainda na figura há a representação do terra, que é o GND, referência para todos os sinais transmitidos. TEMA 4 – FAMÍLIAS DE MICROCONTROLADORES Entre os microcontroladores, há diversos modelos concorrentes entre si no mercado de sistemas embarcados. Cada um destes processadores é desenvolvido por determinado fabricante, o qual cria linhas de produtos que podem ser usados para a solução dos mais diversos problemas. A seguir serão apresentadas as principais famílias de microprocessadores. 10 4.1 Família x86 Esta é uma família de microprocessadores desenvolvida pela Intel. Iniciou-se com os processadores 8086 e em seguida 8088, que foram usados pela IBM para criar o computador pessoal IBM PC (Monteiro, 2010). Depois disto, grandes empresas desenvolvedoras de software e hardware surgiram, produzindo grande crescimento no mercado tecnológico. Os processadores desta época eram de 16 bits, sendo o barramento de saída de 8 bits, e possuíam quatro registradores de 16 bits, que poderiam ser divididos em dois de 8 bits cada. Com o passar dos anos houve a criação de novas gerações de processadores: 80286, 80386, 80486, sendo a maior evolução com estes dois últimos, nos quais houve a mudança de 16 para 32 bits e grande aumento de desempenho em relação aos anteriores. Porém, com o surgimento do Pentium ou P5, um conjunto de modificações aumentou em grande escala seu desempenho, chegando a ser o dobro do desempenho do 486. Isto se deve à arquitetura superescalar: duas unidades de processamento de inteiros distintas, que se assemelhava a dois 486 em paralelo. Além disto, houve melhoras no barramento, como uso de 64 bits para o tamanho e aumento da frequência de operação. Esta arquitetura ainda está em plena evolução, com seu aumento de capacidade e execução de instruções até os dias atuais. 4.2 Família AVR Estes microcontroladores são fabricados pela ATMEL e são conhecidos pelo bom desempenho em relação aos processadores de outras famílias. Eles conseguem executar uma instrução por ciclo de clock, ou seja, se tivermos um processador AVR com um clock de 20 MHz, teremos uma velocidade de 20 MIPS (milhões de instruções por segundo). Além disso, esta família possui 8 bits e foi desenvolvida usando a tecnologia RISC (Reduced Instruction Set Computer – computador com conjunto de instruções reduzido), o que indica que são poucas as instruções suportadas pelo microcontrolador, porém muito eficientes para a criação do programa. A arquitetura destes circuitos integrados é baseada na arquitetura Harvard, como mostrado na figura a seguir: 11 Figura 5 – Arquitetura Harvard Fonte: <http://www.arnerobotics.com.br/eletronica/Microcontroladores_AVR_basico.htm>. A arquitetura Harvard separa a memória de dados da memória de programa; assim, um processador AVR pode usar um barramento para dados e outro para programa, o que concede maior velocidade a esses processadores. 4.3 Família ARM Esta arquitetura de processadores se difundiu em uma velocidade incrível,pelo fato de possuir inúmeras vantagens: design simples, alta velocidade, grande diversidade de modelos, fabricantes e softwares disponíveis. Ela popularizou o uso de microcontroladores em dispositivos portáteis como telefones celulares, MP3 players, videogames etc. Estes processadores possuem 32 bits, arquitetura RISC e, como o próprio nome já diz, ARM (Advanced RISC Machine – máquina RISC avançada). Têm pequena quantidade de instruções, mas estas são executas rapidamente. Um fato interessante é que o processador ARM pode ser fabricado por qualquer licenciado pela ARM Limited: NXP, Atmel, Texas Instrument, Nintendo. TEMA 5 – O ARDUINO Segundo McRoberts (2011), o Arduino consiste em um sistema que pode interagir com seu ambiente por meio de hardware e software. É uma plataforma computacional programável, inventada pelos pesquisadores Massimo Banzi, David Cuartielles, Tom Igoe, Gianluca Martino e David Mellis, em 2005, com o objetivo de desenvolver um dispositivo barato, funcional, fácil de programar e acessível para estudantes desenvolverem suas capacidades de criar. Para isso, foi adotado o princípio do hardware livre, ou seja, é possível modificar, melhorar ou personalizar o Arduino por meio do hardware básico proposto. 12 A placa básica do Arduino, chamada UNO, é apresentada na figura 6. É composta de um microcontrolador Atmel e circuitos para entrada e saída de dados. Figura 6 – Arduino UNO Créditos: goodcat/Shutterstock. Para complementar o uso do Arduino, é disponibilizado gratuitamente um IDE (Integrated Development Environment, ou ambiente de desenvolvimento integrado), que consiste em um ambiente de desenvolvimento no qual pode-se criar programas para o Arduino. Para facilitar a introdução ao uso da ferramenta, existem diversos programas-exemplos com instruções para testar e modificar. Dependendo do projeto são necessários mais recursos de hardware ou simplesmente mais portas de entrada e saída de dados. Assim, foram criados outros modelos de placas como mostrado na figura a seguir: Figura 7 – Tipos de placas do Arduino Créditos: Sergey Privalov/Shutterstock. 13 Outra inovação do Arduino foi a criação dos chamados shields (escudo, em português). Estes são placas de funcionalidades específicas, por exemplo: sensores de gás, potenciômetros, infravermelho, relés e diversos outros que podem ser usados apenas anexando ao projeto. A figura a seguir ilustra alguns shields utilizados em projetos. Figura 8 – Shields Arduino Créditos: Paolo de Gasperis/Shutterstock. 14 REFERÊNCIAS GIMENEZ, S. P. Microcontroladores 8051: teoria e prática. 1. ed. São Paulo: Érica, 2010. McROBERTS, M. Arduino básico. 1. ed. São Paulo: Novatec, 2011. MONTEIRO, M. A. Introdução à organização de computadores. 5. ed. Rio de Janeiro: LTC, 2010.
Compartilhar