51
Engenharia da Computação Prof. Dr. Geovani Rodrigo Scolaro [email protected] Microcontroladores e DSP

Aula 01(Introdução Aos Microcontroladores)

Embed Size (px)

DESCRIPTION

Microcontroladores

Citation preview

Engenharia da Computação

Prof. Dr. Geovani Rodrigo [email protected]

Microcontroladores e DSP

Microcontroladores

Introdução

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 x Microprocessadores

Estrutura física de um microcontrolador

Microcontroladores

Microcontroladores x Microprocessadores

Estrutura física de um microcontrolador

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

Microcontroladores

Microcontroladores

Arquiteturas RISC e CISC

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.

Estrutura Básica de Funcionamento

Microcontroladores

Microcontrolador PIC16F877A

Microcontrolador PIC16F877A

Microcontroladores

Pinagem

Microcontrolador PIC16F877A

Microcontroladores

Estrutura Interna

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

Interrupções

Microcontrolador PIC16F877A

Microcontroladores

Microcontrolador PIC16F877A

Microcontroladores

Mapa de Registradores

Microcontrolador PIC16F877A

Microcontroladores

Registradores

Um registrador memoriza o estado de um byte.

Microcontroladores x Microprocessadores

Estrutura física de um microcontrolador

Microcontroladores

Microcontroladores x Microprocessadores

Estrutura física de um microcontrolador

Microcontroladores

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.

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

Estrutura interna da PORTA do PIC.

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

Estrutura interna da PORTB do PIC.

Microcontrolador PIC16F877A

Microcontroladores

Estrutura interna da PORTB do PIC.

Microcontrolador PIC16F877A

Microcontroladores

Estrutura interna da PORTB do PIC.

Microcontrolador PIC16F877A

Microcontroladores

Oscilador (Clock)

Microcontrolador PIC16F877A

Microcontroladores

Oscilador (Clock)

Microcontrolador PIC16F877A

Microcontroladores

Oscilador (Clock)

Microcontrolador PIC16F877A

Microcontroladores

Conexões mínimas necessárias para o funcionamento

Microcontrolador PIC16F877A

Microcontroladores

Conexões mínimas necessárias para o funcionamento

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);

}}