Upload
tadeu-ficagna
View
14
Download
2
Embed Size (px)
DESCRIPTION
Microcontroladores
Citation preview
Microcontroladores x Microprocessadores
Microcontroladores
Introdução
Microprocessadores x Microcontroladores
Microprocessador
Microcontrolador
Microcontroladores x Microprocessadores
Os microprocessadores possuem:
Largura de barramento de endereços elevada;
Desde meados da década de 1980 a 1990 que essa largura de barramento de
endereços se estabilizou em 32 bits, chegando à 64 bits hoje.
Unidade de gerenciamento de memória integrada ou on-chip;
Tratamento de dados com representação binária de 8, 16, 32, 64 e até mesmo
de 80 bits;
Unidade de cálculo de matemática em ponto flutuante on-chip com suporte a
operações numéricas bastante complexas com números reais.
Apresentam alto custo e alto consumo de energia.
Microcontroladores
Microcontroladores x Microprocessadores
Os microcontroladores apresentam:
Memória e unidades periféricas on-chip.
Barramento de endereços com poucos bits, só permitindo o gerenciamento de
pequena quantidade de memória. Algumas larguras típicas variam de 10 a 14 bits e,
nesses casos, limitando seu acesso à memória variando de 1 Kbyte a 8 Kbytes.
Tratamento de dados restrito aos inteiros com representação binária de 8 bits.
Atualmente, algumas famílias permitem o tratamento de inteiros de 8 e de 16 bits.
Ausência de unidades aritméticas de ponto flutuante.
Em contrapartida, são de baixo custo, apresentam baixo consumo.
Microcontroladores
Microcontroladores
Microcontroladores
Arquiteturas
Pela escolha do modelo que será usado para acesso a dados e programas, podemos ter
computadores com arquitetura projetada segundo o modelo proposto pelo Instituto de
Estudos Avançados de Princeton (atribuído a Von Neumann) - Máquina de Von Neumann
ou computadores projetados com a arquitetura segundo o modelo proposto pela
universidade de Harvard – Máquina de Harvard.
Todos os microcontroladores modernos utilizam uma dessas duas arquiteturas:
Harvard
Von-Neumann*
*John Von Neumann foi um matemático húngaro, um dos construtores do ENIAC.
Microcontroladores
Microcontroladores
Arquiteturas
Utilização de dois espaços separados
para as instruções de programa e de
dados.
Largura de banda melhorada.
Permite utilização de tamanhos
diferentes de barramento.
Utilização de um único espaço para
memória de programa e de dados.
Limitação na largura de banda para
a troca de informações.
Microcontroladores
Microcontroladores
Arquiteturas RISC e CISC
RISC (Reduced Instruction Set Computer)
Neste caso, o microcontrolador reconhece e executa somente operações básicas
(adição, subtração, etc). Outras operações mais complexas são realizadas através da
combinação das mesmas. Por exemplo, a multiplicação é realizada através da realização de
sucessivas somas.
Ex: PIC, ATMEGA328, Microcontroladores ARM.
CISC (Complex Instruction Set Computer)
Microcontroladores destinados a reconhecer mais de 200 diferentes instruções,
podendo realizar muitas tarefas em alta velocidade.
Ex: Motorola 68HC11.
Microcontroladores
Microcontroladores
Arquiteturas RISC e CISC
SISC (Specific Instruction Set Computer)
Computador com um conjunto específico de instruções. Esta arquitetura difere das
anteriores por apresentar um conjunto de instruções especialmente fabricadas para um
conjunto muito restrito de aplicações, normalmente de dicadas à implementação de
tarefas específicas.
Ex: Aviônica, Equipamentos Médicos, etc.
Microcontroladores
Microcontroladores
Microcontrolador Genérico
A escolha de um microcontrolador
depende das características econômicas e
complexidade do projeto
Existem desde microcontroladores de 4
bits com funções limitadas até modernos
de 32 bits e clocks elevados.
Microcontroladores
Microcontroladores
Microcontrolador Genérico
CPU, Memórias e Dispositivos de I/O
A CPU executa os programas controlando o
sistema, sendo composta por três
módulos:
ALU: Realiza operações aritméticas e
lógicas.
Registradores: Armazenam dados
temporários. Nos microcontroladores esses
são divididos em registradores de uso geral
e específico.
Unidade de Controle: Decodifica a
instrução e envia sinais de controle.
Microcontroladores
Microcontroladores
Microcontrolador Genérico
Barramentos de Dados, Endereço e Controle
A CPU se comunica com os dispositivos de
I/O ou as memórias via comunicação
paralela.
A CPU só se comunica através de duas
operações: leitura e escrita.
Esse duto de comunicação é chamado
barramento.
Microcontroladores
Microcontroladores
Microcontrolador Genérico
Barramentos de Dados, Endereço e Controle
Existem três tipos de barramento:
endereço, controle e dados.
Barramento de Endereços: É uma via
apenas de saída. É usado para endereçar o
dispositivo (memórias, I/O) para realizar
uma operação.
Barramento de Dados: É uma via
bidirecional por onde trafegam os dados.
Barramento de Controle: Determina se a
operação é leitura ou escrita.
Microcontroladores x Microprocessadores
Microcontrolador Genérico
Memória de Programa
A memória de programa é onde fica armazenado o firmware do sistema
embarcado, geralmente uma memória FLASH (programável e apagável) não-volátil, que
fornece ao programador a possibilidade de gravar muitas vezes o seu software embarcado.
Memória de Dados
Compreende a parte onde serão alocados os registros, as variáveis e todos os
espaços reservados para o processamento temporário, semelhante à memória RAM de um
PC.
Microcontroladores e Microprocessadores
Microcontroladores x Microprocessadores
Microcontrolador Genérico
Memória de Armazenamento
Memória não-volátil presente no próprio microcontrolador ou pode ser acoplada
externamente a ele, para o armazenamento de dados de forma segura. Ex: Memórias
EEPROM (Eletrically Programmable Read Only Memory).
Registradores
São pequenas unidades de memória para alocação temporária de dados.
Trabalhan diretamente com o processador, armazenando resultados de suas operações
lógicas e aritméticas.
Microcontroladores e Microprocessadores
Microcontroladores x Microprocessadores
Microcontrolador Genérico
Clock
O clock fornece a sensibilidade de tempo para o processador, ou seja, ele fornece
um sinal em forma de onda quadrada, sendo chamado de oscilador. A cada nível alto, no
mínimo uma instrução é executada. Um ciclo de clock consiste na diferença de tempo
entre dois níveis altos dessa onda.
Contador de Instrução
Registrador encarregado de armazenar o endereço da próxima instrução a ser
executada. Microcontroladores e Microprocessadores
Microcontrolador PIC16F877A
Microcontroladores
Microcontrolador PIC16F877A
O nome original deste microcontrolador é PIC (Peripheral Controller Interface), mas é
mais conhecido como PIC. Seu ancestral, o chamado PIC1650, foi projetado em 1975 pelo
General Instruments.
Microcontrolador PIC16F877A
Microcontroladores
Ciclo de Máquina
Também chamado de ciclo de busca e execução. A instrução é buscada, decodificada,
executada e armazenada.
Ex: Oscilador de 4 MHz irá gerar um clock interno de 1 MHz e ciclo de máquina de 1us.
Microcontrolador PIC16F877A
Microcontroladores
Pipeline
No caso dos microcontroladores PIC pode-se visualizar a execução das instruções como
sendo dividida em dois estágios: busca (fetch) e execução (execute), onde cada estágio
gasta 4 ciclos de clock.
Microcontrolador PIC16F877A
Microcontroladores
Pipeline
Pipeline é uma técnica utilizada pelos processadores mais modernos e consiste em
dividir a execução das instruções em partes e cada uma destas partes pode ser executada
em paralelo em um formato semelhante a uma linha de montagem de carros.
Microcontrolador PIC16F877A
Microcontroladores
Registradores
Um registrador memoriza o estado de um byte.
Microcontrolador PIC16F877A
Microcontroladores
Registradores de Funções Especiais (SFR)
Registradores que possuem funções especiais determinadas pelo fabricante. Esses bits
são conectados literalmente a circuitos internos do microcontrolador, como timers,
conversor A/D, osciladores, etc.
Microcontrolador PIC16F877A
Microcontroladores
Registradores PORT (Portas de Entrada e Saída)
Registradores conectados aos pinos de I/O do microcontrolador. Fornecem corrente
entre 10 e 20 mA, suficiente para ativar um LED. Necessitam de configurações especiais em
registradores SFR.
Microcontrolador PIC16F877A
Microcontroladores
Registradores PORT (Portas de Entrada e Saída)
O PIC possui portas de I/O chamadas de PORTs. Possui também um registrador
chamado TRIS, responsável por configurar os pinos como entradas (bit=1) e saídas (bit=0).
Registrador que determina quando um pino vai ser de
entrada ou de saída.
Inicializa o estado da porta ou dos pinos individuais no momento que o microcontrolador iniciar.
Microcontrolador PIC16F877A
Microcontroladores
Estrutura interna da PORTA do PIC.Descrição da pinagem do
PIC16F877A Cada pino pode assumir mais do
que uma função.
Ex: pino 2 RA0/AN0
- Entrada/Saída Digital RA0: podem ser
conectados LEDS ou botões.
- Entrada Analógica AN0: podem ser
ligados sensores que enviam tensões
referentes à medição de uma grandeza
física.
Microcontrolador PIC16F877A
Microcontroladores
Conversor Analógico/Digital (ou conversor A/D)
Circuito responsável por converter sinais contínuos em valores discretos digitais. Em
outras palavras, este circuito converte uma grandeza física analógica em um número
binário equivalente, permitindo com que o microcontrolador consiga interpretar esse tipo
de informação.
Microcontrolador PIC16F877A
Microcontroladores
Firmware
Programa que se grava no microcontrolador. É desenvolvido para realizar tarefas de
controle de periféricos e processamento de dados obtidos ou produzidos. Normalmente
codificado em Assembly ou C.
Microcontrolador PIC16F877A
Microcontroladores
Firmware
Após a codificação é gerado um arquivo com extensão .HEX, que será gravado dentro
da memória de programa do microcontrolador.
Microcontrolador PIC16F877A
Microcontroladores
Exemplo para verificar o funcionamento:
#include "xc.h"
#define _XTAL_FREQ 4000000 #pragma config FOSC = XT, WDTE = OFF, PWRTE = OFF, BOREN = OFF, LVP = OFF#pragma config CPD = OFF, WRT = OFF, CP = OFF int main(){
TRISB = 0x00; // Inicialização do PORTA como saídas.PORTB = 0x00; //PORTB inicializa com os pinos em nível baixo.
while(1) {
PORTBbits.RB0 = 1; //Acesso a um bit da porta.__delay_ms(500);
PORTBbits.RB0 = 0; //Acesso a um bit da porta.__delay_ms(500);
}}