Buscar

Bits de configuracao

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 9 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 9 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 9 páginas

Prévia do material em texto

1 Wagner da Silva Zanco 
 
 
 
Bits de Configuração 
Quando o programa é gravado na memória de programa do microcontrolador, uma série de 
configurações é armazenada em um grupo especial de registradores de configuração, os quais 
estão mapeados em uma região fora da memória de programa, a partir do endereço 300000h. A tabela 
a seguir mostra os registradores de configuração e os seus respectivos bits. 
File name Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 
Default / 
Unprogrammed 
Value 
300001h CONFIG1H IESO FCMEN - - FOSC3 FOSC2 FOSC1 FOSC0 00-- 0111 
300002h CONFIG2L - - - BORV1 BORV0 BOREN1 BOREN0 PWRTEN ---1 1111 
300003h CONFIG2H - - - WDTPS3 WDTPS2 WDTPS1 WDTPS0 WDTEN ---1 1111 
300005h CONFIG3H MCLRE - - - - LPT1OSC PBADEN CCP2MX 1--- -011 
300006h CONFIG4L DEBUG XINST - - - LVP - STVREN 10-- -1-1 
300008h CONFIG5L - - - - CP3 CP2 CP1 CP0 ---- 1111 
300009h CONFIG5H CPD CPB - - - - - - 11-- ---- 
30000Ah CONFIG6L - - - - WRT3 WRT2 WRT1 WRT0 ---- 1111 
30000Bh CONFIG6H WRTD WRTB WRTC - - - - - 111- ---- 
30000Ch CONFIG7L - - - - EBTR3 EBTR2 EBTR1 EBTR0 ---- 1111 
30000Dh CONFIG7H - EBTRB - - - - - - -1-- ---- 
30000Eh DEVID1 DEV2 DEV1 DEV0 REV4 REV3 REV2 REV1 REV0 xxxx xxxx 
30000Fh DEVID2 DEV10 DEV9 DEV8 DEV7 DEV6 DEV5 DEV4 DEV3 xxxx xxxx 
Os registradores de configuração são utilizados para a configuração do modelo específico de 
microcontrolador e estão mapeados fora da região da memória de programa. Sendo assim, só é 
possível acessá-los durante a execução do programa via instrução TBLWT. Dentre as configurações 
possíveis, podemos destacar o tipo de oscilador e a proteção contra leitura da memória de programa. 
Existem duas formas de efetuar essas configurações na hora da gravação: uma é introduzir a 
configuração no programa-fonte por meio da diretiva #pragma config. A outra é selecionar a opção 
Configure/Configuration Bits... na barra de menu do MPLAB® IDE. Vejamos a seguir as opções de 
configuração para o PIC18F4520 no programa-fonte. 
Oscillator: Define o tipo de oscilador. 
LP Cristal de baixa potência (até 200kHz). 
XT Cristal/Ressonador (até 4MHz). 
HS Cristal/Ressonador de alta frequência (acima de 4MHz). 
HSPLL Cristal/Ressonador de alta frequência com o PLL habilitado. 
2 Bits de Configuração 
 
 
RC RC externo com saída de clock. Essa opção fornece no pino OSC2/CLKO/RA6 um 
sinal digital com frequência quatro vezes menor que a do oscilador principal 
(Fosc/4). 
RCIO RC externo. Nessa opção o RA6 funciona como pino digital. 
INTIO1 Oscilador interno com Fosc/4 no pino RA6 e pino RA7 configurado como digital. 
INTIO2 Oscilador interno com os pinos RA6 e RA7 configurados como digitais. 
EC Oscilador externo com saída de clock. Essa opção fornece no pino 
OSC2/CLKO/RA6 um sinal digital com frequência quatro vezes menor que a do 
oscilador principal. 
ECIO Oscilador externo. Nessa opção o RA6 funciona como pino digital. 
Fail-Safe Clock Monitor: permite ao microcontrolador continuar em operação se ocorrer uma falha no osci-
lador principal, chaveando o clock para o oscilador interno. Essa opção pode ser habilitada ou desabilitada. 
Internal External Switch Over Mode: permite ao microcontrolador efetuar o chaveamento do 
dispositivo gerador do clock. Essa opção pode ser habilitada ou desabilitada. 
Power Up Timer: quando ativada, faz com que o microcontrolador só comece a funcionar cerca de 
72ms depois que a fonte de alimentação for energizada. Isso garante que quando ele começar a 
funcionar, a tensão de alimentação já esteja estabilizada, evitando problemas como travamento. 
Brown Out Detect: quando essa opção é ativada o microcontrolador reseta caso a tensão de 
alimentação caia abaixo de um determinado valor. Caso não esteja ativada o microcontrolador pode 
travar quando ocorrer uma queda de tensão momentânea. O Brown-out detect pode ser ativado por 
software ou por hardware. Quando habilitado, possui quatro opções de valor de tensão de alimentação 
que provoca o Reset. 
Watchdog Timer (WDT): circuito temporizador que provoca um Reset no programa sempre que ele 
produzir um timeout. Sua utilização é indicada para locais onde o programa não pode parar de 
funcionar, como no caso do computador de bordo de um automóvel. O WDT tem um oscilador 
independente do oscilador principal. Isso significa que se por algum motivo o oscilador principal travar, 
o WDT continua em funcionamento. É possível habilitar ou desabilitar o funcionamento do WDT. 
Watchdog Postscaler: define o postscaler do WDT. Faixa varia de 1:1 a 1:32.768. 
CCP2 Mux: define o pino que será utilizado como saída do módulo CCP2. 
Debug: habilita o debug. Quando habilitada, configura os pinos RB7:RB6 para serem utilizados no 
In-circuit Debug. Quando desabilitada, configura os pinos RB7:RB6 como digitais. 
Port B A/D Enable: configura pinos do Port B como digitais ou analógicos no POR. 
Low Power Timer Osc Enable: habilita ou desabilita operação em baixa potência do oscilador interno 
do Timer 1. 
Master Clear Enable: habilita o pino /MCLR/Vpp/RE3 a funcionar como entrada de Reset. Para 
configurar esse pino como digital, essa opção deve ser desabilitada. 
Stack Overflow Reset: quando habilitada, reseta o microcontrolador se estourar o registrador que 
 
3 Wagner da Silva Zanco 
 
armazena os endereços de retorno de desvios incondicionais. 
Low Voltage Program (LVP): essa opção ativa a programação em baixa voltagem. A menos que você 
saiba o que está fazendo, deixe-a desabilitada. É necessário que essa opção esteja desabilitada para 
que o pino RB5/PGM seja configurado como digital. 
Extended Instruction Set Enable Bit: habilita o set de instruções estendido. 
Code Protect: é a mais importante opção a ser configurada. Ativado o código de proteção, não é 
possível ler o programa gravado no chip. O chip pode ser regravado, mas não pode ser lida a sua 
memória de programa até que uma nova gravação seja feita com essa opção desativada. Ativar o 
código de proteção garante que o programa gravado no componente não seja copiado de forma 
nenhuma se o microcontrolador estiver funcionando dentro das especificações elétricas definidas pelo 
fabricante. A proteção da memória de programa é efetuada por faixa. A tabela a seguir mostra como é 
dividida a memória de programa. 
Bloco de memória 
de programa Faixa 
Boot Block 000000h-0007FFh 
Block 0 000800-001FFFh 
Block 1 002000-003FFFh 
Block 2 004000-005FFFh 
Block 3 006000-007FFFh 
Data EEPROM Code Protect: se estiver desativada, todos os dados armazenados na EEPROM 
interna podem ser lidos pelo programa de gravação. Para proteger os dados armazenados na 
EEPROM, essa opção precisa ser habilitada. 
Table Write Protect: habilita a escrita na memória de programa em tempo de execução. 
Config. Write Protect: habilita a escrita nos registradores de configuração em tempo de execução. 
Data EEPROM Write Protect: habilita a escrita na memória EEPROM em tempo de execução. 
Table Read Protect: habilita a leitura na memória de programa em tempo de execução. 
Inclusão dos bits de configuração no programa-fonte por meio da diretiva #pragma 
A diretiva #pragma config pode ser utilizada para ativar as opções dos registradores de configuração 
no programa-fonte. O MPLAB® C18 verifica se as configurações são válidas para o modelo de 
microcontrolador que está sendo utilizado na aplicação. A seguir é mostrada a forma geral de utilização 
da diretiva #pragma config. 
#pragma config _configuração = valor 
As configurações efetuadas pela diretiva #pragma config devem ser introduzidas no início do 
programa-fonte, logo após o cabeçalho. Vejamos a seguir a lista de opções de configuração oferecida 
pela diretiva #pragma config. 
Bits de seleção do oscillator 
4 Bits de Configuração 
 
 
OSC = LP Oscilador LP 
OSC = XTOscilador XT 
OSC = HS Oscilador HS 
OSC = RC Oscilador externo RC, CLKOUT no pino RA6 
OSC = EC Oscilador EC, CLKOUT no pino RA6 
OSC = ECIO6 Oscilador EC, RA6 como pino digital 
OSC = HSPLL Oscilador HS, PLL habilitado (Fosc = 4 x FOSC1) 
OSC = RCIO6 Oscilador externo RC, RA6 como pino digital 
OSC = INTIO67 Oscilador interno, RA6 e RA7 como pinos digitais 
OSC = INTIO7 Oscilador interno, CLKOUT no pino RA6, RA7 como pino digital 
Bit de seleção do Fail-Safe Clock Monitor 
FCMEN = OFF Fail-Safe Clock Monitor desabilitado 
FCMEN = ON Fail-Safe Clock Monitor habilitado 
Bit Internal External Switchover Mode 
IESO = OFF Oscillator Switchover mode desabilitado 
IESO = ON Oscillator Switchover mode habilitado 
Bit de habilitação do Power-up Timer 
PWRT = ON PWRT habilitado 
PWRT = OFF PWRT desabilitado 
Bit de habilitação do Brown-out Reset 
BOREN = OFF Brown-out Reset desabilitado por hardware e software 
BOREN = ON Brown-out Reset habilitado e controlado por software (SBOREN habilitado) 
BOREN = NOSLP Brown-out Reset habilitado por hardware e desabilitado no Sleep mode 
(SBOREN desabilitado) 
BOREN = SBORDIS Brown-out Reset habilitado por hardware (SBOREN desabilitado) 
Bits de tensão do Brown-out Reset 
BORV = 0 4,5V 
BORV = 1 4,2V 
BORV = 2 2,7V 
BORV = 3 2,0V 
Bit de habilitação do Watchdog Timer 
WDT = OFF WDT desabilitado (controle é feito pelo bit SWDTEN) 
WDT = ON WDT habilitado 
Bit de seleção de postscaler do Watchdog Timer 
 
5 Wagner da Silva Zanco 
 
WDT = 1 1:1 
WDT = 2 1:2 
WDT = 4 1:4 
WDT = 8 1:8 
WDT = 16 1:16 
WDT = 32 1:32 
WDT = 64 1:64 
WDT = 128 1:128 
WDT = 256 1:256 
WDT = 512 1:512 
WDT = 1.024 1:1.024 
WDT = 2.048 1:2.048 
WDT = 4.096 1:4.096 
WDT = 8.192 1:8.192 
WDT = 16.384 1:16.384 
WDT = 32.768 1:32.768 
Bit de habilitação do pino Master Clear 
MCLRE = OFF Pino RE3 habilitado; MCLR desabilitado 
MCLRE = ON Pino /MCLR habilitado; pino RE3 desabilitado 
Habilita Low Power Timer Osc 
LPT1OSC = OFF Timer1 configurado para operação em alta potência 
LPT1OSC = ON Timer1 configurado para operação em baixa potência 
 
Bit de habilitação do Port B A/D 
PBADEN = OFF Pinos PORTB<4:0> como pinos digitais no Reset 
PBADEN = ON Pinos PORTB<4:0> como entradas analógicas no Reset 
Bit CCP2 Mux 
CCP2MX = PORTBE Saída CCP2 multiplexada no pino RB3 
CCP2MX = PORTC Saída CCP2 multiplexada no pino RC1 
Bit de habilitação do Stack Full/Overflow Reset 
STVREN = OFF Stack full/underflow não provoca Reset 
STVREN = ON Stack full/underflow provoca Reset 
6 Bits de Configuração 
 
 
Bit de habilitação da Low Voltage Program 
LVP = OFF Single-Supply ICSP desabilitado 
LVP = ON Single-Supply ICSP habilitado 
Bit de habilitação do Extended Instruction 
XINST = OFF Set de instruções estendidas e modo de endereçamento indexado 
desabilitados (Legacy mode) 
XINST = ON Set de instruções estendidas e modo de endereçamento indexado habilitados 
 
Bit de habilitação do Background Debugger 
DEBUG = ON Background debugger habilitado, RB6 e RB7 dedicados ao In-Circuit Debug 
DEBUG = OFF Background debugger desabilitado, RB6 e RB7 configurados como pinos digitais 
Bit de proteção do Block 0 
CP0 = ON Block 0 (000800-001FFFh) protegido 
CP0 = OFF Block 0 (000800-001FFFh) não protegido 
Bit de proteção do Block 1 
CP1 = ON Block 1 (002000-003FFFh) protegido 
CP1 = OFF Block 1 (002000-003FFFh) não protegido 
Bit de proteção do Block 2 
CP2 = ON Block 2 (004000-005FFFh) protegido 
CP2 = OFF Block 2 (004000-005FFFh) não protegido 
Bit de proteção do Block 3 
CP3 = ON Block 3 (006000-007FFFh) protegido 
CP3 = OFF Block 3 (006000-007FFFh) não protegido 
Bit de proteção do Boot Block 
CPB = ON Boot block (000000-0007FFh) protegido 
CPB = OFF Boot block (000000-0007FFh) não protegido 
Bit de proteção da Data EEPROM Code Protect 
CPD = ON Data EEPROM protegido 
CPD = OFF Data EEPROM não protegido 
Bit de Table Write Protect do Block 0 
WRT0 = ON Block 0 (000800-001FFFh) escrita protegida 
WRT0 = OFF Block 0 (000800-001FFFh) escrita não protegida 
Bit de Table Write Protect do Block 1 
 
7 Wagner da Silva Zanco 
 
WRT1 = ON Block 1 (002000-003FFFh) escrita protegida 
WRT1 = OFF Block 1 (002000-003FFFh) escrita não protegida 
Bit de Table Write Protect do Block 2 
WRT2 = ON Block 2 (004000-005FFFh) escrita protegida 
WRT2 = OFF Block 2 (004000-005FFFh) escrita não protegida 
Bit de Table Write Protect do Block 3 
WRT3 = ON Block 3 (006000-007FFFh) escrita protegida 
WRT3 = OFF Block 3 (006000-007FFFh) escrita não protegida 
 
Bit de Table Write Protect do Boot Block 
WRTB = ON Boot block (000000-0007FFh) escrita protegida 
WRTB = OFF Boot block (000000-0007FFh) escrita não protegida 
Bit de proteção do Config. Write Protect 
WRTC = ON Registradores de configuração (300000-3000FFh), escrita protegida 
WRTC = OFF Registradores de configuração (300000-3000FFh), escrita não protegida 
Bit de Data EEPROM Write Protect 
WRTD = ON Data EEPROM, escrita protegida 
WRTD = OFF Data EEPROM, escrita não protegida 
Bit de Table Read Protect do Block 0 
EBTR0 = ON Block 0 (000800-001FFFh) protegido de table reads executados em outros blocos 
EBTR0 = OFF Block 0 (000800-001FFFh) não protegido de table reads executados em outros blocos 
Bit de Table Read Protect do Block 1 
EBTR1 = ON Block 1 (002000-003FFFh) protegido de table reads executados em outros blocos 
EBTR1 = OFF Block 1 (002000-003FFFh) não protegido de table reads executados em outros blocos 
Bit de Table Read Protect do Block 2 
EBTR2 = ON Block 2 (004000-005FFFh) protegido de table reads executados em outros blocos 
EBTR2 = OFF Block 2 (004000-005FFFh) não protegido de table reads executados em outros blocos 
Bit de Table Read Protect do Block 3 
EBTR3 = ON Block 3 (006000-007FFFh) protegido de table reads executados em outros blocos 
EBTR3 = OFF Block 3 (006000-007FFFh) não protegido de table reads executados em outros blocos 
Bit de Table Read Protect do Boot Block 
EBTRB = ON Boot block (000000-0007FFh) protegido de table reads executados em outros blocos 
EBTRB = OFF Boot block (000000-0007FFh) não protegido de table reads executados em outros 
blocos 
 
8 Bits de Configuração 
 
 
Inserindo os bits de configuração no programa-fonte 
 
A seguir é apresentado um exemplo de configuração dos registradores de configuração utilizando a 
diretiva #pragma config. Veja que o oscilador HS é habilitado, o Power-on Reset habilitado, o Brown-
out Reset habilitado por hardware com tensão de 4,2V, o pino /MCLR habilitado, a baixa tensão de 
programação desabilitada, o boot block protegido contra leitura, o boot block protegido contra escrita, 
escrita protegida nos registradores de configuração, o boot block protegido contra table reads. 
 
#pragma config OSC = HS //oscilador HS 
#pragma config FCMEN = OFF // Fail-Safe Clock Monitor desabilitado 
#pragma config IESO = OFF // Oscillator Switchover mode desabilitado 
#pragma config PWRT = ON // PWRT habilitado 
#pragma config BOREN = SBORDIS //Brown-out Reset habilitado por hardware (SBOREN desabilitado) 
#pragma config BORV = 1 //Tensão de Reset do Brown-out Reset de 4,2V 
#pragma config WDT = OFF // WDT desabilitado (controle é feito pelo bit SWDTEN) 
#pragma config MCLRE = ON //pino /MCLR habilitado 
#pragma config LPT1OSC = OFF // Timer1 configurado para operação em alta potência 
#pragma config PBADEN = OFF // Pinos PORTB<4:0> como pinos digitais no Reset 
#pragma config CCP2MX = PORTC // Saída CCP2 multiplexada no pino RC1 
#pragma config STVREN = OFF // Stack full/underflow não provocará Reset 
#pragma config LVP = OFF // Single-Supply ICSP desabilitado 
#pragma config XINST = OFF // Set de instruções estendido e modo de endereçamentoindexado desabilitados 
#pragma config DEBUG = OFF // Background debugger desabilitado, RB6 e RB7 como pinos digitais 
#pragma config CP0 = OFF // Block 0 (000800-001FFFh) não protegido 
#pragma config CP1 = OFF // Block 1 (002000-003FFFh) não protegido 
#pragma config CP2 = OFF // Block 2 (004000-005FFFh) não protegido 
#pragma config CP3 = OFF // Block 3 (006000-007FFFh) não protegido 
#pragma config CPB = ON // Boot block (000000-0007FFh) protegido 
#pragma config CPD = OFF // Data EEPROM não protegida 
#pragma config WRT0 = OFF // Block 0 (000800-001FFFh) escrita não protegida 
#pragma config WRT1 = OFF // Block 1 (002000-003FFFh) escrita não protegida 
#pragma config WRT2 = OFF // Block 2 (004000-005FFFh) escrita não protegida 
#pragma config WRT3 = OFF // Block 3 (006000-007FFFh) escrita não protegida 
#pragma config WRTB = ON // Boot block (000000-0007FFh) escrita protegida 
#pragma config WRTC = ON // Registradores de configuração (300000-3000FFh) escrita protegida 
#pragma config EBTR0 = OFF /*Block 0 (000800-001FFFh) não protegido de table reads executados em outros 
Blocos*/ 
#pragma config EBTR1 = OFF /* Block 1 (002000-003FFFh) não protegido de table reads executados em outros blocos*/ 
 
#pragma config EBTR2 = OFF /* Block 2 (004000-005FFFh) não protegido de table reads executados em outros blocos*/ 
 
#pragma config EBTR3 = OFF /* Block 3 (006000-007FFFh) não protegido de table reads executados em outros blocos*/ 
 
#pragma config EBTRB = ON /* Boot block (000000-0007FFh) protegido de table reads executados em outros blocos*/ 
A outra forma de configurar os registradores de configuração na hora da gravação é selecionar a opção 
Configure/Configuration Bits... na barra de menu do MPLAB IDE. A Figura A.1 mostra a janela com 
as configurações disponíveis para o PIC18F4520. 
 
9 Wagner da Silva Zanco 
 
 
Figura A.1

Continue navegando