[Resolvido] PIC12C508A Configurar OSC

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Mensagempor Andre_Cruz » 05 Ago 2010 13:39

O valor da ultima posição de memória corresponde ao valor que deve ser carregado no registrador OSCCAL, para garantir que o PIC trabalhe a 4MHz.

Para fazer o PIC 12C508A rodar a 4 MHz, coloque ele no seu gravador, e leia a memória de programa dele, a ultima posição é o valor calibrado pela Microchip para o oscilador funcionar a 4MHz.

Faz esse isso, que é pra funcionar!

Abraço

André Cruz
Andre_Cruz
Word
 
Mensagens: 559
Registrado em: 03 Jan 2009 14:06

[Resolvido] PIC12C508A Configurar OSC

Mensagempor [Daniel] » 05 Ago 2010 15:04

Oi bom dia,

Alguém sabe como configurar o oscilador interno do PIC12C508A?

-Em linguagem Assembly

Parte do meu código:

Código: Selecionar todos
;*******************************************************
LIST p=12C508A
#INCLUDE "P12C508A.INC"
;*******************************************************
__CONFIG _MCLRE_OFF & _CP_OFF & _WDT_OFF & _IntRC_OSC
;*******************************************************
;MEMORIA DO PIC

;*******************************************************
;DEFINES ENTRADA E SAIDA

;*******************************************************
INICIO
   MOVLW   B'00000000'      ;CONFIGURACAO DO OSCILADOR INTERNO
   MOVWF   OSCCAL
   MOVLW   B'11111001'      ;CONFIGURACAO DOS PINOS ENTRADA/SAIDA
   TRIS    GPIO
   CLRF   GPIO
   GOTO   MAIN
;*******************************************************
MAIN
;PROGRAMA...
END
;*******************************************************


Como faço ele funcionar a 4mhz no RC interno? esta correto?

Obrigado
Editado pela última vez por [Daniel] em 06 Ago 2010 16:15, em um total de 1 vez.
Avatar do usuário
[Daniel]
Byte
 
Mensagens: 106
Registrado em: 18 Nov 2009 09:14

Mensagempor Djalma Toledo Rodrigues » 05 Ago 2010 16:01

Código: Selecionar todos
MOVLW   B'00000000'      ;CONFIGURACAO DO OSCILADOR INTERNO
   MOVWF   OSCCAL

OSCCAL é a calibragem da frequência do Oscilador RC e
não Configuração.

No Programa do Gravador é onde esta a seleção do Oscilador e
outros.

DJ
Avatar do usuário
Djalma Toledo Rodrigues
Dword
 
Mensagens: 2334
Registrado em: 03 Ago 2008 13:22

Mensagempor [Daniel] » 05 Ago 2010 16:06

Uhm, então esta linha do meu programa não esta fazendo nada além de não definir nenhuma alteração na calibragem?

Sabes como eu deveria proceder?

por exemplo qual o valor deve ser inserido e onde coloca-lo... pelo que estava vendo tenho que por algum valor na ultima linha do meu .hex, é isso?
Avatar do usuário
[Daniel]
Byte
 
Mensagens: 106
Registrado em: 18 Nov 2009 09:14

Mensagempor renatokodaira » 05 Ago 2010 17:24

Duas coisas:

- Pra selecionar ou configurar o uso do oscilador interno do 12c508, voce tem a linha __CONFIG onde voce estabelece IntRC_OSC o que estah correto. Outra forma pra fazer isso eh selecionar essa opçao quando for gravar o PIC, no programa que faz o controle do gravador (que voce pode modificar o que estabeleceu na linha __CONFIG).

- O 12C508A tem um valor de calibraçao que vem de fabrica e estah gravado na ultima posiçao de memoria. Nela tem uma instruçao MOVLW xx, onde xx eh o valor da calibraçao do oscilador interno. Se voce quiser que esse valor seja usado, basta colocar no começo do seu programa a instruçao
MOVWF OSCCAL que vai pegar o valor xx e usar no funcionamento do oscilador. Ao ligar o PIC, a instruçao MOVLW xx estah no vetor de reset e portanto eh executada toda vez que o PIC eh inicializado, como estah na ultima posiçao de memoria, o programa volta para o começo da memoria de programa e vai encontrar a sua instruçao MOVWF OSCCAL. Se voce nao quiser usar o valor da calibraçao, nao coloque essa instruçao no começo do programa. Se voce colocar (como fez) uma instruçao MOVLW 00, entao o oscilador vai usar o valor 0 como calibraçao do oscilador e muito provavelmente vai ter uma frequencia muito diferente de 4MHz (mas nao espere um valor muito preciso mesmo com o valor de calibraçao de fabrica). Para aplicaçoes nao sensiveis a temporizaçao precisa, seu codigo vai funcionar.
renatokodaira
Byte
 
Mensagens: 402
Registrado em: 11 Out 2006 15:15

Mensagempor [Daniel] » 06 Ago 2010 16:13

Então colegas, novas:

Fiz a leitura na ultima linha havia o valor C50 deixei assim, no programa somente deixei o Intrc_osc lá no _config gravei, deu um erro na gravação mas do mesmo modo funcionou.

Removi a linha MOVWF OSCCAL.

Muito obrigado pela ajuda, funcionou tudo certinho!
Avatar do usuário
[Daniel]
Byte
 
Mensagens: 106
Registrado em: 18 Nov 2009 09:14

Mensagempor Andre_Cruz » 06 Ago 2010 17:21

Daniel,

O valor de configuração do OSCCAL é de 8 bits, indo de 0x00 a 0xFF, geralmente é 0xFF ou 0xFD, não tem como ser 0xC50.

No datasheet do 12F675 tem um exemplo.

Código: Selecionar todos
    BSF        STATUS, RP0  ;SELECIONA BANCO 1
    CALL      3FFh               ;SALTA PARA A ULTIMA POSIÇÃO DA MEMÓRIA
    MOVWF   OSCCAL         ;CALIBRA O OSCILADOR INTERNO
    BCF        STATUS, RP0  ;SELECIONA BANCO 0


Abraço

André Cruz
Andre_Cruz
Word
 
Mensagens: 559
Registrado em: 03 Jan 2009 14:06

Mensagempor renatokodaira » 06 Ago 2010 18:11

Nao Andre, o 12C508A eh diferente do 12F675/629 com relaçao ao valor de calibraçao. Porque na ultima posiçao de memoria do 508 tem uma instruçao MOVLW xx enquanto que no 675 tem uma instruçao RETLW xx.

O valor de calibraçao de ambos eh de 6 (seis) bits, sendo posicionados do bit 7 ao bit 2 (portanto os valores de calibraçao variam de 4 em 4).

Como o opcode da instruçao MOVLW xx eh 1100 bbbb bbbb entao o digito hexadecimal mais significativo tem que ser "C" mesmo. Ou seja o PIC do Daniel tem valor de calibraçao $50 ou 0101 0000 onde somente 010100 eh usado.
renatokodaira
Byte
 
Mensagens: 402
Registrado em: 11 Out 2006 15:15

Mensagempor Andre_Cruz » 06 Ago 2010 22:34

Olá Renato, tudo bem ?

Pensei que a configuração do oscilador interno do 12C508 fosse igual a do 12F675, desculpa falha nossa rsrsrss

Valew pela dica

Abraço

André Cruz
Andre_Cruz
Word
 
Mensagens: 559
Registrado em: 03 Jan 2009 14:06

Mensagempor renatokodaira » 07 Ago 2010 09:28

Olá Renato, tudo bem ?

Pensei que a configuração do oscilador interno do 12C508 fosse igual a do 12F675, desculpa falha nossa rsrsrss

Valew pela dica

Abraço

André Cruz


Oi Andre !

Que eh isso, a culpa nao eh sua, eh da Microchip que fica mudando as coisas de modelo pra modelo, he he he. Precisamos tomar cuidado quando nos acostumamos com um modelo de PIC e passamos a usar outro modelo. Jah pastei por causa disso e mesmo assim esse problema sempre se repete.
Outra dica: sempre que vou usar um novo PIC12F629/675 eu leio o valor da calibraçao e anoto numa etiquetazinha grudada em cima ou embaixo do chip, porque esses valores sao apagaveis, e depois dah o maior trabalho pra se descobrir ou recalbrar o oscilador de novo.

abs
renatokodaira
Byte
 
Mensagens: 402
Registrado em: 11 Out 2006 15:15


Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x