Placa McLab1 Upgrade PIC16F84A p/ PIC16F62x

Transcrição

Placa McLab1 Upgrade PIC16F84A p/ PIC16F62x
Placa McLab1
Upgrade
PIC16F84A p/ PIC16F62x
Upgrade PIC16F84A p/ PIC16F62x
McLab1
Sumário
1.
UTILIZANDO OS PICS 16F62X .............................................. 3
1.1.
2.
INTRODUÇÃO .......................................................................... 3
ATUALIZAÇÃO DO HARDWARE......................................... 4
2.1. UPGRADE DA PLACA MCLAB1 PARA TRABALHAR COM
PIC16F627 / PIC16F628................................................................... 4
2.2. POR QUE A ALTERAÇÃO É NECESSÁRIA? ................................ 4
3.
CARACTERÍSTICAS DOS PICS 16F62X (P.13 DO LIVRO)5
3.1.
3.2.
3.3.
A PINAGEM ............................................................................. 6
AS NOMENCLATURAS UTILIZADAS (PÁGINA 14) .................... 6
CARACTERÍSTICAS ELÉTRICAS E OUTRAS (PÁGINA 123)........ 7
4.
MEMÓRIA DE DADOS (PÁGINA16) ..................................... 8
5.
MEMÓRIA DE PROGRAMA (P.15 DO LIVRO)................. 10
5.1.
CONVERTENDO OS PROGRAMAS........................................... 10
6.
CONVERTENDO OS
PROGRAMAS P/ A
PLACA
MCLAB1 ............................................ 11
7.
ROTINAS PARA EEPROM CORRIGIDAS ......................... 13
7.1. ESCRITA (PÁGINA 118) ......................................................... 13
7.1.1. Leitura (página 119)..................................................... 13
7.1.2. Exemplo (página 123)................................................... 13
8.
GRAVAÇÃO IN-CIRCUIT ..................................................... 15
II
Upgrade PIC16F84A p/ PIC16F62x
1.
Utilizando os PICs 16F62x
1.1.
Introdução
McLab1
Atualmente tanto o livro “Desbravando o PIC” quanto o curso e a placa
“McLab 1” da Labtools se baseiam no PIC16F84 para a realização de todas
as experiências propostas. Entretanto, nos últimos tempos a Microchip
desenvolveu novos modelos de PIC que possuem características
semelhantes ao F84 mas com uma tecnologia superior. Isto possibilita que
estes novos modelos, denominados 16F627 e 16F628, possuam mais
recursos e sejam mais baratos.
A Labtools, no seu constante trabalho de divulgação do conhecimento, e
na sua plena preocupação com os melhores benefícios para os nossos
clientes, resolveu criar este documento para que os usuários de nossos
sistemas possam ter a opção de utilizarem também os novos modelos
apresentados.
Não é nossa intenção entretanto, explicar ou esclarecer os novos
recursos disponíveis nos modelos 16F62x, mas somente informar sobre as
alterações necessárias para utiliza-los nos exemplos desenvolvidos para o
16F84.
3
Upgrade PIC16F84A p/ PIC16F62x
McLab1
2.
Atualização do Hardware
2.1.
Upgrade da Placa McLab1 para trabalhar com PIC16F627 /
PIC16F628
Alterar os resistores R19, R20, R21, R22, R23, R24, R25 e R26
originalmente de 10kΩ para 330Ω e resistores R15, R16 e R17
originalmente de 470Ω para 2k2Ω.
Atenção! A atualização do hardware só é necessária
para as placas adquiridas anteriormente a data 13 de
novembro de 2001.
2.2.
Por que a alteração é necessária?
A placa McLab1 dispõe de um recurso de hardware que possibilita a
utilização de uma entrada e uma saída num mesmo pino do
microcontrolador. Este recurso é útil, por exemplo, quando se deseja ler o
estado de um botão e no mesmo pino controlar um led. Desta forma,
minimiza-se os I/O’s utilizados no microcontrolador, possibilitando assim,
desenvolver grandes aplicações mesmo em microcontroladores com
poucos I/O’s. No caso da placa McLab1, este recurso foi utilizado nas
chaves SW2, SW3 e SW4, nos leds D10, D11 e D12 que estão ligados
respectivamente nos pinos RA1, RA2, RA3 do PIC ( vide esquema
elétrico).
A placa foi inicialmente projetada para a utilização com o
microcontrolador PIC16F84, acontece que neste microcontrolador
estes pinos tinham uma arquitetura tipo TTL, já no PIC 16F62x estes
pinos são do tipo Schmitt Trigger. Isso significa que os níveis de
tensão que a porta entende como nível lógico 1 e/ou 0 são diferentes.
Admitindo uma tensão de alimentação de 5V, para o PIC16F84 ( TTL )
o microcontrolador entende nível lógico 1 a partir de 2V nível lógico
0 abaixo de 0,8V. No PIC16F62x ( Schmitt Trigger ) o
microcontrolador entende nível lógico 1 a partir de 4V e nível lógico 0
abaixo de 2V . Em virtude deste fato, para utilizar a placa McLab1
4
Upgrade PIC16F84A p/ PIC16F62x
McLab1
com o PIC16F62x é necessário alterar o valor de alguns resistores para
garantir a polarização correta e conseqüentemente adequar os níveis de
tensão para a porta tipo Schmitt Trigger. É importante salientar que a
alteração não prejudica em nada a utilização da placa com o
PIC 16F84, ou seja, depois de alterada, a placa poderá ser utilizada
tanto com o PIC16F62x como com o PIC16F84.
Você deve estar se perguntando porque a Microchip modificou a
arquitetura interna de TTL para Schmitt Trigger nos PIC16F62x. O
problema é que este novo microcontrolador apresenta um recurso
interno analógico (comparadores) que não estava disponível no
PIC16F84. No PIC16F62x alguns pinos podem ser configurados como
entradas analógicas de comparadores internos, por isso, a alteração de
TTL para Schmitt Trigger. Esta alteração não foi em todos os pinos do
microcontrolador, e sim apenas naqueles pinos utilizados pelos
comparadores analógicos, ou seja, no PORTA, justamente o mesmo que
utilizamos na placa McLab1 para fazer a leitura/escrita num
mesmo pino.
3.
Características dos PICs 16F62x (p.13 do
livro)
Para os usuários que possuem o livro “Desbravando o PIC”, as
principais diferenças entre os modelos podem ser observadas em relação
as características apresentadas no Capítulo 5 – O PIC16F84.
Por isso, vamos seguir a mesma formatação do livro para
apresentarmos as características dos modelos 16F62x:
Microcontroladores de 18 pinos, o que facilita a montagem de
hardwares experimentais;
16 I/Os, sendo que 15 podem ser configurados como entradas e
saídas e 1 (RA5) só pode ser utilizado como entrada;
Possui oscilador interno de 4MHz (pode ser usado externo,
perdendo-se 2 I/O’s);
Possui Máster Clear interno (pode ser usado externo, perdendo-se 1
I/O);
5
Upgrade PIC16F84A p/ PIC16F62x
McLab1
5 interrupções disponíveis (TMR0, Externa, Mudança de Estado,
EEPROM e comparador);
Dois comparadores internos com tensão de referência externa;
Três timers internos: TMR0 (8 bits), TMR1 (16 bits) e TMR2 (8
bits);
Capture,Compare e PWM (10 bits);
USART;
Memória de programação Flash, que permite a gravação do
programa diversas vezes no mesmo chip, sem a necessidade de
apaga-lo através de luz ultra-violeta, como acontece nos
microcontroladores de janela;
Memória EEPROM (não volátil) interna;
Via de programação com 14 bits e 35 instruções.
3.1.
A pinagem
3.2.
As nomenclaturas utilizadas (página 14)
O 16F62x possui um total de 16 I/Os separados em dois grupos
denominados PORTAS. Desta forma temos a Porta A e a Porta B. Para
facilitarmos o entendimento e a comparação com os data sheets originais,
6
Upgrade PIC16F84A p/ PIC16F62x
McLab1
usaremos os termos provenientes do inglês: PORTA (port A) e PORTB
(port B).
O PORTA possui 8 pinos que podem ser configurados como entrada
ou saída, e seus nomes são definidos como RA0, RA1, RA2, RA3, RA4,
RA5, RA6 e RA7. O pino referente ao RA4 pode ser configurado também
para incrementar o contador TMR0. Nos exercícios do livro e do curso são
utilizadas somente as portas de RA0 a RA4, pois os pinos 16 e 17 são
utilizados para o oscilador externo e o pino 4 é utilizado como Master
Clear externo. As demais funções destes pinos, como os comparadores e
oscilador interno não são vistas no livro ou no curso.
Já o PORTB possui 8 pinos configuráveis como entrada ou saída,
sendo seu nomes RB0, RB1, RB2, RB3, RB4, RB5, RB6 e RB7. O RB0
pode ser utilizado também para gerar a interrupção externa, assim como os
pinos de RB4 a RB7 podem gerar a interrupção por mudança de estado.
Estes pinos possuem também outras funções, como a USART, SPI,
Capture, Compare, PWM, mas estes recursos não são estudados no livro
e no McLab 1.
Maiores detalhes sobre os recursos disponíveis podem ser conseguidos
no Data Sheet do componente.
3.3.
Características elétricas e outras (página 123)
Temperatura de trabalho .................................................... -40ºC até +125ºC
Temperatura de armazenamento............................................-65ºC até 150ºC
Tensão de trabalho...................................................................... 3.0V a 5.5V
Voltagem máxima no pino Vdd (em relação ao Vss) ............ -0.3V até 6.5V
V. máxima no pino MCRL (em relação ao Vss)......................-0.3V até 14V
V. max. nos demais pinos (em relação ao Vss) ........-0.3V até (Vdd + 0.3V)
Dissipação máxima de energia..........................................................800 mW
Corrente máxima de saída no pino Vss..............................................300 mA
Corrente máxima de entrada no pino Vdd......................................... 250 mA
Corrente máxima de entrada de um pino (quando em Vss).................25 mA
Corrente máxima de saída de um pino (quando em Vdd)................... 25 mA
Corrente máxima de entrada do PORTA .......................................... 200 mA
Corrente máxima de saída do PORTA ............................................. 200 mA
Corrente máxima de entrada do PORTB .......................................... 200 mA
Corrente máxima de saída do PORTB ............................................. 200 mA
7
Upgrade PIC16F84A p/ PIC16F62x
4.
McLab1
Memória de dados (página16)
A memória de dados da família F62x é bem diferente da do F84. As
principais diferenças a serem consideradas para a migração (F84 -> F62x)
são:
• Posição inicial da memória de dados de uso geral: de 0x0C para
0x20;
• Posição dos endereços dos SFR´s relacionados com a EEPROM:
• EEDATA: de 0x08 para 0x9A;
• EEADR: de 0x09 para 0x9B;
• EECON1: de 0x88 para 0x9C;
• EECON2: de 0x89 para 0x9D;
• Vale observar também que a RAM para estes modelos aumentou
de 68 para 225 bytes.
• A EEPROM aumentou de 64 para 128 bytes.
8
Upgrade PIC16F84A p/ PIC16F62x
McLab1
9
Upgrade PIC16F84A p/ PIC16F62x
5.
McLab1
Memória de programa (p.15 do livro)
O importante a observar é que o modelo 16F627 possui o mesmo
tamanho de memória de programa que o 16F84, isto é, 1K. Já o 16F628
possui o dobro de memória: 2K. Isto possibilita que qualquer um dois
possa ser utilizado no lugar do 16F84.
5.1.
Convertendo os programas
Para que os programas desenvolvidos para 16F84 possam ser utilizados
na família 16F62x é importante observar os seguintes pontos para a
conversão de qualquer programa:
Sempre altere o modelo de PIC no projeto em uso. Para
isso, utilize a opção Edit Project, do menu Project.
Reposicione a localização do bloco de variáveis. Para
isso, altere a linha CBLOCK 0X0C para CBLOCK 0X20.
Esta linha está no início de todo programa e exemplo do
livro, no bloco Variáveis.
substituir o arquivo de include no bloco Arquivos de
Definições, de <16F84.INC> para <16F627.INC> ou
<16F628.INC>.
10
McLab1
Upgrade PIC16F84A p/ PIC16F62x
Na rotina de inicialização do programa (INICIO), devem
ser inseridas as seguintes linhas ao final (após BANK0):
MOVLW B´00000111´
MOVWF CMCON
internos
;
desliga
os
comparadores
Tomar cuidado com as rotinas de escrita e leitura da EEPROM,
pois os registradores EEDATA e EEADR encontram-se no Banco
1 e não mais no banco 0.
Nunca gravar o microcontrolador com a opção de oscilador interno.
Nunca gravar o microcontrolador com a opção WDT ON. Se esta
função não estiver prevista em software.
6.
Convertendo os
Programas p/ a placa
McLab1
Para que os programas desenvolvidos para o PIC16F84 possam ser
utilizados na família PIC16F62x na placa McLab 1 é importante
observar os seguintes pontos:
Gravar o microcontrolador com a opção Brown-Out Reset (bor)
ligada.
Gravar o microcontrolador com a opção Power-on Reset (por)
ligada.
11
Upgrade PIC16F84A p/ PIC16F62x
McLab1
Gravar o microcontrolador com a opção Watchdog Timer
(WDT) desligada.
Nunca gravar o microcontrolador com a opção Low Voltage
Programer (LVP) ligada, pois o pino de I/O RA5/MCLR será
gravado com a opção de MCLR_ON. (tome cuidado com esta
opção).
Utilize a seguinte linha de comando para o config.
_CONFIG_BODEN_ON &_CP_OFF &_PWRTE_ON &_WDT_OFF
&_LVP_OFF &_MCLRE_ON & _XT _ OSC.
12
Upgrade PIC16F84A p/ PIC16F62x
7.
McLab1
Rotinas para EEPROM corrigidas
7.1.
Escrita (página 118)
ESCR_E2PROM
BANK1
MOVWF EEDATA
EM W
BCF
INTCON,GIE
INTERRUPÇÕES
BSF
EECON1,WREN
MOVLW 0X55
ESCRITA
MOVWF EECON2
OBRIGATÓRIO)
MOVLW 0XAA
MOVWF EECON2
BSF
EECON1,WR
BCF
EECON1,WREN
BTFSC EECON1,WR
GOTO $-1
AGUARDANDO
BANK0
BSF
INTCON,GIE
INTERRUPÇÕES NOVAMENTE
RETURN
7.1.1. Leitura (página 119)
LE_E2PROM
BANK1
BSF
EECON1,RD
NOP
MOVF
EEDATA,W
BANK0
RETURN
;BANCO 1
;ACERTA DADO
PASSADO
;DESABILITA
;HABILITA ESCRITA
;INICIALIZAÇÃO DA
;(PROCEDIMENTO
;INICIA ESCRITA
;NÃO, ACABOU ESCRITA?
;NÃO, CONTINUA
;SIM, BANCO 0
;HABILITA
;RETORNA
;BANCO 1
;PREPARA LEITURA
;COLOCA DADO EM W
;BANCO 0
;RETORNA
7.1.2. Exemplo (página 123)
13
Upgrade PIC16F84A p/ PIC16F62x
McLab1
;* * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * *
;*
ROTINA DE LEITURA DO VALOR DO CONTADOR *
;* * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * *
; ESTA ROTINA LÊ O VALOR DA MEMÓRIA E COLOCA O
RESULTADO NA
; VARIÁVEL "CONTADOR".
LE_CONTA
MOVLW POS_MEM
BANK1
;MUDA PARA BANCO 1
MOVWF EEADR
;ACERTA O ENDEREÇO
PARA LEITURA
BANK0
;VOLTA PARA BANCO 0
CALL LE_E2PROM
;EFETUA A LEITURA DA
EEPROM
MOVWF CONTADOR
;ATUALIZA O CONTADOR
RETURN
;RETORNA
;* * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * *
;*
ROTINA DE ESCRITA DO VALOR DO CONTADOR *
;* * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * *
; ESTA ROTINA ESCREVE O VALOR ATUAL DE CONTADOR NA
MEMÓRIA EEPROM
ESCR_CONTA
MOVLW POS_MEM
BANK1
;MUDA PARA BANCO 1
MOVWF EEADR
;ACERTA O ENDEREÇO
PARA LEITURA
BANK0
;VOLTA PARA BANCO 0
MOVF CONTADOR,W
;COLOCA CONTADOR EM W
CALL ESCR_E2PROM
;EFETUA A ESCRITA
EEPROM
RETURN
;RETORNA
14
Upgrade PIC16F84A p/ PIC16F62x
8.
McLab1
Gravação in-circuit
A placa McLab1 é compatível com os gravadores McFlash e McPlus, de forma que
o microcontrolador não precisa ser retirado da placa para ser gravado. O
McFlash/McPlus deve ser ligado no conector CN3 e somente a Placa McLab1 deve
estar alimentada, fornecendo energia para o gravador.
15