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