Módulo 1

Transcrição

Módulo 1
Microcontroladores
Módulo 1
1
Microcontroladores
Motivação
Desenvolvimento de Sistemas Eletrônicos
Microprocessados – Embbeded Systems;
Mercado de microcontroladores em expansão –
Novos chips e famílias;
Estima-se que, em poucos anos, em média uma
pessoa
interagirá
com
300
dispositivos
microcontroladores diariamente;
Aplicação em diversas áreas: Automação,
Controle e Instrumentação de Processos, etc.
Fabricantes de Microcontroladores
INTEL (80C51) - www.intel.com/design/MCS51/
MOTOROLA - www.mot-sps.com
MICROCHIP (PIC) - www.microchip.com
TEXAS INSTRUMENTS - www.ti.com
MITSUBISHI - www.mitsubishichips.com
ATMEL - www.atmel.com
PHILIPS - www.philips.com
NATIONAL - www.national.com
Introdução
Um microcontolador é um sistema computacional completo, no qual
estão incluídos uma CPU (Central Processor Unit), memória, um
sistema de clock, sinais de I/O (Input/Output), além de outros possíveis
periféricos, tais como, módulos de temporização e conversores A/D
entre outros, integrados em um mesmo componente (chip). As partes
mais integrantes de qualquer computador, e que também estão
presentes, em menor escala, nos microcontroladores são:
Unidade Central de Processamento (CPU);
Sistema de Clock para dar seqüência às atividades da CPU;
Memória para armazenamento de instruções e manipulação de
dados;
Entradas para interiorizar na CPU informações do mundo externo;
Saídas para exteriorizar as informações processadas pela CPU para
o mundo externo;
Programa (Software) para que o sistema faça alguma coisa útil.
Arquiteturas de Microcontroladores
A arquitetura de um sistema digital define quem são e como as partes que
compõe o sistema estão interligadas. As duas arquiteturas mais comuns
para sistemas computacionais digitais são as seguintes:
Arquitetura de Von Neuman : A Unidade Central de Processamento é
interligada à memória por um único barramento (bus). O sistema é
composto por uma única memória onde são armazenados dados e
instruções;
Arquitetura de Harvard: A Unidade Central de Processamento é
interligada a memória de dados e a memória de programa por barramento
específico.
O PIC possui arquitetura Harvard. A memória de dados é do tipo RAM
(volátil) e , no caso do 16F84, a memória de programa é do tipo Flash
(letra F no código). O barramento de dados é de 8 bits e o de instruções é
composto de 14 bits.
Este tipo de arquitetura permite que, enquanto uma instrução é executada,
outra seja “buscada” da memória, o que torna o processamento mais
rápido.
FILOSOFIA RISC
Como o barramento de instruções é maior do que 8 bits, o
OPCODE da instrução já inclui o dado e o local onde ela vai operar
(quando necessário), o que significa que apenas uma posição de
memória é utiizada por instrução, economizando assim muita
memória de programa. Dessa forma, podemos observar que dentro
da palavra do OPCODE, que pode ser de 12, 14 ou 16 bits, não
sobra muito espaço para o código da instrução propriamente dito.
Por isso, os PICs utilizam uma tecnologia chamada RISC, que
significa Reduced Instruction Set Computer (Computador com Set
de Instruções Reduzido).
PICs:
RISC
Cerca de 35 instruções
Aprendizado mais fácil e dinâmico
Desvantagem com a ausência de determinadas funções
(Ex: Funções de multiplicação e divisão devem ser implementadas)
Estruturação Interna do PIC16F84
ULA (Unidade Lógica Aritmética);
Registrador W (work = trabalho);
Memória de Programa (1K byte)– Bus de 14 bits;
Memória de Dados RAM (68 bytes)– Bus de 8 bits;
Portas: PORTA e B – Pinos de I/O;
EEPROM (Memória de Dados Não volátil);
Contador/Timer: TIMER0
Registrador STATUS;
Contador de Linha de Programa – PC (Program Counter);
Pilha de 8 Níveis – STACK;
Circuitos Internos: Reset, Watchdog Timer (WDT), Powerup e Brown-out.
Diagrama de Blocos do PIC 16F84
Unidade Lógica Aritmética (ULA)
Unidade Lógica Aritmética (ULA): é onde todas as operações lógicas
(funções lógicas booleanas: e ou, exclusivo e complemento) e
aritméticas (soma e subtração) são efetuadas. O registrador W sempre
estará envolvido de alguma forma em toda operação lógica ou
aritmética. Existem dois destinos possíveis para estas operações: o W
(work) ou um registrador (posição da memória de dados) definido no
argumento da instrução.
Timer: O PIC possuí internamente um recurso de hardware
denominado Timer0. Trata-se de um contador de 8bits incrementado
internamente pelo ciclo de máquina ou por um sinal externo (borda de
subida ou descida), sendo esta opção feita por software durante a
programação (SFR). Como o contador possui 8 bits ele pode assumir
256 valores distintos (0 até 255). Caso o ciclo de máquina seja de 1us,
cada incremento do Timer corresponderá a um intervalo de 1us. Caso
sejam necessário intervalos de tempos maiores para o mesmo Ciclo de
Máquina, utilizamos o recurso de PRE-SCALE.
Ciclos de Máquina
Nos microcontroladores PIC, o sinal de clock é
internamente dividido por quatro. Portanto, para um
clock externo de 4MHz, temos um clock interno de 1
MHz e, conseqüentemente, cada ciclo de máquina
dura 1µs;
A característica de buscar a informação em um ciclo
de máquina e executá-la no próximo é chamada de
PIPELINE. Ela permite que quase todas as instruções
sejam executadas em apenas um ciclo, gastando
assim 1 µs (para um clock de 4 MHz) e tornando o
sistema muito mais rápido. As únicas exeções
referem-se às instruções que geram “saltos” no
program counter, como chamadas de rotinas e
retornos.
Memória de Programa
A memória de programação é onde as instruções do programa são
armazenadas. No caso do 16F84 esta memória é de 1024 palavras
(words) (1Kb) de 14 bits cada uma. Parte destes 14 bits informam o
OPCODE (código da instrução) e o restante traz consigo o argumento
da instrução correspondente. Na familia PIC existem três tipos de
memória de programa: EPROM (O.T.P. – One Time Programable),
EEPROM (janelado) e FLASH.
Memória de Dados
A memória de dados é uma memória volátil do tipo RAM
(Random Access Memory).
O mapa de memória é divido em duas partes: Registadores
especiais (Special Function Register - SFR) e Registradores de
uso geral (General Purpose Register - GPR).
Mapas das Memórias
Memória de Programa
Memória de Dados
Interrupção
As Interrupções são causadas através de eventos assíncronos
(podem ocorrer a qualquer momento) que causam um desvio no
processamento.
Uma boa analogia para melhor entendermos o conceito de
interrupção é a seguinte: você está trabalhando digitando uma
carta no computador quando o seu ramal toca. Neste momento
você, interrompe o que está fazendo, para atender ao telefone e
verificar o que a pessoa do outro lado da linha está precisando.
Terminada a conversa, você coloca o telefone no gancho
novamente e retoma o seu trabalho do ponto onde havia parado.
Observe que não precisamos verificar a todo instante, se existe
ou não alguém na linha, pois quando o ramal é chamado, o
telefone toca avisando que existe alguém querendo falar com
você.
Interrupções no PIC 16F84
Interrupção de estouro do TIMER0;
Interrupção de fim de escrita na EEPROM;
Interrupção externa: Essa interrupção é gerada por
um sinal externo ligado a uma porta específica que
no caso é a porta RB0. Ela é utilizada para diversas
finalidades, como, por exemplo o reconhecimento de
um botão ou outro sinal do sistema que necessite de
uma ação imediata. Funciona somente na borda de
subida ou descida dependendo da configuração.
Interrupção por mudança de estado: Ocorre tanto
em borda de subida quanto em borda de descida.
Ligada às portas RB4, RB5, RB6 e RB7
simultaneamente.
O PIC16F84
Microcontrolador RISC de 18 pinos;
Memória de Programa FLASH (1K de 14 bits);
Memória de dados 68 bytes;
Memória EEPROM 64 bytes;
Freqüência de operação até 20MHz;
12 I/O (Entradas/Saídas) configuráveis:
PORT A: RA0 – RA4 (5 PINOS)
PORT B: RB0 – RB7 (8 PINOS)
4 Interrupções;
1 Timer (TIMER0);
Principais Características Elétricas
Temperatura de trabalho: -55°C até +125°C;
Tensão de Trabalho: 4.0Va 5.5V;
Dissipação máxima de potência: 800 mW;
Corrente máxima de saída de um pino: 25 mA.
Pinagem do PIC 16F84
Descrição dos Pinos do 16F84
Portas
TRIS: Esses registradores servem para configurar os pinos das
portas como entrada ou saída. Quando é colocado “1” em um bit
do TRIS, o pino relacionado a ele é configurado como entrada.
Para configurar o pino como saída, você deve escrever
“0” no bit relacionado. Uma maneira prática para memorizar
essa regra é associar “1” ao “I” de Input (entrada) e o “0” ao “O”
de Output (saída). Para configurar o PORTA, deve ser utilizado
o registrador TRISA, o PORTB o registrador TRISB.
PORTS: PORTA e PORTB.
Quando um pino dessas portas é configurado como entrada, ao
lermos o seu bit relacionado, encontramos diretamente o nível
lógico aplicado a esse pino. Da mesma maneira, ao
configurarmos um pino como saída, podemos alterar o seu
estado, escrevendo diretamente no bit relacionado.
Contador
Timer: O PIC possuí internamente um recurso de hardware
denominado Timer0. Trata-se de um contador de 8bits
incrementado internamente pelo ciclo de máquina ou por um
sinal externo (borda de subida ou descida), sendo esta opção
feita por software durante a programação (SFR). Como o
contador possui 8 bits ele pode assumir 256 valores distintos (0
até 255). Caso o ciclo de máquina seja de 1us, cada incremento
do Timer corresponderá a um intervalo de 1us. Caso sejam
necessário intervalos de tempos maiores para o mesmo Ciclo de
Máquina, utilizamos o recurso de PRE-SCALE.
PRE-SCALE: O Pre Scale é um divisor de frequência
programável do sinal que incrementa o Timer0. Quando temos
um pre scale de 1:1, cada ciclo de máquina corresponde a um
incremento do Timer0 (unidade de Timer0). Ao alterarmos o pre
scale para, por exemplo 1:4 (os valores possíveis são as
potencias de dois até 256), o Timer0 será incrementado uma vez
a cada quatro ciclos de máquina.
Circuitos Internos
WATCHDOG (WDT) é um recurso disponível no PIC que
parte do princípio que todo sistema é passível de falha. Se
todo sistema pode falhar, cabe ao mesmo ter recursos para
que, em ocorrendo uma falha, algo seja feito de modo a
tornar o sistema novamente operacional. Dentro do PIC
existe um contador incrementado por um sinal de relógio
(clock) independente. Toda vez que este contador extrapola o
seu valor máximo retornando a zero, é provocado a
reinicialização do sistema (reset).
Se o sistema estiver funcionado da maneira correta, de
tempos em tempos uma instrução denominada clear
watchdog timer (CLRWDT) zera o valor deste contador,
impedindo que o mesmo chegue ao valor máximo. Desta
maneira o Watchdog somente irá "estourar" quando algo de
errado ocorrer.
Circuitos Internos
POWER UP TIMER: é um temporizador que faz com que o PIC,
durante a energização (power up), aguarde alguns ciclos de
máquina (72 ms) para garantir que todo o sistema periférico
(display, teclado, memórias, etc) estejam operantes quando o
processamento estiver sendo executado.
BROWN OUT DETECT: O Brown Out monitora a diferença de
tensão entre VDD e VSS, provocando a reinicialização do PIC
(reset) quando esta cai para um valor inferior ao mínimo definido
em manual (4V tipíco por mais de 100µs).
CÓDIGO DE PROTEÇÃO: Para gravação em série é muito
importante que esta opção esteja ativada, pois impedirá que
qualquer pessoa consiga ler o programa gravado dentro do PIC.
Linguagens de Programação
Assembly (Baixo Nível):
- Maior Eficiência;
- Maior Velocidade de Execução;
- Alta Complexidade;
- Baixa Portabilidade.
Linguagem C (Alto Nível):
- Programação Estruturada (funções);
- Maior velocidade na criação de novos projetos;
- Maior Portabilidade;
- Eficiência Considerável.