Baixe o app para aproveitar ainda mais
Prévia do material em texto
ARA0108 - MICROPROCESSADORES Prof. Ms. Pedro Gabriel Calíope Dantas Pinheiro 1. LOGICA DE PROGRAMAÇÃO O que é um computador? ✓ É uma máquina que, a partir de uma entrada, realiza um número muito grande de cálculos matemáticos e lógicos, gerando uma saída. ✓ Os primeiros “computadores” eram humanos que calculavam tabelas de logaritmos ou trajetórias para canhões, seguindo procedimentos bem definidos. Hardware e dispositivos ✓ A linguagem nativa do computador é codificada numericamente, de forma binária: ➢ Bit → Pode assumir valores 0 ou 1. ➢ Byte → Agrupamento de 8 bits em uma palavra. ➢ Letras e símbolos são representados por números. Introdução à Lógica de Programação ✓ Lógica é a técnica de encadear pensamentos para atingir determinado objetivo; Sequência Lógica: são passos executados até atingir um objetivo ou solução de um problema. ✓ Instruções é um conjunto de regras ou normas definidas para a realização ou emprego de algo e que indica a um computador uma ação elementar a executar. ✓ Sequência de passos, precisos e bem definidos, para a realização de uma tarefa. Não pode ser redundante, nem subjetivos e não ambíguo; ✓ Algoritmos podem ser especificados de várias formas, inclusive em português. Exercícios: 1. Crie uma sequência lógica para tomar banho. 2. Faça um algoritmo para somar dois números e multiplicar o resultado pelo primeiro número. 3. Descreva com detalhes a sequência lógica para trocar um pneu de um carro. 4. Faça um algoritmo para trocar uma lâmpada. Algoritmos - Pseudocódigo ✓ São independentes das linguagens de programação; ✓ Devem ser fáceis de interpretar e de codificar; ✓ Devem ser o intermediário entre a linguagem falada e a linguagem de programação. ✓ Regras para construção: ARA0108 - MICROPROCESSADORES Prof. Ms. Pedro Gabriel Calíope Dantas Pinheiro ➢ Usar somente um verbo por frase; ➢ Imaginar que está desenvolvendo para pessoas que não trabalham com informática; ➢ Usar frases curtas e simples; ➢ Objetivo; Algoritmos - Diagrama de Blocos ou Fluxograma ✓ É uma forma padronizada e eficaz para representar os passos lógicos de um determinado processamento; ✓ Pode-se definir uma sequência de símbolos, com significado bem definido; ✓ Principal função é facilitar a visualização dos passos de um processamento. Exemplo: Calcular a média aritmética dos alunos. Os alunos realizarão quatro provas: P1, P2, P3 e P4. ✓ Quais são os dados de entrada? Qual será o processamento a ser utilizado? Quais serão os dados de saída? Algoritmo: 1. Receba a nota da prova 1 2. Receba a nota da prova 2 3. Receba a nota da prova 3 4. Receba a nota da prova 4 5. Some todas as notas e dívida o resultado por 4 6. Mostre o resultado da divisão Exercícios: 1. Construa um algoritmo para pagamento de comissão de vendedores de peças, levando-se em consideração que sua comissão será de 5% do total da venda e que você tem os seguintes dados, crie uma sequência lógica para tomar banho. Início Receber Nota 1 Receber Nota 2 Receber Nota 3 Receber Nota 4 Calcular Média Escrever Média Fim ARA0108 - MICROPROCESSADORES Prof. Ms. Pedro Gabriel Calíope Dantas Pinheiro Primeiro programa em C ✓ Um programa em C é um arquivo texto, contendo declarações e operações da linguagem. Isto é chamado de código fonte. ✓ Para executar um programa a partir do seu código fonte necessário compilá-lo, gerando código binário ou executável. Este pode ser executado como qualquer outro programa de aplicação. O que são erros de compilação? ✓ Caso o programa não esteja de acordo com as regras da linguagem, erros de compilação ocorrerão. Ler e entender estes erros é muito importante. ✓ Acontecem quando o comportamento do programa diverge do esperado e podem acontecer mesmo quando o programa compila corretamente. Um exemplo mais complexo ARA0108 - MICROPROCESSADORES Prof. Ms. Pedro Gabriel Calíope Dantas Pinheiro Declarar, Ler e Escrever uma Variável Estruturas de Decisão ARA0108 - MICROPROCESSADORES Prof. Ms. Pedro Gabriel Calíope Dantas Pinheiro Estruturas de Repetição Vetores e Matrizes ARA0108 - MICROPROCESSADORES Prof. Ms. Pedro Gabriel Calíope Dantas Pinheiro Ponteiros ARA0108 - MICROPROCESSADORES Prof. Ms. Pedro Gabriel Calíope Dantas Pinheiro Criar e Chamar Função 2. FUNÇÕES LÓGICAS, PORTAS LÓGICAS E ÁLGEBRA BOOLEANA Sistemas Digitais: Em meados do século XIX o matemático inglês George Boole desenvolveu um sistema matemático de análise lógica. Em meados do século XX, o americano Claude Elwood sugeriu que a Álgebra Booleana poderia ser usada para análise e projeto de circuitos de comutação. Hardware (Portas Lógicas) ✓ Construção dos microprocessadores (unidades internas) ✓ Construção dos circuitos dos computadores (decodificadores, memória etc.) ARA0108 - MICROPROCESSADORES Prof. Ms. Pedro Gabriel Calíope Dantas Pinheiro Software (Operações Lógicas a Nível de Bits) ✓ Operações lógicas dos programas; Portas Lógicas: ✓ Componentes básicos da eletrônica digital; ✓ Dois estados: Falso (0) ou verdadeiro (1); ✓ Desenvolvida no século XIX pelo matemático inglês George Boole; ✓ Século XX – Claude Elwood sugeriu a aplicação em circuitos elétricos ✓ Analisam um conjunto de entradas (Estados) e produzem uma única saída; ✓ Operações básicas: Produto(E), Soma (OU), Negação (Complemento). 2.1 Lógicas Básicas AND, OR, NOT, NAND, NOR Situação Problema: Nos primórdios da eletrônica os problemas eram solucionados por meio de sistemas analógicos. Mas, com o avanço da tecnologia, os problemas passaram a ser solucionados pela eletrônica digital. Na eletrônica digital, os sistemas empregam um grupo de circuitos lógicos básicos, que são conhecidos como portas lógicas. As portas lógicas digitais são o alicerce básico a partir do qual são construídos todos os circuitos eletrônicos digitais e sistemas baseados em microprocessadores. Com o comportamento funcional, dado pelas suas Tabelas Verdade, as portas lógicas podem ser usadas para representar qualquer circuito lógico. E qual é o comportamento funcional das portas lógicas mais comuns? Tipos de Portas Lógicas: ✓ AND (Saída = A.B): Produz resultado verdade se e somente se todas as entradas forem verdade e a expressão 𝑋 = 𝐴. 𝐵 deve ser lida como “x é igual a A e B”; ARA0108 - MICROPROCESSADORES Prof. Ms. Pedro Gabriel Calíope Dantas Pinheiro ✓ OR (Saída = A + B): Produz resultado verdade se pelo menos uma das entradas for verdade e a expressão 𝑋 = 𝐴 + 𝐵 deve ser lida como “x é igual a A ou B”. ✓ NOT ou Inversora (Saída = �̅� ): A saída é sempre oposta ao nível lógico de entrada e a expressão 𝑋 = �̅� deve ser lida: “x é igual a “A barrado” ou “x é o complemento de A” ou “x é o inverso de A”. ✓ NAND (𝑺𝒂í𝒅𝒂 = 𝑨. 𝑩̅̅ ̅̅ ̅): Produz o inverso da saída AND equivalente; ARA0108 - MICROPROCESSADORES Prof. Ms. Pedro Gabriel Calíope Dantas Pinheiro ✓ NOR ( 𝑺𝒂í𝒅𝒂 = 𝑨 + 𝑩̅̅ ̅̅ ̅̅ ̅̅ ̅): Produz resultado verdade se e somente se todas as entradas forem falsas; 2.2 Funções XOR E XNOR Situação Problema: Quando um computador realiza operações matemáticas, ele está utilizando milhares de portas lógicas na unidade lógica e aritmética. Mas, como essas portas lógicas são organizadas para realizar operações lógicas e matemáticas? Para chegarmos a esta resposta nesta disciplina, primeiro é preciso entender que, nos sistemas digitais, essas são operações lógicas booleanas. As operações e expressões booleanas são básicas para realizarmos funções matemáticas em sistemas digitais com a álgebra booleana. Então temos a pergunta: como as expressõese operações booleanas se relacionam com os circuitos lógicos? ✓ XOR (𝑺𝒂í𝒅𝒂 = 𝑨 ⊕ 𝑩): Produz resultado verdade se os valores de sua entrada forem diferentes; ✓ XNOR (𝑺𝒂í𝒅𝒂 = 𝑨 ⊕ 𝑩̅̅ ̅̅ ̅̅ ̅̅ ̅): Produz resultado verdade se os valores de sua entrada forem iguais; ARA0108 - MICROPROCESSADORES Prof. Ms. Pedro Gabriel Calíope Dantas Pinheiro 2.3 Conversão entre Expressões Booleanas e Circuitos Lógicos Situação Problema: Vimos que as expressões booleanas podem ser convertidas em circuitos lógicos, e vice-versa. Mas, muitas vezes, a representação lógica de um sistema é mais simples e intuitiva com uso de tabelas verdade, já que uma tabela verdade mostra claramente a saída para cada entrada possível. E como chegamos ao circuito lógico partindo da tabela verdade? Ex: 𝑆 = (�̅�. 𝐵) . (𝐵. 𝐶̅̅ ̅̅ ̅) . (𝐵 + 𝐷̅̅ ̅̅ ̅̅ ̅̅ )̅̅ ̅̅ ̅̅ ̅̅ ̅̅ ̅̅ ̅̅ ̅̅ ̅̅ ̅̅ ̅̅ ̅̅ ̅̅ ̅̅ ̅ 2.4 Conversão entre Tabelas Verdade e Circuitos Lógicos Situação Problema: Tabelas Verdade podem ser uma opção mais intuitiva para descrever um sistema lógico e, quando convertida em uma expressão lógica, pode gerar um circuito lógico que a represente. Mas, quando a expressão lógica possui muitos termos, gerando um circuito grande. Será que não é possível simplificar a expressão lógica para gerar um circuito menor e economizar portas lógicas para implementá-lo? Tabela Verdade: Visão completa do comportamento da função através de uma representação tabular. 𝑁º 𝑑𝑒 𝑃𝑜𝑠𝑠𝑖𝑏𝑖𝑙𝑖𝑑𝑎𝑑𝑒 = 2𝑁º 𝐸𝑛𝑡𝑟𝑎𝑑𝑎𝑠 Ex: ARA0108 - MICROPROCESSADORES Prof. Ms. Pedro Gabriel Calíope Dantas Pinheiro 2.5 TEOREMAS DA ÁLGEBRA BOOLEANA 3. MICROCONTROLADORES Origem dos Microcontroladores: Um microcontrolador é um dispositivo que pode ser definido como computador em um único chip, isto porque ele traz embutido e de forma integrada, uma unidade central de processamento (CPU), circuitos auxiliares (periféricos), memória ROM (Read Only Memory), memória RAM (Random Access Memory), interface de comunicação serial, temporizadores/contadores, portas de entrada e saída (I/O), circuito clock, entre outros (OKI; MANTOVANI, 2013). É programado em Assembly e possui um poderoso conjunto de instruções. São concebidos para aplicações embarcadas, em contraste com os microprocessadores utilizados em computadores pessoais ou outras aplicações de uso geral. O primeiro microprocessador foi o 4-bit Intel 4004 lançado em 1971. Com o tempo, foram criados microprocessadores mais eficientes. No entanto, ambos chips precisavam de componentes externos ARA0108 - MICROPROCESSADORES Prof. Ms. Pedro Gabriel Calíope Dantas Pinheiro para funcionar, tornando custo total do sistema elevado sendo impossível, economicamente, informatizar aparelhos. O Smithsonian Institution, com os créditos do produto para os engenheiros da Texas Instruments Gary Boone e Michael Cochran criaram o primeiro microcontrolador comercial em 1971. O resultado de seu trabalho foi a TMS 1000, que se tornou comercialmente disponível em 1974. Combinou memória somente para leitura, memória de leitura / gravação, processador e relógio em um único chip e tinha como alvo sistemas embarcados. 3.1 EVOLUÇÃO DOS MICROCONTROLADORES Situação Problema: A arquitetura e o arranjo dos componentes internos de um microcontrolador geram impactos direitos no seu funcionamento, no seu desempenho e no seu custo. Um engenheiro foi contratado para desenvolver um projeto em que é necessário um dispositivo de baixo custo para controlar a irrigação de uma plantação de soja. Para isso, é necessário especificar um microcontrolador capaz de realizar o controle do processo, efetuando a leitura dos sensores de temperatura e umidade do solo, além de controlar o acionamento do sistema de bombeamento. Assim, os seguintes questionamentos podem surgir: Como é o a arquitetura interna de um microprocessador? Quais as diferenças entre um microcontrolador e um microprocessador? Qual a capacidade de memória um microcontrolador precisaria ter para atender este projeto? Quantas portas analógicas e digitais serão necessárias? Evolução Histórica (Gerações): 1. Geração (1945 1955): Válvulas, Cabos de ligação 2. Geração (1955 1965): Transistores, Sistemas em lote (batch) 3. Geração (1965 1980): ICs (Circuitos Integrados) e Multiprogramação 4. Geração (1980 até o presente): Computadores Pessoais 3.2 COMPONENTES BÁSICOS DE MICROCONTROLADORES Conceitos de processamento de dados: ✓ Sistema Operacional: Conjunto de programas que permite a interação entre o usuário e o computador. ARA0108 - MICROPROCESSADORES Prof. Ms. Pedro Gabriel Calíope Dantas Pinheiro ✓ Processador: Responsável pela execução de operações definidas por uma instrução de máquina. Também é chamado de UCP (Unidade Central de Processamento) ou CPU (Central Processing Unit). É constituído de milhões de componentes eletrônicos (cujas funções básicas são ler, interpretar instruções e realizar operações matemáticas; ✓ Memória: Sistema de armazenamento e recuperação de dados. Cada dispositivo de memória possui características diferentes. A memória principal é dividida em partes endereçáveis (onde as informações estão armazenadas e de onde podem ser recuperadas. A memória de programa é onde fica armazenado o programa gravado no PIC e que será executado tão logo seja ligado na alimentação. Na memória de dados, armazena-se as variáveis do programa, ou até 128 bytes de dados na memória EEPROM, que serão mantidos mesmo que o circuito seja desligado da alimentação ✓ Registradores (SFR – Special Function Regiters): São posições da memória que recebem nomes específicos e têm função bem definida: guardar a configuração e o estado de funcionamento atual do Microcontrolador. Normalmente, cada bit do registrador tem uma função específica. Assim, temos um registrador para definir se as portas são de entrada ou de saída, ativar e desativar interrupções, apresentar o estado da CPU etc. ✓ Barramento: Conjunto de fios que conduz sinais elétricos entre os componentes. Um barramento pode ser composto por um ou mais fios, em função da quantidade de bits que irá transportar. Existem barramentos para propósitos distintos endereços, dados e controle. ✓ Dispositivos de Entrada/Saída: Permite a comunicação entre o sistema de computação e o meio exterior convertendo a linguagem utilizada pelo sistema em linguagem do mundo exterior e vice- versa. Os seres humanos entendem símbolos enquanto os computadores entendem sinais elétricos. ARA0108 - MICROPROCESSADORES Prof. Ms. Pedro Gabriel Calíope Dantas Pinheiro Arquitetura Harvard x Von Neuman: ✓ Von Neuman: São também conhecidos como “Microcontroladores CISC”. Quando um sistema de processamento de dados possui uma única área de memória na qual ficam armazenados os dados e o programa a ser executado (software). Instruções demoram mais de um ciclo de máquina para execução; Ex: 4004; 8080; 8051; 8085; Z80. ✓ Harvard: São também conhecidos como “Microcontroladores RISC”. Os dados ficam armazenados em uma área de memória e o programa a ser executado fica armazenado em outra área de memória. Instruções executadas em apenas 1 ciclo de máquina; Ex: Intel 8086, 8088; Microchip PIC; AVR; 3.3 MICROCONTROLADORES X MICROPROCESSADORES Microprocessadores: 1. É um circuito complexo, em forma de circuito integrado (CI); 2. Contém milhares de transistores. 3. Estes transistores internos constituem os mais diversos circuitos lógicos: como contadores, registradores, decodificadores, e centenas de outros. 4. Estes circuitos lógicos são dispostos de maneira complexa, dando ao microprocessador a capacidade de executar operações lógicas, aritméticas, e de controle. 5. Para utilizarmos um microprocessador outros componentescomo a memória tem que ser conectados ao chip, por meio de circuitos externos; ARA0108 - MICROPROCESSADORES Prof. Ms. Pedro Gabriel Calíope Dantas Pinheiro Microcontroladores: 1. São considerados computadores em um único chip; 2. São normalmente utilizados para aplicações específicas; 3. Não exige circuitos externos para funcionar, dentro dele se encontram todos os periféricos necessários para o seu correto funcionamento. Além da unidade de processamento, estes podem ser compostos por: ✓ Memória de leitura e escrita para armazenamento de dados ✓ Memória somente de leitura para armazenamento de programas ✓ EEPROM para armazenamento permanente de dados ✓ Dispositivos periféricos como conversores analógico/digitais (ADC), conversores digitais/analógicos (DAC), portas de Entrada e Saída. Microcontroladores x Microprocessadores: 3.4 FAMÍLIAS E TIPOS DE MICROCONTROLADORES Situação Problema: Um estudante de engenharia pretende estudar o funcionamento de microcontroladores a fim de se especializar na área de projetos de sistemas embarcados. Para isso, ele pretende adquirir uma plataforma de desenvolvimento para aplicar seus estudos. Dentre as opções de kits de desenvolvimento encontradas, o jovem se deparou com kits que utilizam duas famílias muito populares atualmente. A primeira opção utiliza um microcontrolador PIC16F628A e a segunda utiliza um microcontrolador da família Atmega328. Com isso, algumas dúvidas podem surgir: Quais as diferenças técnicas entre esses dois microcontroladores? Quais são suas vantagens e desvantagens? Microprocessadores • Necessita de periféricos externos para Funcionar • utilizados em aplicações onde são requeridos velocidade e cálculos matemáticos complexos; • ULA (Unidade Lógica e Aritmética) • Expansível • Versatilidade • Uso geral Microcontroladores • Não necessita de periféricos externos para Funcionar • ULA (Unidade Lógica e Aritmética) • Para aplicações De baixo custo, • ULA possui todos os recursos para seu funcionamento • Uso específico ARA0108 - MICROPROCESSADORES Prof. Ms. Pedro Gabriel Calíope Dantas Pinheiro Quais as linguagens disponíveis para programação desses microcontroladores? Qual a diferença de custo entre esses microcontroladores? Microcontroladores PIC : ✓ Microcontroladores fabricados pela Microchip Technology; ✓ Arquitetura Harvard e conjunto de instruções RISC; ✓ Processam dados de 8 bits (foi lançada uma família de 16 bits com prefixo 24F); ✓ Recursos de programação por memória FLASH, EEPROM e OTP; ✓ Famílias de 12 bits, 14 bits e 16 bits de núcleo de processamento; ✓ Possuem interrupções Externas e Internas; ✓ Alimentação de 2 a 6V; ✓ Encapsulamento de 6 a 100 pinos; Peripheral Interface Controller (PIC) é fornecido pela Microchip Technology a partir de 1993. Esses microcontroladores foram extremamente bem-sucedidos dentre os de 8 bits. A principal causa por trás disso é que a Microchip tem atualizado constantemente a arquitetura do dispositivo e incluído muitos periféricos para atender às necessidades dos desenvolvedores. Plataforma Arduino (Microcontroladores AVR): A plataforma permite um rápido desenvolvimento e alterações de projetos e possui um ambiente de programação, IDE (Integrated Development Environment). A Figura mostra o exemplo de uma placa Arduíno, que tem como padrão possuir um chip microcontrolador ATmega, uma conexão USB para programação, entrada para fonte de alimentação externa, pinos de I/O digitais e de PWM, assim como pinos analógicos, GND e VCC (ARDUINO, 2017). ARA0108 - MICROPROCESSADORES Prof. Ms. Pedro Gabriel Calíope Dantas Pinheiro A função 𝒔𝒆𝒕𝒖𝒑(), será executada apenas uma vez e é utilizada para inicializar as variáveis, o tipo dos pinos, declarar o uso de bibliotecas. Após criar a função, 𝒔𝒆𝒕𝒖𝒑(), é criada a função, 𝒍𝒐𝒐𝒑(), que executa sempre o mesmo bloco de código permitindo ao seu programa fazer mudanças e responder. 4. COMPILADORES E SIMULADORES 4.1 IMPORTÂNCIA DA LINGUAGEM C EM SISTEMAS EMBARCADOS Situação Problema: Um estudante de engenharia foi desafiado pelo professor a desenvolver um programa em C++ que simule uma calculadora simples. Para compilar os resultados, o programa deve realizar a leitura de dois números reais e um caractere, os quais serão fornecidos pelo usuário. Se o caractere for o “+”, e´ realizada a soma; se for o “–”, e´ realizada a subtração; se for o “*”, é realizado o produto; e se for o “/”, e´ realizado o quociente. Durante o desenvolvimento deste programa, algumas dúvidas podem surgir: Como declarar as variáveis de entrada? Quais operadores de entrada e saída de dados serão utilizados? Quais instruções devem ser empregadas neste programa para realizar devidamente as operações? 4.2 FERRAMENTAS DE DESENVOLVIMENTO ✓ IDE Arduino ✓ PicSimlab ✓ Mplabx ✓ Avrstudio ARA0108 - MICROPROCESSADORES Prof. Ms. Pedro Gabriel Calíope Dantas Pinheiro 4.3 PLATAFORMA ARDUÍNO E CIRCUITOS ELETRÔNICOS NO TINKERCAD Situação Problema: 4.4 FERRAMENTAS PICSIMLAB E MPLABX PARA MICROCONTROLADORES PIC Situação Problema: 5. PERIFÉRICOS INTEGRADOS 5.1 ENTRADA E SAÍDA DOS MICROCONTROLADORES Portas de Input/Output (I/O): Como um computador, oferece interações de E/S, através de seus pinos digitais (entrada e saída) e analógicos (entradas); ✓ Digital: 1/0, ON/OFF; ✓ Analógico: Variação de Valores; 5.2 CONVERSORES ANALÓGICO-DIGITAIS(A/D) Conversor Analógico-Digital (A/D): Efetua a conversão de um sinal analógico para a sua representação digital de 10 bits. A saída do circuito de amostragem e retenção é ligado à entrada do conversor A/D de 10 bits. O conversor A/D gera um resultado binário através de um processo de aproximação sucessiva e armazena o resultado em um registrador de 10 bits. A tensão de referência utilizada pelo conversor pode ser selecionada por software, entre a tensão de alimentação ou a tensão aplicada ao pino “𝑉𝑅𝑒𝑓”. ARA0108 - MICROPROCESSADORES Prof. Ms. Pedro Gabriel Calíope Dantas Pinheiro 5.3 TEMPORIZADORES E COMPARADORES Temporizadores: Têm ampla aplicação, pois permitem a marcação precisa de intervalos de tempo. ✓ Timer 0 conta de 0 a 255 (8 bits); ✓ Timer 1 conta de 0 a 65535 (16 bits). Sempre que o timer atingir sua contagem máxima e nós adicionarmos mais uma unidade, ele retornará a zero; quando isso acontece, falamos que houve um estouro ou transbordamento do timer. Neste momento, a interrupção associada ao timer é acionada, caso esteja habilitada. Como cada incremento do timer gasta, exatamente, um ciclo de máquina, é possível inicializar o timer com o valor adequado a fim de produzir a contagem de tempo que se deseja. Por exemplo, se desejarmos contar 100µs, podemos inicializar o timer 0 com 156 (256 - 100) para um ciclo de máquina de 1µs. Quando o timer 0 atingir 255 e tentar passar para 256, ele retornará a zero e terá se passado exatamente 100 incrementos de 1µs, totalizando 100µs. Comparadores: Consiste em um circuito de comparador analógico que pode ter suas entradas e sua saída acessada pelos pinos do Microcontrolador. É controlado pelo registrador CMCON que permite desligar ou ligar os pinos do comparador aos pinos externos. A saída do comparador vai ao nível alto sempre que o valor da entrada não inversora for maior que o valor da entrada inversora. Através do registrador VRCON podemos ajustar o nível de tensão de referência a ser aplicada à entrada inversora do comparador. ARA0108 - MICROPROCESSADORES Prof. Ms. Pedro Gabriel Calíope Dantas Pinheiro 5.4 MODULAÇÃO POR LARGURA DE PULSO (PWM) PWM (Pulse-Width Modulation – Modulação por Largura de Pulso): Consiste em um oscilador de onda retangular onde se fixa a frequência e se alterna o ciclo ativo (duty cycle). Através do PWM podemos gerar um sinal contínuo (por meioda filtragem ou da integração) a partir de um sinal digital pulsado. Até agora, todos os projetos lidaram somente com valores digitais, 0V (falso) e 5V (verdadeiro), porém em várias aplicações precisamos trabalhar com um intervalo maior de possiveis valores, para isso precisamos trabalhar com Sinais Analógicos, a imagem abaixo mostra a diferença entre os sinais. Observe que o sinal digital (azul) só admite dois valores, enquanto o sinal analógico (vermelho) permite um número muito maior de valores. Na Plataforma Arduíno as saídas possuem uma precisão de 8 bits [0,255], enquanto as entradas possuem uma precisão de 10 bits [0,1023]. Os PICs possuem o PWM com ajuste da largura de pulso de 10 bits (210 = 1.023), ou seja, podemos ajustar o nível alto, desde zero (saída desligada) até 1.023 que representa o máximo do sinal (saída ligada continuamente). O valor médio de saída vale: 𝑉𝑆𝑎í𝑑𝑎 = 𝑉𝑀á𝑥𝑖𝑚𝑎 𝑑𝑒 𝑆𝑎𝑖𝑑𝑎 ∗ 𝑇𝐻𝑖𝑔ℎ 𝑇 Onde: 𝑉𝑆𝑎í𝑑𝑎 → Tensão de saída 𝑉𝑀á𝑥𝑖𝑚𝑎 𝑑𝑒 𝑆𝑎𝑖𝑑𝑎 → Tensão máxima de saída 𝑇𝐻𝑖𝑔ℎ → Tempo de nível alto (Duty Cycle) – (Variável) 𝑇 → 𝑃𝑒𝑟í𝑜𝑑𝑜 𝑑𝑜 𝑆𝑖𝑛𝑎𝑙 (𝐹𝑖𝑥𝑜) ARA0108 - MICROPROCESSADORES Prof. Ms. Pedro Gabriel Calíope Dantas Pinheiro O PWM é muito utilizado para o controle de velocidade de motores de cor- rente contínua. Ex: ARA0108 - MICROPROCESSADORES Prof. Ms. Pedro Gabriel Calíope Dantas Pinheiro 6. PERIFÉRICOS EXTERNOS 6.1 PROTOCOLOS DE TRANSMISSÃO DE DADOS USART (Universal Synchronous Asynchronous Receiver Transmitter – Transmissor/Receptor Universal Síncrono e Assíncrono): Utilizado para a comunicação serial. Esse módulo implementa todo o protocolo lógico de comunicação pela porta serial RS-232 com o microcomputador. Para o protocolo físico devemos utilizar um conversor de níveis (como o MAX232), uma vez que o Microcontrolador fornecerá níveis de tensão de 0 V a 5 V e a RS-232 trabalha com níveis de +15 V a -15 V.. 6.2 COMPONENTES ELETRÔNICOS Protoboard: É uma placa com vários furos para conexões entre componentes de um circuito elétrico, sendo, normalmente, usada para fazer testes com circuitos pequenos devido à grande facilidade de manuseio. Um exemplo pode ser visualizado na imagem abaixo. A placa é espelhada e tem duas partes: a central, para conexões entre os componentes elétricos, e a periférica, geralmente usada para conectar a alimentação e a terra. Na parte central os furos das colunas são conectados entre si, mas não se conectam com outras linhas. Já na parte ARA0108 - MICROPROCESSADORES Prof. Ms. Pedro Gabriel Calíope Dantas Pinheiro periférica os furos das linhas são conectados entre si e não se conectam com os furos das colunas. Como pode ser visto na imagem abaixo. Resistor: É um componente formado por carbono e outros elementos resistentes usados para limitar a corrente elétrica em um circuito. Por seu tamanho muito reduzido, é inviável imprimir nos resistores as suas respectivas resistências. Optou-se então pelo código de cores, que consiste em faixas coloridas no corpo do resistor indicadas como a, b, c e % de tolerância. As primeiras três faixas servem para indicar o valor nominal de sua resistência e a última faixa, a porcentagem na qual a resistência pode variar seu valor nominal, conforme a seguinte equação: 𝑅 = (10𝑎 + 𝑏) ∗ 10𝑐 ± % 𝑡𝑜𝑙𝑒𝑟â𝑛𝑐𝑖𝑎 Ex: Um resistor de 2.700.000Ω (2,7MΩ), com uma tolerância de ±10% seria representado pela figura. 1ª cifra: vermelho (2) 2ª cifra: violeta (7) Multiplicador: verde (105) Tolerância: prata ( ±10% ) ARA0108 - MICROPROCESSADORES Prof. Ms. Pedro Gabriel Calíope Dantas Pinheiro 6.3 SENSORES E ATUADORES Servomotores: ARA0108 - MICROPROCESSADORES Prof. Ms. Pedro Gabriel Calíope Dantas Pinheiro Entradas Analógicas e Sensores: ARA0108 - MICROPROCESSADORES Prof. Ms. Pedro Gabriel Calíope Dantas Pinheiro Escrevendo no LCD ARA0108 - MICROPROCESSADORES Prof. Ms. Pedro Gabriel Calíope Dantas Pinheiro 6.4 INTERFACES COM O USUÁRIO A interface serial UART (Universal Asynchronous Receiver Transmitter) do Arduino é responsável por enviar e receber dados para e do microcontrolador. Para isso são utilizados os pinos nomeados como Tx (transmissão) e Rx (recepção). No Arduino Uno esses pinos são, respectivamente, D0 e D1 e também são utilizados pelo USB para o upload dos programas (sketches) para o microcontrolador. Em outras placas o número de portas seriais chega a 4, como mostra a Tabela Para realizar uma comunicação serial é necessário que seja definida previamente a taxa de transmissão de dados que será utilizada tanto pelo transmissor como pelo receptor. Esta taxa é conhecida como (baud rate) e pode assumir os valores de 300, 1200, 4800, 9600, 14400, 19200, 28800, 38400, 57600 e 115200, sendo a taxa default do Arduino 9600 bauds. 𝑺𝒆𝒓𝒊𝒂𝒍. 𝒃𝒆𝒈𝒊𝒏(𝒃𝒂𝒖𝒅_𝒓𝒂𝒕𝒆): É utilizado para iniciar uma comunicação serial. O parâmetro de entrada baud_rate é utilizado para definir a taxa de transmissão que será utilizada. Normalmente este comando é colocado na função setup 𝑺𝒆𝒓𝒊𝒂𝒍. 𝒂𝒗𝒂𝒊𝒍𝒂𝒃𝒍𝒆(): Utilizada para verificar se existem bytes a serem lidos na porta serial. Caso existam ela retorna o número de bytes. Caso contrário é retornado o valor 0, que equivale a um valor lógico falso em linguagem C. Este comando deve ser inserido na função loop. 𝑺𝒆𝒓𝒊𝒂𝒍. 𝒓𝒆𝒂𝒅(): Lê a porta serial e retorna o primeiro byte disponível. Caso não haja informação na porta o retorno é igual a -1. 𝑺𝒆𝒓𝒊𝒂𝒍. 𝒘𝒓𝒊𝒕𝒆(): É utilizada para escrever dados na porta serial. Os dados podem ser enviados como bytes ou conjuntos de bytes. 6.5 IMPORTÂNCIA DE INTERRUPÇÕES PARA O RECEBIMENTO DE DADOS O método mais utilizado para a verificação do estado de um pino de entrada é a leitura frequente do nível nele presente (técnica de polling – sondagem) por ser o método de fácil implementação. No entanto, a despeito desta simplicidade, esse método não se mostra adequado em situações em que é preciso uma resposta imediata do processador assim que houver uma mudança no nível de um pino. ARA0108 - MICROPROCESSADORES Prof. Ms. Pedro Gabriel Calíope Dantas Pinheiro Em tais casos, é recomendado que seja utilizado uma interrupção, ou seja, a chamada de uma função auxiliar que só é executada se houver ocorrido um evento externo específico, como a mudança do estado de um pino. Como o próprio nome indica, uma interrupção serve para interromper a execução normal do programa principal e, imediatamente, tratar do evento que a gerou. Nesse caso, após a chamada da função auxiliar, o fluxo original do programa principal só será retomado quando a interrupção for concluída. ✓ Timer: Ocorre sempre que o contador do timer estoura, isto é, quando atinge o valor máximo e é incrementado de uma unidade. Por exemplo, o timer 0 (endereço 01H) é um temporizador de 8 bits (conta de 0 a 255). Quando o contador atingir 255, no próximo incremento ele estourará (tentará passar para 256), retornando a zero e disparando a interrupção de timer 0. Para que essa interrupção funcione, o registrador responsável pela interrupção deve-se receber 1, como por exemplo no PIC o registrador INTCON.GIE = 1 (liga chave geral); INTCON.T0IE = 1 (liga timer 0). Sempre que ocorrer o estouro do contador, o bit INTCON.T0IF estará em 1 e a rotina de tratamento dessa interrupção será acionada. A interrupção de timer é muito útil quando desejamos medir intervalos de tempo de forma precisa. Por exemplo, considerando um clock interno de 1 MHz, obteremos um ciclo de máquina de 1 µs. Carregando o timer 0 com o valor 250, após 5 ciclos de máquina (5 µs) teremos a ocorrência da interrupção de timer, a qual poderá ser utilizada paraincrementar um contador que contará de forma precisa, de 5 µs em 5 µs. ✓ Externa: Permite a detecção exata do instante em que os eventos externos acontecem, tais como: quando algum objeto passou em frente a um sensor de presença, quando um eixo que gira completou uma volta, quando a tensão da rede passou por zero etc. Essa interrupção pode ser disparada pela borda de subida ou pela borda de descida do sinal. Tal seleção é feita no registrador. Antes de sair da rotina de interrupção, essa flag deverá ser colocado em zero. ARA0108 - MICROPROCESSADORES Prof. Ms. Pedro Gabriel Calíope Dantas Pinheiro 7. PROJETOS COM MICROCONTROLADORES 7.1 ESCOLHA DAS PLATAFORMAS 7.2 DEFINIÇÃO DE LIMITAÇÕES PARA PROJETOS DE ALTO DESEMPENHO 7.3 COMANDOS BÁSICOS DA PROGRAMAÇÃO UTILIZANDO ARDUINO pinMode (pino, CONFIG): Este comando serve para configurar o pino digital a ser utilizado. Como parâmetros, deve-se colocar qual pino estamos tratando e sua respectiva configuração (INPUT para entrada de dados e OUTPUT para saída). Caso não utilize este comando para os pinos do Arduino utilizados, o sketch não saberá se trata de uma porta de entrada ou saída de dados. Ex: Para configurar o pino 3 como Saída, utilizamos o comando: pinMode (3, OUTPUT); Ex: Para configurar o pino 3 como Entrada, utilizamos o comando: pinMode (3, INPUT); digitalWrite (pino, ESTADO): Este comando serve para enviar um estado lógico para um determinado pino. Como parâmetros, deve-se colocar qual pino estamos tratando e qual o seu estado lógico (LOW para 0V e HIGH para 5V). Para uso deste comando, anteriormente o pino deve ter sido configurado como saída através de pinMode. Ex: Enviar sinal de 5V para o LED no pino 3, utilizamos o comando: digitalWrite (3, HIGH); Ex: Enviar sinal de 0V para o LED no pino 3, utilizamos o comando: digitalWrite (3, LOW); digitalRead (pino): Este comando serve para receber um sinal lógico de um determinado pino. Seu único parâmetro é indicar qual pino deve ser lido. O sinal lido pode ser LOW (0V) ou HIGH (5V). Mesmo que o sinal esteja entre estes dois valores (0 e 5V), o pino do Arduino vai associar com o valor mais próximo. É desejável que o sinal lido seja armazenado em uma variável para verificação de condições dentre outros. Para uso deste comando, anteriormente o pino deve ter sido configurado como entrada através de pinMode. Ex: Para leitura de um sensor de presença no Pino 8, utilizamos o comando: digitalRead (8); analogRead (pino): Este comando serve para receber um sinal analógico de um determinado pino. Diferente de um pino digital, o analógico identifica a variação entre 0V e 5V, considerando 1024 possibilidades de valores. Para uso deste comando, é necessário verificar se os pinos possuem indicação A (A0 até A5). Não é necessário utilizar o comando pinMode para configuração. Da mesma forma que digitalRead, é desejável associar o valor de leitura a uma variável. Ex: Para leitura de um potenciômetro no Pino A2, utilizamos o comando: analogRead (A2); ARA0108 - MICROPROCESSADORES Prof. Ms. Pedro Gabriel Calíope Dantas Pinheiro analogWrite (pino, valor): Este comando serve para enviar um sinal PWM (pulsação por largura de pulso) a um determinado pino. A maioria dos Arduinos não possui saída analógica, mas possuem pinos de PWM para “simular” este tipo de saída. Trata-se de uma onda quadrada que oscila, mantendo-se em nível alto dado um período. Esta média da onda faz com que haja uma saída com variação entre 0 e 5V, com 256 possibilidades de valores. Para uso deste comando, é necessário verificar se os pinos possuem indicação ~ (no Arduino Uno são 3, 5, 6, 9, 10 e 11). Não é necessário utilizar o comando pinMode para configuração. Ex: Para definir a velocidade de um motor DC no pino 9 com metade de sua capacidade (0V desligado e 5V capacidade máxima), utilizamos o comando: analogWrite (9, 127); delay (tempo): Este comando serve para definir intervalos de tempo entre comandos. A velocidade de execução de um comando no Arduino é muito rápida, na casa dos microssegundos até nanossegundos. Para “vermos” alguns comandos no mundo físico, precisamos de intervalos maiores. O delay utiliza intervalos em milissegundos, mais visíveis aos nossos olhos. Ex: para um intervalo de um segundo, utilizamos o comando: delay(1000); Declarar Variável ou Pino: Deve ser realizado antes do Void Setup; 7.4 DEFINIÇÃO DOS MICROCONTROLADORES PARA COMUNICAÇÃO WIRELESS E INTERNET DAS COISAS (IOT) ARA0108 - MICROPROCESSADORES Prof. Ms. Pedro Gabriel Calíope Dantas Pinheiro 8. Referências ✓ PEREIRA, Fábio. Microcontroladores PIC18 Detalhado: Hardware e Software.. 1ª Ed.. São Paulo: Érica, 2010. Disponível em: https://integrada.minhabiblioteca.com.br/#/books/9788536519890/ ✓ PEREIRA, Fábio. Microcontroladores PIC Programação em C.. 7ª Ed.. São Paulo: Érica, 2007. Disponível em: https://integrada.minhabiblioteca.com.br/#/books/9788536519937/ ✓ ZANCO, Wagner da Silva. Microcontroladores PIC18 com linguagem C: Uma Abordagem Prática e Objetiva Com Base no PIC18F4520. 1ª Ed.. São Paulo: Érica, 2010. Disponível em: https://integrada.minhabiblioteca.com.br/#/books/9788536519982/ ✓ BAER, Jean-loup. Arquitetura de Microprocessadores: do simples pipeline ao multiprocessador em chip.. 1ª Ed.. Rio de Janeiro: LTC, 2013. Disponível em: https://integrada.minhabiblioteca.com.br/#/books/978-85-216-2677-0/ ✓ LENZ, Maikon Lucian; TORRES, Fernando Esquírio. MICROPROCESSADORES. 1ª Ed. Porto Alegre: SAGAH, 2019. Disponível em: https://integrada.minhabiblioteca.com.br/#/books/9788595029736/ ✓ SOUSA, Daniel Rodrigues de; SOUZA, David José de. Desbravando o Microcontrolador PIC18: Ensino didático.. 1ª Ed.. São Paulo: Érica, 2012. Disponível em: https://integrada.minhabiblioteca.com.br/#/books/9788536518329/ ✓ SOUSA, Daniel Rodrigues de; SOUZA, David José de. Desbravando o Microcontrolador PIC24: Conheça os Microcontroladores de 16 Bits.. 1ª Ed.. São Paulo: Érica, 2008. Disponível em: https://integrada.minhabiblioteca.com.br/#/books/9788536518336/ SOUZA, David José de. PIC Ampliado e Atualizado para PIC16F628A.. 12ª Ed.. São Paulo: Érica, 2008. Disponível em: https://integrada.minhabiblioteca.com.br/#/books/9788536518312/ https://integrada.minhabiblioteca.com.br/#/books/9788536519890/ https://integrada.minhabiblioteca.com.br/#/books/9788536519937/ https://integrada.minhabiblioteca.com.br/#/books/9788536519982/ https://integrada.minhabiblioteca.com.br/#/books/9788521626770/ https://integrada.minhabiblioteca.com.br/#/books/9788595029736/ https://integrada.minhabiblioteca.com.br/#/books/9788536518329/ https://integrada.minhabiblioteca.com.br/#/books/9788536518336/ https://integrada.minhabiblioteca.com.br/#/books/9788536518312/
Compartilhar