Microcontrolador x Microprocessador
Microcontrolador PIC – Descrição Geral
¾Utiliza arquitetura Harvard (RISC);
¾P it i t õ d i i t t
¾Permite interrupções de origem interna e externa;
¾O pipeline permite execuções de instruções em ump p p ç ç
ciclo, exceto os desvios;
¾Possui 35 instruções;
¾Possui blocos periféricos internos.
Arquiteturas
¾ Os microcontroladores com arquitetura Havard sãoq
chamados de RISC (Reduced Instruction Set
Computer)
¾ Os microcontroladores com a arquitetura de Von Neumann são também chamados CISC (Complex Instruction Set Computer)
Arquitetura Havard
¾ Capacidade de processamento maior, sem
necessidade de elevar a freqüência de clock da CPU.q
¾ Separação das memórias de dados e programa:
Possibilidade de representar instruções por palavras Possibilidade de representar instruções por palavras de mais que 8 bits (Ex 14bits – PIC)
¾ Busca e execução simultânea de instruções
Relógio e Ciclo de Instrução
¾ O código da instrução é lido em Q1 e é escrito no RI em Q4.
¾ A decodificação e execução dessa mesma instrução,
f t f Q1 Q4 i t
Pipelining
Durante a execução da instrução é extraído da memória o código da instrução seguinte.
¾TCY0: é lido da memória o código da instrução MOVLW 55h;
¾TCY2: é executada a instrução MOVWF PORTB e lida a instrução CALL SUB_1;
¾TCY3: é executada a chamada (CALL) de uma subrotina CALL SUB_1 e é lida a instrução BSF PORTA,BIT3. _
¾TCY4: este ciclo de instrução é totalmente usado para ler a primeira instrução da subrotina no endereço SUB_1;
¾TCY5: é executada a primeira instrução da subrotina SUB 1 e lida a
Formato das Instruções do PIC
Instruções formadas por 14 bits Tipos de Instruções;
¾Instruções orientadas a byte;
¾Instruções orientadas a byte;
¾Ex: MOVWF TRISA ¾Instruções orientadas a bit;
¾Ex: BSF STATUS, RP0 ¾Ex: BSF STATUS, RP0 ¾Instruções Literais e de Controle;
¾Ex: MOVLW 0xFF
¾Instruções GOTO e CALL;st uções GO O e C ;
Descrição do Opcode
Código instruções
orientadas a Bit
Registrador de Status (Estado)
bit 0 C (Carry) Transporte
bit 1 DC (Digit Carry) Transporte de dígito
bit 2 Z (bit Zero) Indicação de resultado igual a zero
Registrador de Status (Estado)
bit 4 TO Time-out (transbordo do Watchdog)
bits 5 e 6 RP1:RP0 (bits de seleção de banco de registros bits 5 e 6 RP1:RP0 (bits de seleção de banco de registros da RAM) – Endereçamento direto.
11 = banco de registros 3g 10 = banco de registros 2 01 = banco de registros 1
00 b d i 0
00 = banco de registros 0
bit 7 IRP (Bit de seleção de banco de registros) bit 7 IRP (Bit de seleção de banco de registros) -Endereçamento indireto.
Registrador Option
bits 0 a 2 PS0, PS1, PS2 (bits de seleção do divisor Prescaler) - Estes três bits definem o fator de divisão do
Registrador Option
bit 3 PSA (Bit de Atribuição do Prescaler) – Atribuição do prescaler
do prescaler.
1 = prescaler atribuído ao watchdog;
Registrador Option
bit 4 T0SE (bit de seleção de borda ativa em TMR0) – Sinal através do pino RA4/TOCK1.
1 b d d d id
1 = borda de descida; 0 = borda de subida.
bit 5 TOCS (bit de seleção da fonte de clock em TMR0)
Registrador Option
bit 6 INDEDG (bit de seleção da borda de interrupção)
– Interrupção através do pino RB0/INT.
1 b d d bid
1 = borda de subida; 0 = borda de descida.
bit 7 RBPU (Habilitação dos pull-up nos bits da porta B)
Organização da Memória
¾Memória de programa – Flash (14bits x 8K);
¾M ó i d d d
¾Memória de dados
EEPROM – 256 bytes (instruções especiais para acesso de escrita;
para acesso de escrita;
RAM (GPR – Registradores de propósito geral) - 368 bytes distribuídos através dos bancos 0, 1, 2 e 3 do PIC 16F877;
R i t d SFR (R i t d d f õ
Registradores SFR (Registradores de funções espe-ciais) – 32 posições iniciais dos bancos 0 e 1 e as 16 posições iniciais dos bancos 2 e 3
Organização da Memória
¾Contador de Programa – Possui 13 bits e capacidade
d d 8K 14bit
de endereçar 8K x 14bits posições de memória;
¾A posição 0000h é reser-vada para reset;
¾A posição 0004h é
reser-d t d i t
Organização da Memória
Pilha – 13 bits e 8 níveis de profundidade;
¾Programação do Sistema;
¾Modo de endereçamento
9Endereçamento direto
Memória de Dados
¾A memória de dados é particionada em 4 bancos
Endereçamento Direto
Endereço de 9 bits, formado a partir dos sete bits do endereço direto de
i t ã i d i bit (RP1
uma instrução, mais dois bits (RP1 e RP0) do registro de “Status”
bsf STATUS, RP0 ; Banco 1 movlw 0xFF ; w = 0xFF
movwf TRISA
Endereçamento Indireto
Endereço gerado a partir do bit IRP, do registrador de Status e valor no registrador FSR.
movlw 0x20 ;definição do movlw 0x20 ;definição do
endereço inicial
movwf FSR ;FSR aponta para o
para o endereço 0x20h loop:clrf INDF ;INDF = 0 incf FSR ; endereço = incf FSR ; endereço
endereço inicial + 1 btfss FSR,7 ;todos os locais de memória limpos?
Instruções Assembly dos Exemplos
BSF f b S t bit “b” d i t d “f” BSF f,b Seta bit “b” do registrador “f”;
MOVLW k Copia o literal de 8 bits “k” para o registrador “W”;
MOVWF f Copia o conteúdo do registrador “W” para o registrador “f”; MOVWF f Copia o conteúdo do registrador W para o registrador f ;
CLRF f Reseta o registrador “f”;
INCF f,d Incrementa o conteúdo do redistrador “f” e salva o resultado no i t d “W” “d 0” i t d “f” “(d 1)”
registrador “W”, se “d=0”, ou no registrador “f” se “(d=1)”;
BTFSS f,b Salta uma instrução se bit “b” do registrador “f” é 1;
BCF STATUS,IRP MOVLW 0X20
MOVWF FSR
LACO: MOVF INDF,0, (OU INDF,W)( , ) BSF FSR,7
nado/liberado
BSF STATUS,RP0 BCF STATUS, RP1 BCF TRISD 0
... while(1) ... {
... if(input(PIN_A0)) 0036: BSF 05.0
BCF TRISD,0 BSF TRISA,0
BCF STATUS,RP0
0037: BCF 03.5 0038: BTFSS 05.0 0039: GOTO 03F
... output_high(PIN_D0);
LACO: BTFSC PORTA,0 BSF PORTD,0 BTFSS PORTA,0
003A: BSF 03.5 003B: BCF 08.0 003C: BCF 03.5 003D: BSF 08.0
BCF PORTD,0 GOTO LACO
... else 003E: GOTO 043
... output_low(PIN_D0); 003F: BSF 03.5
Portas A, B, C, D e E
Bit do registrador TRISx = 1 → pino da porta x será uma Bit do registrador TRISx = 1 → pino da porta x será uma entrada;
Configuração da Porta A
Pinos 0 1 2 3 e 4 da porta A são declarados como entradas Pinos 0, 1, 2, 3 e 4 da porta A são declarados como entradas.
Timer 0
¾Contador/Timer de 8 bits;
¾Registrador de contagem de escrita e leitura;g g ;
¾Pré-escalonador (divisor de freqüência)
programável; programável;
¾Utiliza sinal de clock interno ou externo;
¾G i t ã d t d d FF
¾Gera interrupção quando a contagem muda de FF para 00;
Timer 0
# Modos de contagem # Modos de contagem
¾Modo timer - Incrementa a cada ciclo de instrução (sem pré-escalonador).
(sem pré escalonador).
¾Modo de contagem - Incrementará a cada subida ou descida do sinal no pino RA4/TOCKL (borda definida pelo bit T0SE - bit 4 do Reg. OPTION).
¾Registradores associados:
Timer 1
O modo de operação é determinado pelo bit de seleção de clock, TMR1CS (bit 1 do Reg. T1CON).
Bit 0 (bit TMR1ON – bit de ativação do Timer 1)
1 = Timer 1 ativado 1 Timer 1 ativado
Timer 1
Timer 2
# Timer de 8 bits com um pré escalonador e pós # Timer de 8 bits com um pré-escalonador e pós-escalonador.
# Pode ser usado como a base de tempo no modo PWM # Pode ser usado como a base de tempo no modo PWM dos módulos CCP.
# TMR2 é um registra-g dor de escrita e leitura e é apagado em
qual-t d t
Timer 2
Registrador de Controle do Timer 2 – T2CON (endereço 12h)
Bits 1-0 (bit T2CKPS1 e T2CKPS0 – bit de seleção do pré-escalonador) 00 = Escalonamento de 1
do pré-escalonador) 00 Escalonamento de 1 01 = Escalonamento de 4
Captura/Comparação/PWM
Os módulos CCP (Captura/Comparação/PWM) são Os módulos CCP (Captura/Comparação/PWM) são formados por um registrador de 16 bits que pode operar como:
como:
¾Registrador de captura de 16 bits;
¾Registrador de comparação de 16 bits
¾Registrador de comparação de 16 bits
¾Registrador de “duty-cycle” no modo PWM
M t /E
Captura/Comparação/PWM
Registradores de Controle CCP1CON e CCP2CON Registradores de Controle CCP1CON e CCP2CON (endereços 17h e 1Dh)
Bits 3-0 (bit CCPxM3: CCPxM0 – bits de seleção de modo de operação) – Estes bits selecionam o modo como operarão os blocos CCP1 e CCP2
como operarão os blocos CCP1 e CCP2.
EX: 0100 = Modo captura, a cada 1 transição negativa (1→0)
Captura/Comparação/PWM
Bits 5 4 (bits CCPxX:CCPxY bits menos Bits 5-4 (bits CCPxX:CCPxY – bits menos significativos do PWM) – Estes bits representam os dois bits menos significativos do valor de duty-cycle do dois bits menos significativos do valor de duty cycle do sinal PWM.
Captura/Comparação/PWM
Modo Captura Modo Captura
Pré-escalonador do módulo CCP
Microcontrolador PIC
Modo CapturaCaptura
1
0
/
0
4
/
2
0
1
Captura/Comparação/PWM
Microcontrolador PIC
Modo ComparaçãoComparação
1
0
/
0
4
/
2
0
1
Captura/Comparação/PWM
Modo PWM Modo PWM
O bloco CCPx produz um sinal PWM com uma resolução de até 10 bits.
resolução de até 10 bits.
Um sinal PWM é caracterizado pelo seu período e o
“duty-cycle”, que corresponde ao tempo em que o sinal permanece em nível alto.
O período do sinal PWM é especificado pelo registrador PR2:
PR2:
Captura/Comparação/PWM
Modo PWM Modo PWM
Quando TMR2 é igual a PR2, os seguintes eventos ocorrem:
ocorrem:
¾O TMR2 é apagado;
¾O pino CCP1 é setado (exceto se o duty-cycle do PWM = 0%, quando o CCP1 não será setado);
¾O PWM duty-cycle é copiado de CCPR1L para
CCPR1H CCPR1H.
Captura/Comparação/PWM
Modo PWM Modo PWM
Determinação do duty-cycle em termos de tempo:
Duty Cycle do PWM = (CCPR1L:CCP1CON<5:4>) • Tosc
Duty Cycle do PWM (CCPR1L:CCP1CON 5:4 ) Tosc
• (TMR2 prescale value)
O novo valor de duty-cycle só é atualizado no CCPR1H, quando os valores dos registradores PR2 e TMR2 coincidirem (ao fim do período PWM)
coincidirem (ao fim do período PWM).
Captura/Comparação/PWM
Microcontrolador PIC
Modo PWMPWM
1
0
/
0
4
/
2
0
1
CONVERSOR A/D
O módulo do conversor A/D possui 8 entradas
O módulo do conversor A/D possui 8 entradas
analógicas.
Um sample-and-hold é conectada a entrada do
Um sample and hold é conectada a entrada do
conversor A/D a partir de um multiplex 8 x 1.
O conversor A/D gera uma palavra binária de 10 bits proporcional ao sinal na entrada analógica selecionada. O módulo A/D tem duas entradas de tensão de referência (alta e baixa) que são selecionadas por referência (alta e baixa), que são selecionadas por software.
CONVERSOR A/D
O conversor A/D necessita de no mínimo 12 TAD para O conversor A/D necessita de no mínimo 12 TAD para realizar uma conversão de 10 bits. A fonte do clock do conversor A/D é selecionada por software entre as conversor A/D é selecionada por software entre as possibilidades abaixo:
¾ 2Tosc;
¾ 8Tosc;
¾ 32Tosc;
¾ Oscilador RC interno
¾ Oscilador RC interno.
CONVERSOR A/D
CONVERSOR A/D
O par de registradores ADRESH:ADRESL comporta 16 O par de registradores ADRESH:ADRESL comporta 16 bits, assim, o valor convertido de 10 bits pode ser justificado a direita ou à esquerda (bit ADFM).
justificado a direita ou à esquerda (bit ADFM).
Os bits extras não utilizados são carregados com “0” (zeros).
CONVERSOR A/D
CONVERSOR A/D
CONVERSOR A/D
Registrador ADCON0 - Controla a operação do módulo Registrador ADCON0 - Controla a operação do módulo
A/D (endereço 1Fh).
Bit 0 (bit ADON bit que ativa o conversor A/D) Este
Bit 0 (bit ADON – bit que ativa o conversor A/D) – Este bit ativa a operação do conversor A/D.
1 = conversor A/D ativado 1 conversor A/D ativado 0 = conversor A/D desligado
CONVERSOR A/D
Bit 2 (bit GO/– bit de status de conversão) – Este bit
Bit 2 (bit GO/– bit de status de conversão) – Este bit indica se uma conversão iniciada já foi concluída.
Se ADON =1
1 = conversão A/D em andamento
0 = não há conversão A/D em andamento (esse bit é
t ti t t d d ã A/D é
automaticamente resetado quando a conversão A/D é concluída).
Bits 5-3 (bits CHS2:CHS0 – bits de seleção de canal) Bits 5-3 (bits CHS2:CHS0 – bits de seleção de canal)
– Estes bits selecionam a entrada analógica cujo sinal será convertido.
000 = canal 0, (RA0/AN0) 001 = canal 1, (RA1/AN1)
010 l 2 (RA2/AN2)
CONVERSOR A/D
011 = canal 3 (RA3/AN3) 011 = canal 3, (RA3/AN3) 100 = canal 4, (RA5/AN4) 101 = canal 5, (RE0/AN5)( ) 110 = canal 6, (RE1/AN6) 111 = canal 7, (RE2/AN7)
Bits 7-6 (bits ADCS1:ADCS0 – bits de seleção de clock) – Estes bits selecionam a fonte do sinal de
clock) Estes bits selecionam a fonte do sinal de clock para o conversor A/D.
00 = FOSC/2 01 = FOSC/8 10 = FOSC/32
11 FRC ( l k d i d d il d RC)
CONVERSOR A/D
Registrador ADCON1 – Configura a função dos pinos das Registrador ADCON1 – Configura a função dos pinos das
portas (A e E) (endereço 9Fh)
CONVERSOR A/D
Bits 6-4 (bits não usados – lido como 0) Bits 6-4 (bits não usados – lido como 0)
Bit 7 (bit ADFM – bit de seleção de formato do( ç resultado da conversão A/D) – Este bit seleciona o formato de justificação do resultado gerado pelo
A/D conversor A/D.
1 = Justificação à direita. Os 6 bits mais significativos de ADRESH serão iguais a 0
ADRESH serão iguais a 0.
0 = Justificação à esquerda. Os 6 bits menos
CONVERSOR A/D
CONVERSOR A/D
Registradores associados com o módulo do conversor Registradores associados com o módulo do conversor
Interrupções
¾Mecanismo que torna possível responder a “estímulos” externos ou internos.
¾Através do registrador INTCOM pode se habilitar as
¾Através do registrador INTCOM pode-se habilitar as interrupções de forma individual ou de forma global.
¾O PIC 16F87X tem as seguintes fontes de Interrupção:
9 Interrupção externa (RB0/INT);
9 I d R ló i (TM0)
9 Interrupção de Relógio (TM0);
9 Interrupção da porta B (B4-B7);
9 Interrupção por captura e comparação (CCP1 e 2);
9 Interrupção por captura e comparação (CCP1 e 2);
9 Interrupção da USART (buffer saída e entrada cheio);
Interrupções
¾O PIC 16F87X tem as seguintes fontes de Interrupção:
9 Estouro do relógio TMR1;
9 Estouro do relógio TMR2;
9 Estouro do relógio TMR2;
9 Fim de escrita EEPROM;
9 Fim de Conversão A/D;;
9 Atividade na SPI ou I2C;
9 Recebimento de dados na Porta Paralela Escrava;
9 C li b
9 Colisão no barramento.
Interrupções
¾Inicialmente deve-se estabelecer quais interrupções devem estar habilitadas bem como setar o bit GIE (reg INTCON<7>)
INTCON<7>)
¾Comandos de retorno da interrupção:
9RETURN;;
9RETLW;
9RETFIE (põe ‘1’ automaticamento no bit GIE,
i i d i )
Interrupções - Registradores
Registrador INTCON
Bit 0 – Flag interrupção de mudança nos bits B4 a B7 1 – Pelo menos um bit mudou de estado
0 Nenhum bit mudou de estado 0 – Nenhum bit mudou de estado
Bit 1 – Flag interrupção INT/RB0 Bit 1 Flag interrupção INT/RB0 1 – Interrupção externa ocorreu
Interrupções - Registradores
Registrador INTCON Registrador INTCON
Bit 2 – Flag Timer 0 overflow Bit 2 Flag Timer 0 overflow
1 – Contagem mudou de 00h para FFh 0 – Não ocorreu overflow na contagem
Bit 3 – Habilita interrupção na mudança nos pinos B4 a B7 1 Habilita a interrupção
1 – Habilita a interrupção 0 – Desabilita a interrupção
Bit 4 – Habilita interrupção no pino INT/RB0 1 – Habilita a interrupção
Interrupções - Registradores
Registrador INTCON Registrador INTCON
Bit 5 – Habilita interrupção de Overflow do Timer 0 1 – Habilita interrupção
1 Habilita interrupção 0 – Desabilita interrupção
Bit 6 – Habilita interrupção dos periféricos
1 – Habilita todas as interrupções não mascaradas de periféricos
periféricos
0 – Desabilita todas as interrupções de periféricos
Bit 7 – Habilita interrupção global
Interrupções - Registradores
Registrador PIE1 Registrador PIE1
Bit 0 – Habilita interrupção de Overflow do Timer1pç 1 – Habilita interrupção
0 – Desabilita interrupção
Bit 1 – Habilita interrupção por igualdade do TMR2 e PR2 1 – Habilita interrupção
Interrupções - Registradores
Registrador PIE1 Registrador PIE1
Bit 2 – Habilita interrupção do bloco CCP1 1 Habilita interrupção
1 - Habilita interrupção 0 – Desabilita interrupção
Bit 3 – Habilita interrupção da SPI 1 – Habilita interrupção
0 – Desabilita interrupção
Bit 4 Habilita interrupção de transmissão da USART Bit 4 – Habilita interrupção de transmissão da USART 1 – Habilita interrupção
Interrupções - Registradores
Registrador PIE1 Registrador PIE1
Bit 5 – Habilita interrupção de recepção da USART 1 Habilita interrupção
1 – Habilita interrupção 0 – Desabilita interrupção
Bit 6 – Habilita interrupção do conversor A/D 1 - Habilita interrupção
0 Desabilita interrupção 0 – Desabilita interrupção
Bit 7 – Habilita interrupção da porta paralela escrava Bit 7 Habilita interrupção da porta paralela escrava 1 – Habilita interrupção
Interrupções - Registradores
Registrador PIR1 Registrador PIR1
R i t d PIE2
Registrador PIE2