Buscar

01.Introdução microcontroladores

Prévia do material em texto

Introdução - Microprocessadores e Microcontroladores 
 A diferença entre o microprocessador e o microcontrolador, 
basicamente se deve ao poder de processamento do primeiro ser muito 
maior e de geralmente ser implementado para propósito geral, enquanto 
o segundo tem poder de processamento mais limitado e é geralmente 
implementado para um propósito dedicado em um sistema. Apesar de 
terem a capacidadde de processamento menor, os microcontroladores 
têm maior independência em relação a microprocessadores no que se 
refere à necessidade de periféricos para funcionar. Isto porque 
microcontroladores já possem periféricos embutidos: memória tanto para 
armazenar as instruções do programa quanto os dados, podendo também 
possuir timers internos, conversores analógico-digitais, módulos de 
comunicação serial, USB, I2C, etc. 
 Ou seja, enquanto na fabricação de um microprocessador a 
inexistência de periféricos embutidos é compensada pelo maior poder de 
processamento ( decorrente de uma enorme complexidade interna ) no 
caso de um microcontrolador o menor poder de processamento ( 
decorrente de uma menor complexidade ) é compensado pela presença 
de periféricos embutidos na pastilha e por um custo muito menor. 
 A maior complexidade interna do microprocessador faz com que 
seu custo seja muito mais elevado que o de um microcontrolador. Além 
de este possuir periféricos que realizam a interface com os atuadores dos 
dispositivos já embutidos em sua pastilha. 
 Portanto para aplicações que requerem um poder de 
processamento menor compensa mais utilizar um microcontrolador, já 
que este possui periféricos e apresenta um custo mais baixo. Utilizar 
um microprocessador numa aplicação relativamente simples como 
controlar a velocidade de um motor, ou um simples sistema de 
temporização de uma máquina seria pagar um alto preço para utilizar 
apenas parte de seu poder computacional; além de se fazer necessário o 
uso de componentes adicionais para interfacear a atuação e o 
sensoreamento. 
 Se é melhor fazer uso de um microprocessador ou de um 
microcontrolador, é uma escolha que depende então da aplicação: Para 
um projeto cujo objetivo é um controle de um ou mais dispositivos, sendo 
que não é exigida uma quantidade monumental de cálculos complexos 
computados numa velocidade crítica, então o uso de um microcontrolador 
naturalmente será a escolha mais adequada. Já para um sistema 
computacional de propósito geral, em que se pode exigir tanto a execução 
de um simples editor de texto quanto cálculos complexos de ponto-
flutuante em tempo crítico como em um jogo 3-D é natural que o uso de 
microprocessadores será necessário. 
 Assim, poderíamos concluir que o uso de microcontroladores se 
faz necessário em aplicações dedicadas, i.e. de propósito específico para a 
aplicação em questão, e que requerem baixo poder de processamento. 
Um microprocessador, por outro lado, tende a ser utilizado em aplicações 
de propósito geral para poder suportar tanto aplicações de processamento 
mais "leve" quanto mais "pesadas" ( como é o caso de computadores ); 
apesar de também poder ser utilizado em aplicações de propósito 
específico. Como exemplo de um microprocessador sendo utilizado num 
dispositivo dedicado podemos imaginar um sistema de aquisição e 
processamento de imagens: uma câmera digital acionada 
automaticamente por um radar de trânsito que deve fotografar o 
veículo e, a partir da imagem armazenada, executar um software 
que identifica a placa. A alta demanda de cálculos computacionais 
realizados justifica o uso de um processador mais complexo, e portanto, 
mais caro. 
 
 Um Breve Histórico 
 
 Os microcontroladores surgiram dez anos após os primeiros 
microprocessadores ( o 4004 foi o primeiro microprocessador, e foi 
lançado em 1971 ), tendo sido uma adaptação da indústria eletrônica 
digital para atender as necessidades do mercado. Os microprocessadores 
não possuíam requisitos básicos para a operação do sistema: os 
periféricos. Por exemplo, para controlar um elevador era necessário um 
microprocessador, um chip de memória ROM para armazenar o programa, 
um outro chip de memória RAM para armazenar os dados processados e 
um outro chip para realizar a interface de comunicação que poderia ser 
um protocolo serial. 
 Os primeiros microcontroladores amplamente disseminados, 
foram os da família 8051. Muito utilizados nos anos 1980 e 1990. É um 
microcontrolador CISC ( Complex Instruction Set Computer - Conjunto 
Complexo de Instruções ), e arquitetura Von Neumann. Com memória 
RAM interna, 5 fontes de interrupção vetoradas. 
 Já os microcontroladores da família PIC, que são o foco dessa 
disciplina, passaram a ser mais utilizados nos anos 2000. Possuem 
tecnologia RISC ( Reduced Instruction Set Computer - Conjunto Reduzido 
de Instruções ), Pipeline e arquitetura Harvard. O primeiro PIC a ficar 
amplamente conhecido no Brasil foi o PIC16F84, que possuía apenas um 
vetor de interrupção ( como todos os microcontroladores da família PIC16 
), no endereço 0x004 da memória de programa. Os microcontroladores 
da família PIC18 possuem dois vetores de interrupção. De alta e baixa 
prioridade. Localizados respectivamente nos endereços 0x008 e 0x018. 
 
 
 
Diferenças entre Aplicações envolvendo Microprocessadores e 
Microcontroladores 
 Naturalmente é muito mais conveniente possuir todos esses 
elementos num único circuito integrado: um microcontrolador; que possui 
todas as características de um "computador de um único chip" já que 
possui memória para armazenar dados e programas além de periféricos 
para comunicação, podendo até possuir uma interface analógica. 
 Apesar de os microcontroladores possuírem mais recursos do que 
os microprocessadores ( memória RAM, memória não volátil, periféricos ), 
eles possuem um custo bem mais baixo. Porque os microcontroladores 
são utilizados em sistemas embarcados como um chip dedicado para um 
propósito específico; portanto o poder computacional é mais baixo: 
apenas o suficiente para a função desejada. Os microprocessadores, por 
outro lado, servem para propósitos gerais ou que requerem um poder 
computacional mais alto. O chip que fornece a temporização para um 
forno microondas, por exemplo, possui baixo poder computacional, baixo 
custo e propósito específico. Já o chip do microprocessador do seu 
computador possui propósito geral, rodando programas com baixa ou alta 
demanda computacional ( como jogos ou aplicativos gráficos ). 
 Todo microprocessador possui uma memória interna na forma de 
registradores, mas os microcontroladores também poder possuir memória 
para programa e dados. Ambos possuem uma Unidade Lógica e 
Aritmética ( ULA ), responsável pela implementação das operações e uma 
unidade de controle responsável pela decodificação e execução das 
instruções 
 Microcontroladores em geral possuem poder de processamento 
muito mais baixo que microprocessadores. Enquanto esses trabalham 
com frequências de clock da ordem dos GigaHertz, microcontroladores 
trabalham com frequências da ordem dos Megahertz ou até mesmo dos 
kilohertz. Não faz sentido utilizar um microprocessador de última geração 
com clock de 4 GHz, e memória cache, se deseja-se controlar o 
acionamento de um portão eletrônico, por exemplo. O objetivo em 
sistemas embarcados, é projetar um sistema de custo mínimo ( em 
termos materiais e de energia ) para atender aos requisitos de uma tarefa 
desejada. 
 Existem sistemas embarcados onde microprocessadores se 
fazem necessários, como por exemplo, os telefones celulares. Entretanto, 
os microprocessadores utilizados em tais aparelhos possuem baixo poder 
computacional e baixo consumo de energia.Tais microprocessadores 
geralmente possuem arquitetura ARM ( Advanced RISC Machine ). 
 
Microprocessadores 
 Também conhecido como UCP ( Unidade Central de Processamento ) ou CPU ( Central 
Process Unit ) na sigla em inglês, processador é o cérebro do computador. Sua função é 
executar os programas armazenados na memória principal, buscando cada uma das 
instruções, examinando-as e executando-as uma após a outra. É constituído de diversas 
partes: a unidade de controle é responsável por buscar as instruções na memória principal e 
por determinar o tipo de cada instrução, isto é, decodificar as instruções. A unidade de lógica 
aritmética ( ULA ) realiza um conjunto de operações necessárias à execução das 
instruções. O processador possui uma pequena memória de alta velocidade,composta 
pelos registradores da CPU, utilizada para armazenar resultados temporários e informações 
de controle. Essa memória é formada por um conjunto de registradores, cada qual com 
determinado tamanho e função. O registrador mais importante é o Program Counter, ( PC ) 
cujo valor aponta para a próxima instrução a ser buscada na memória para ser executada. 
Outros registradores importantes são o Registrador de Instruções ( IR - Instruction Register ) 
que armazena a instrução que está sendo executada, o Registrador de Status, que armazena 
os bits ( flags ) referentes ao resultado da última operação executada ( se o resultado foi zero 
ou negativo, por exemplo ), e o Acumulador, utilizado pelos programas para armazenar os 
resultados das operações processadas. 
 
 
 
 
 
 
 
Figura 1- Estrutura de um Processador 
 
 Quando diz-se que um processador é de 8, 16, 32 ou 64 bits, por exemplo, geralmente é 
uma referência ao número de bits armazenados nos registradores da CPU. Uma CPU de 64 
bits, por exemplo, possui um registrador acumulador de 64 bits, conectado a um barramento 
também de 64 bits, sendo capaz de manipular dados com esse número de bits durante uma 
única operação. 
 
 Para ser executada pelo processador, uma instrução precisa ser dividida em uma série 
de passos, denominada ciclo da busca-decodificação-execução, a saber: 
 
 
- busca da próxima instrução na memória e armazenamento no registrador de 
instruções, 
 Programas de computador são constituídos por uma sequência de instruções que 
se encontram armazenados na memória do computador. Portanto, o processador 
deve ser capaz de mover ( buscar ) instrução por instrução antes de executá-las. 
Cada instrução buscada é armazenada no registrador de instruções ( Instruction 
Register - IR ) para ser decodificada, isto é, para o processador gerar os sinais de 
controle que implementam a execução da operação da forma correta. 
 
 
- atualização do valor do program counter, de modo a apontar para a instrução 
seguinte,para ser capaz de buscar instruções, o processador deve ser capaz de 
conhecer a localização das instruções, ou seja, do endereço de cada instrução na 
memória. O endereço da próxima instrução a ser buscada é armazenado em um 
registrador especial chamado PC ( Program Counter ou Contador de Programa ). 
Esse registrador é na realidade um ponteiro, pois contém o endereço da próxima 
instrução a ser buscada na memória. 
 
 
- determinação do tipo de instrução que está armazenada no registrador de 
instruções,conforme vimos, as instruções devem estar armazenadas no registrador 
de instruções ( IR ), para serem decodificadas. 
 Na verdade, cada instrução é composta por dois campos de bits: o Opcode ( ou 
código da operação ) e o campo dos operandos. O primeiro contém o código binário 
que representa qual operação a instrução executa ( por exemplo, uma operação 
aritmética, lógica, de controle ou movimento de dados ). O segundo, representa a 
informação de entrada que será tratada. 
- Portanto, o Opcode é decodificado por um decodificador da Unidade de Controle 
do processador para que a instrução correta seja executada. 
 
 
- se a instrução precisar de uma palavra armazenada na memória, nesse passo 
deve ser determinado onde essa palavra está armazenada,O operando pode 
representar tanto o dado a ser tratado ( número ou caractere no formato binário ), 
quanto um endereço de memória onde o dado a ser tratado se encontra. No 
segundo caso, faz-se necessária uma segunda busca à memória. 
 A diferença sobre a natureza do operando, encontra-se codificada no opcode da 
instrução. 
 
- busca da palavra, se necessário, e armazenamento em um dos registradores se o 
operando é um endereço, o dado é buscado para ser armazenado em um 
registrador da CPU. 
 
- execução da instrução,com todos os dados armazenados em registradores da 
CPU e o opcode da instrução já decodificado, a instrução está no ponto de 
 ser executada, pois todas as informações necessárias tornara-se disponíveis ou já 
foram interpretadas pelo processador. Desse modo, a Unidade de Controle da CPU 
já pode coordenar os circuitos digitais da Unidade Lógica e Aritmética ( ULA ) para 
os dados serem processados pelos circuitos selecionados e os resultados serem 
obtidos. 
 
- armazenamento do resultado,os resultados obtidos, são os dados de saída da 
instrução executada. Resultados de operações aritméticas e lógicas tendem a ser 
armazenados em registradores da CPU ( geralmente no registrador acumulador ). 
 Se deseja-se que tais dados resultantes sejam armazenados na memória principal, 
faz-se necessária a execução de outra instrução para movimentar o dado de um 
registrador da CPU para a memória. 
 
 
 
- retorno ao primeiro passo para iniciar a execução da próxima instrução. 
 Durante a execução, o PC é incrementado ( isto é, seu valor aumenta ), de tal 
modo que ele aponta para a próxima instrução do programa. Geralmente a próxima 
instrução localiza-se no endereço seguinte ao da instrução anterior. Entretanto, no 
caso de nstruções de desvio, como saltos ( JUMPs, GOTOs ) 
condicionais e incondicionais chamadas a sub-rotinas ( CALL ) ou retorno de 
sub-rotina ( RETURN ), o endereço da instrução seguinte não é o seguinte ao da 
última instrução executada. Essas instruções alteram o valor do registrador PC, de 
modo que os programas não precisam seguir uma sequência rígida de 
processamento, mas podem realizar decisões condicionadas aos dados de entrada.

Continue navegando