Microcontroladores
1 – Microprocessadores x Microcontroladores
1.1 - Microprocessadores:
1.2 - Microcontroladores:
2 – Microcontrolador x DSP
3 – Fabricantes e Famílias
4 – Microchip
5 – Microcontrolador PIC 16F84
5.1 – Principais Características
5.2 – Descrição Geral
5.3 – Arquitetura
5.4 – Pinagem
5.5 – Memória
5.6 – Registradores
5.7 – Set de Instruções
5.8 – Projeto de Hardware simples para teste
5.9 – Exemplo de Programação
6 –Motorola/Freescale
7 – MC68HC908QT1
7.1 – Descrição Geral
7.2 – Diagrama em Blocos
7.3 – Pinagem
7.4 – Memória
7.5 – Registradores
7.6 – Set de Instruções
7.7 – Projeto de Hardware simples para teste
7.8 – Exemplo de Programação
2
1 - Microprocessadores x Microcontroladores
1.1 – Microprocessadores:
•
Exemplo
Z-80 – 8 bits
8086 – 16 bits
Pentium – 32 bits
•
Aplicação
Utilização como CPU em microcomputadores de
uso geral ou específicos.
1.1 – Microprocessadores:
•
Arquitetura Interna
Microcontroladores
Registradores
Uso
Geral
Uso
Específico
PC,SP,IR
ALU
Controle
4
1.1 – Microprocessadores:
•
Arquitetura Microcomputador
Microcontroladores
Mem
RAM
Mem
PROM
Circuitos de
Interface
Teclado
Vídeo
CPUB. dados
B. endereço
B. Controle
Microprocessador
1.1 – Microprocessadores:
6
1.1 – Microprocessadores:
1.1 – Microprocessadores:
8
1.1 – Microprocessadores:
1.2 – Microcontroladores
•
Exemplos
Microchip – PIC – 16F84/ 16F877
Motorola –
MC68HC908QT1
Intel –
8031 / 8051
•
Aplicação
Utilização como CPU em sistemas embutidos,
embarcados - sistemas dedicados.
10
1.2 – Microcontroladores
•
Arquitetura Interna
Microcontroladores
Controle
ALU
Mem.
Programa
Mem.
Dados
RAM
Mem.
Dados
E
2PROM
A/D
D/A
I/O
Digital
Controle
Interrupção
Timer
Watch
Dog
1.2 – Microcontroladores
-
Características:
•
A/D
•
D/A
•
I/O serial
•
USB
•
Ambiente de Programação
•
Linguagens disponíveis
•
Emulador
•
Gravador / Programador
•
Possibilidade de gravação na placa aplicativa
12
1.2 – Microcontroladores
•
Arquitetura de Sistemas
Circuito V/F
Circuito Robô
Microcontroladores
2 – Microcontrolador x DSP
2.1 – Principais Características dos Microcontroladores
•
Memória de programa – Flash / EPROM / E2PROM
•
Memória de dados volátil – RAM
•
Memória de dados não volátil – E2PROM
•
RISC e CISC – set de instruções
•
Timers / Contadores
•
Interrupções
•
PWM
•
I/O Digital
•
A/D
•
D/A
2.2 – Principais Características dos DSP´s
•
Características similares aos microcontroladores porem
com arquitetura voltada para processamento de sinais
tipicamente
implementação
de
filtros
ativos
e
implementação de algoritmos de controles em poucas
instruções.
14
3 - Fabricantes e Principais Famílias
•
Intel
8051, MCS 51, MCS 96
•
Phillips
LPC700, LPC900, LPC2000
•
Texas
TMS370, MSP430
•
Motorola
68HCXX, 683XX, MPC500
•
Microchip
PIC12CXXX, PIC16FXXX
Microcontroladores
4 – Microchip
•
Empresa
Empresa dedicada a desenvolver microcontroladores MCU de
8-bit e memórias.
As PICs combinam alta performance, baixo custo e reduzido
tamanho, acarretando em ótima relação custo benefício.
A Microchip fabrica mais de 100 milhões de PICs por ano,
especialmente
para
periféricos
de
computadores,
automação de escritórios, sistema de controle de
automóveis, sistemas de segurança e aplicações em
telecomunicações.
• Produtos
- PICmicro® Microcontrollers
- dsPIC® Digital Signal Controllers
- Analog & Interface Products
- Serial EEPROMS
- Pb-Free Information
- Battery Management
- Radio Frequency Devices
- KEELOQ® Authentication Products
16
4 – Microchip
•
Familia de microcontroladores PIC:
PIC 16FXXX
5 – Microcontrolador PIC 16F84
5.1 - principais caracteristicas
18
5 – Microcontrolador PIC 16F84
5.2 - Descrição geral
– Arquitetura RISC
– 8 níveis de STACK
– Barras de instrução e dados separados.
• Instrução – 14-bit, Dados – 8-bit
– A família PIC16CXX utiliza a arquitetura Harvard, onde
programa e dados são acessados de memórias diferentes
por barramentos diferentes.
– Utiliza PIPELINE (FETCH junto com execução) → um ciclo
de máquina para cada instrução.
– 16F84 → Memória para Programa –
1K x 14-bit
Memória RAM –
68 Bytes
Memória EEPROM –
64 Bytes
– Acesso direto e indireto a memória.
– Todos os registradores (incluindo PC) são mapeados na
RAM.
– 4 formas de CLOCK, RC, LP, XTAL, HS HICH SPEED
CRISTAL.
– Memória FLASH → permite que o dispositivo seja usado
para protótipo e produção. É possível programar sem
remover da aplicação. (?)
– Baixo custo, baixo consumo, alta performance, flexibilidade
de I/O → Aplicável em controle de velocidade de motores,
transmissor e receptor de freqüências, códigos de
segurança, etc.
– Software → MACRO-ASSEMBLER, C E FUZZY LOGIC
Microcontroladores
5 – Microcontrolador PIC 16F84
20
5 – Microcontrolador PIC 16F84
5.4 - Pinagem
5 – Microcontrolador PIC 16F84
5.5 - Memoria
– PC de 13-bit porém memória de apenas 1K (0-3FF)
• RESET-PC = 0H
INTERRUPÇÃO-PC = 04H
• 0H GO TO 100
; Vá para 100 (end. Interrupção)
• 04H
;Início INT.
• 100H
;Início do programa.
– O PIC16CXX não possui STACK POINTER e sim um stack
de 8 níveis. O operador deve “gerenciar” um máximo de 8
CALL´s ou INT´s.
– Memória de Dados:
• 2 Bancos selecionados por RP1 (sempre em 0) e RP0
• Memória RAM – 0CH e 4FH.
22
Microcontroladores
5 – Microcontrolador PIC 16F84
5.5 - Memoria
Memória de dados com SFR e RAM de uso geral no PIC16F84
23
Microcontroladores
5 – Microcontrolador PIC 16F84
24
5 – Microcontrolador PIC 16F84
5.6 - Registradores
•
Status
5 – Microcontrolador PIC 16F84
5.6 - Registradores
•
Option
26
5 – Microcontrolador PIC 16F84
5.6 - Registradores
•
Intcon
5 – Microcontrolador PIC 16F84
5.6 - Registradores
•
fusiveis
28
5 – Microcontrolador PIC 16F84
5.7 – Set de instruções
5 – Microcontrolador PIC 16F84
5.7 – Set de instruções
30
5.8 – Exemplo de HARDWARE para teste
Microcontroladores
5.8 – Exemplo de HARDWARE para teste
Microcontroladores
32
5.8 – Exemplo de HARDWARE para teste
Microcontroladores
33
5.9 – Exemplo de SOFTWARE
5.9.1 Rotina de tempo
Microcontroladores
;======================================================================== ; Progrma exemplo 1 para o livro "Microntroladores PIC"
;
; Objetivo: Estudar rotina de tempo baseada em software ; Funcionamento: Pisca o led 7 a cada 250ms
; Agosto/97
;======================================================================== __16F84
list p=16F84 ;processador 16F84
radix dec ;define padrao DECIMAL para valores sem ;identificação
include <P16F84.INC> ;Anexa o arquivo que contem as definições do 16F84
;...
; Tabela de definições de RAM e constantes.
W equ 0 ;referencia a W
Led7 equ 7 ;led 7 esta em RB7
tempo equ 0CH ;variavel tempo RAM 0CH. (primeira posição) X equ 0DH
Y equ 0EH
;---Memoria de Programa---
org 0 ;define inicio do trecho a seguir em 000
goto inicio ;desvia para o programa principal onde inicia pelo ;ajuste dos registros de controle.
;Este desvio tem por objetivo deixar o endereço ;004 para a rotina de interrupção.
;...INICIO DA ROTINA DE INTERRUPCAO... org 4
nop ;primeira instrucao da interrupcao
34
5.9 – Exemplo de SOFTWARE
5.9.1 Rotina de tempo (Cont.)
Microcontroladores
;...INICIO DO PROGRAMA...
inicio: ;este endereco eh o primeiro apos a interrupcao movlw B’00000000’ ;W=0
movwf INTCON ;INTCON=0. Nenhuma interr habilitada bsf STATUS,RP0 ;seleciona banco 1 para option e tris movlw B’11011111’ ;
movwf OPTION_REG ;Registro OPTION ajusta timer 0 clock interno e ;prescaler para watchdog (nao usamos)
movlw B’11111111’ ;W=255
movwf TRISA ;TRISA=ffH. PORTA toda entrada movlw B’00000000’ ;W=0
movwf TRISB ;TRISB=0. PORTB toda saida bcf STATUS,RP0 ;volto ao banco 0. Padrao do reset ;... principal: ;inicio do programa principal
bcf PORTB,Led7 ;fazendo PORTB pino 7 = 0 acendo o Led 7
call ms250 ;espera 250ms
bsf PORTB,Led7 ;fazendo PORTB pino 7 = 1 apaga o Led 7
call ms250 ;espera 250ms
5.9 – Exemplo de SOFTWARE
5.9.1 Rotina de tempo (Cont.)
Microcontroladores
;...Rotina de tempo de 250ms... ms250: ; -0 CALL para a rotina leva 2us.
movlw 250 ; +1
movwf tempo ; +1 total 1 = 4us ms250a:
movlw 248 ; +1
movwf X ; +1 total 2 = 2us ms250b:
nop ; 1
decfsz X ; 1 248x4us + (1us nop + 2us quando decfsz da 0) goto ms250b ; 2 da um tempo total 3 = 995us
decfsz tempo ; 1 1us pq tempo > 0 + 2us goto da um total 4 = 3us goto ms250a ; 2 250x(total 2 + total 3 + total 4) + 2us quando
; tempo = 0 = total 5 = 250.002us return ;delay = total 1 + total 5 + 2us return = 250.008us END ;fim do program fonte
Sobre a rotina de tempo
:36
5.9 – Exemplo de SOFTWARE
5.9.2 Rotina de deslocamento
Microcontroladores
;========================================================================= ; Progrma exemplo 2 para o livro "Microntroladores PIC"
;
; Objetivo: Estudar instrucoes de deslocamento ; Funcionamento: Pisca os leds 7 a 0, neta ordem, e repete.
; OS LEDS ASCENDEM EM 0. VER ESQUEMA
; Agosto/97
;========================================================================= __16F84
list p=16F84 ;processador 16F84
radix dec ;define padrao DECIMAL para valores sem ;identificação
include <P16F84.INC> ;Anexa o arquivo que contem as definições do 16F84 ;...
; Tabela de definições de RAM e constantes.
W equ 0 ;referencia a W
tempo equ 0CH ;variavel tempo RAM 0CH. (primeira posição) DT1 equ 0DH ;variavel auxiliar para tempo
X equ 0EH Y equ 0FH
;---Memoria de Programa---
org 0 ;define inicio do trecho a seguir em 000 goto inicio ;desvia para o programa principal. ;...INICIO DA ROTINA DE INTERRUPCAO...
org 4
nop ;primeira instrucao da interrupcao
37
5.9 – Exemplo de SOFTWARE
5.9.2 Rotina de deslocamento (Cont.)
Microcontroladores
;...INICIO DO PROGRAMA...
inicio: ;este endereco eh o primeiro apos a interrupcao movlw B’00000000’ ;W=0
movwf INTCON ;INTCON=0. Nenhuma interr habilitada clrf PORTA ;inicializa portas A e B.
clrf PORTB
bsf STATUS,RP0 ;seleciona banco 1 para option e tris movlw B’11011111’ ;
movwf OPTION_REG ;Registro OPTION ajusta timer 0 clock interno e ;prescaler para watchdog (nao usamos)
movlw B’11111111’ ;W=255
movwf TRISA ;TRISA=ffH. PORTA toda entrada movlw B’00000000’ ;W=0
movwf TRISB ;TRISB=0. PORTB toda saida bcf STATUS,RP0 ;volto ao banco 0. Padrao do reset ;...
principal: ;inicio do programa principal
movlw 255 ;W=11111111
movwf X ;X = W = 11111111
bcf STATUS,C ;bit Carry = 0 repete:
rrf X ;desloca o valor em X para a direita. ;o bit 0 vai ao Carry e o Carry vai ao bit 7. btfss STATUS,C ;se C = 1 pula prox inst.
goto principal ;Quando Carry = 0 acabou de deslocar 8 vezes. ;reinicia
38
5.9 – Exemplo de SOFTWARE
5.9.2 Rotina de deslocamento (Cont.)
Microcontroladores
movf X,W ;W = valor em X que sera escrito no PortB. ;ver instrucao MOVF f,d. Se d=0 escreve em W. ;Como atribuimos a W o valor 0, o compilador ;enxerga a instrucao como MOVF X,0
escreve;
movwf PORTB ;PORTB = W = X call ms250 ;espera 250 ms
goto repete ;Se Carry = 1 ainda não deslocou 8 vezes ;efetua novo deslocamento
;...Rotina de tempo de 250ms... ms250: ; -0 CALL para a rotina leva 2us.
movlw 250 ; +1
movwf tempo ; +1 total 1 = 4us ms250a:
movlw 248 ; +1
movwf Y ; +1 total 2 = 2us ms250b:
nop ; 1
decfsz Y ; 1 248x4us + (1us nop + 2us quando decfsz da 0) goto ms250b ; 2 da um tempo total 3 = 995us
decfsz tempo ; 1 1us pq tempo > 0 + 2us goto da um total 4 = 3us goto ms250a ; 2 250x(total 2 + total 3 + total 4) + 2us quando
; tempo = 0 = total 5 = 250.002us return ;delay = total 1 + total 5 + 2us return = 250.008us END ;fim do program fonte
6 – Motorola / Freescale
Microcontroladores
A Freescale, empresa a qual pertence a Motorola, é uma uma
gigante do mercado de semicondutores cuja a produção tem
o foco em produtos que atendam as indústrias automotivas e
de comunicação.
A empresa produz uma enorme gama de famílias de chips, que
incluem microcontroladores de 8 e 16-bit,
microprocessadores, DSPs, memórias, sensores e muitos
outros.
•
Algumas Famílias de produtos:
- HC08;
- HCS12;
- ColdFire;
- PowerPC;
- ARM;
40
7 – MC68HC908QT1
7.1 – Descrição Geral
Microcontroladores
• Tensões de operação: 5-V and 3-V (VDD)
• Oscilador interno ajustável
• In-system FLASH programming
• 128 bytes de RAM interna
• 48 bytes of user-defined vectors, located in FLASH
• 416 bytes of monitor read-only memory (ROM)
• 1536 bytes of FLASH program and erase routines, located in
ROM
• TIM (timer interface module) de 2 canais de 16-bit
• 5 linhas bidirecionais de I/O e uma de apenas entrada:
– Duas compartilhadas com os canais do Timer
– Uma compartilhada com IRQ externo
– Alta capacidade de fornecimento de corrente em todos os
pinos das portas
– Todas os pinos das portas podem ir para Three-state
• Power-on reset
• Pullups internos em IRQ e RST para reduzir o número de
componente externos
• Registradores de I/O mapeados em memória
• MC68HC908QT1 está disponível nos seguintes pacotes:
– 8-pin PDIP
– 8-pin SOIC
7 – MC68HC908QT1
7.2 – Diagrama em Blocos
42
7 – MC68HC908QT1
7.3 – Pinagem
7 – MC68HC908QT1
7.4 – Memória
44
7 – MC68HC908QT1
7.5 – Registradores de Configuração
Microcontroladores
Os Registradores podem habilitar ou desabilitar as seguintes
opções:
• Stop mode recovery time (32 × BUSCLKX4 cycles or
4096 × BUSCLKX4 cycles)
• STOP instruction
• Computer operating properly module (COP)
• COP reset period (COPRS): 8176 × BUSCLKX4 or 262,128 ×
BUSCLKX4
• Low-voltage inhibit (LVI) enable and trip voltage selection
• OSC option selection
• IRQ pin
• RST pin
7 – MC68HC908QT1
7.6 – Set de Instruções
46
7.6 – Set de Instruções (cont.)
7.6 – Set de Instruções (cont.)
48
7.6 – Set de Instruções (cont.)
7.6 – Set de Instruções (cont.)
50
7.6 – Set de Instruções (cont.)
Microcontroladores
7 – MC68HC908QT1
52
Microcontroladores
7 – MC68HC908QT1
7.8 – Exemplo de Programa
/*Arquivo Events.C*/
/*Including used modules for compilling procedure*/ #include "Cpu.h"
#include "Events.h" #include "LED.h" #include "Timer.h"
/*Include shared modules, which are used for whole project*/ #include "PE_Types.h" #include "PE_Error.h" #include "PE_Const.h" #include "IO_Map.h" /* ** =================================================================== ** Event : Timer_OnInterrupt (module Events)
**
** From bean : Timer [TimerInt] ** Description :
** When a timer interrupt occurs this event is called (only ** when the bean is enabled - "Enable" and the events are ** enabled - "EnableEvent"). ** Parameters : None ** Returns : Nothing ** =================================================================== */ void Timer_OnInterrupt(void) { if (PTA == 0) { PTA |= 2; } else { PTA &= ~2; } }