Registrador OSCCAL no 16F676

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Registrador OSCCAL no 16F676

Mensagempor Adauto sampaio » 20 Abr 2007 10:25

Bom dia. Estou trabalhando com um 16F676, e quando gravo, aparece uma msg dizendo que a memória de calibração não está programada. Ele grava tudo certo (apesar de ainda ter que acertar o programa). Sei que tem a ver com a calibração do oscilador interno, então como faço para acertar isso?
Obridago e abraços a todos!!!
É tudo uma questão de sorte; pergunte a qualquer perdedor
Adauto sampaio
Byte
 
Mensagens: 123
Registrado em: 07 Jan 2007 16:02

Mensagempor zielpunkt » 20 Abr 2007 14:11

Vc poderia postar literalmente o cabeçalho do seu código (fuses, processor, includes, etc) e a mensagem do MPLAB que aparece? Assim fica mais fácil de identificar o problema, ok.

Abço.
"Talento é mais barato que sal. O que separa a pessoa talentosa da bem-sucedida é muito trabalho duro." [ Stephen King ]
zielpunkt
Byte
 
Mensagens: 376
Registrado em: 12 Out 2006 11:36
Localização: Sao Paulo - SP

Mensagempor Adauto sampaio » 20 Abr 2007 14:58

Boa tarde Zielpunkt. Aqui vai o cabeçalho:

ERRORLEVEL -302
__CONFIG _INTRC_OSC_NOCLKOUT & _MCLRE_OFF & _WDT_ON & _PWRTE_ON & _CP_OFF & _BODEN_OFF

#include <p16f676.inc>

Depois que termina a programação e vai para a verificação (verifying), aparece uma janela escrito na barra de cima:

Calybration memory not programmed

E no centro da janela:

Calibration memory is already programmed. seguido de uma tecla OK.
O programa funciona, mas quero saber o por que da mensagem, o que preciso fazer. Ah, detalhe, uso o McFlash direto pelo MpLab.
Abraços!!!




zielpunkt escreveu:Vc poderia postar literalmente o cabeçalho do seu código (fuses, processor, includes, etc) e a mensagem do MPLAB que aparece? Assim fica mais fácil de identificar o problema, ok.

Abço.
É tudo uma questão de sorte; pergunte a qualquer perdedor
Adauto sampaio
Byte
 
Mensagens: 123
Registrado em: 07 Jan 2007 16:02

Mensagempor zielpunkt » 20 Abr 2007 15:44

Ele está te informando que já gravou o OSCCAL com o valor armazenado no ultimo endereço do mcu, que tá tudo bem, mas que vc precisa dar OK pra ele ficar feliz :) . (aperta o OK senão dá caca, pq ele não conclui o procedimento de gravação). Just It! É esquisito, mas é assim pra alguns micros da linha - conforme-se. Se algum gênio tiver alguma teoria à respeito do por que disso, ela será bem vinda...

É isso
"Talento é mais barato que sal. O que separa a pessoa talentosa da bem-sucedida é muito trabalho duro." [ Stephen King ]
zielpunkt
Byte
 
Mensagens: 376
Registrado em: 12 Out 2006 11:36
Localização: Sao Paulo - SP

Mensagempor Adauto sampaio » 20 Abr 2007 16:13

Valeu Zielpunkt, tava achando que tinha alguma caca por lá, mas o programa funcionou perfeito. Brigadão.
Abraços
É tudo uma questão de sorte; pergunte a qualquer perdedor
Adauto sampaio
Byte
 
Mensagens: 123
Registrado em: 07 Jan 2007 16:02

Mensagempor Rota » 20 Abr 2007 20:04

Eu fiz o seguinte teste:

li o ultimo endereço de um micro 16f675 novo, anotei esse valor para não perder a calibração, alterei esse valor, mandei gravar, depois de gravado li novamente, e o valor voltou ao que veio de fabrica, ou seja, mesmo se vc apagar o endereço, ele ve o melhor valor para o oscilador e escreve no ultimo endereço.

acho que é isso
Rota
Byte
 
Mensagens: 116
Registrado em: 16 Nov 2006 21:29

Mensagempor zielpunkt » 20 Abr 2007 20:15

Meio difícil, hein, Rota. Nunca tentei alterar o OSCCAL, mas qual foi esse procedimento de apagar e regravar um novo valor no OSCCAL, que não regravou? Posta o que vc fez e o seu código ai pra gente ver, ok.

Abço.
"Talento é mais barato que sal. O que separa a pessoa talentosa da bem-sucedida é muito trabalho duro." [ Stephen King ]
zielpunkt
Byte
 
Mensagens: 376
Registrado em: 12 Out 2006 11:36
Localização: Sao Paulo - SP

Mensagempor otavio luiz » 21 Abr 2007 09:06

o gravador só ira gravar nessa posição se existir um valor, se voce colocar na ultima posição da memória e mandar ele gravar ele grava e apaga o que estava la e não existe nenhum método de auto recuperação, voce tem que fazer na mão mesmo depois.
Lembre-se, zona de Fresnel não é nenhuma franquia de puteiro.
Avatar do usuário
otavio luiz
Byte
 
Mensagens: 257
Registrado em: 11 Out 2006 13:56
Localização: Barretos - SP, terra de Peão

Mensagempor Rota » 23 Abr 2007 00:29

gente, pra variar falei merd.....


Eu tambem tava encucado com essa mensagem, como a mensagem tinha a palavra calibration, eu ja pensei, caracas, se eu por ventura mudar acidentalmente o ultimo valor da memoria (que contem o valor para calibrar o oscilador interno), o mplab acerta novamente, que
maravilha.
Então eu mudava o valor (dentro do mplab: view-> program memory), mandava gravar, depois lia, e para o meu espanto, o valor voltava para o que veio de fabrica!!! que chique o compilador calibrava o micro e escrevia no ultimo endereço.

Hoje fui ver direito, não foi o mplab que calibrou o micro e escreveu no ultimo endereço, é que o MPLAB não deixa escrever nesse endereço, justamente para não perder o valor da calibragem do pic.

Se voce for em programmer-> settings->memory rangers desmarcar auto select memory areas and range e tentar colocar no endereço final o valor 03ff, o compilador não aceitara, só aceitara até 03fe.


Agora, se voce editar o arquivo pic12f675 (que esta dentro da pasta device), e tirar essa linha:
calmem (region=0x3FF-0x3FF)

ai sim, voce pode alterar o valor que esta no endereço 03ff que o mplab ira gravar no micro o valor que voce colocar la. (não aparece mais a
mensagem)


zielpunkt, eu não não usei nenhuma linguagem para fazer esse teste, eu alterei os valores dentro do mplab. Quando voce escreveu :
"Ele está te informando que já gravou o OSCCAL com o valor armazenado no ultimo endereço do mcu"
está correto?? pois o osscal esta na ram, o mplab não iria escrever na ram do pic, correto?

então resumindo:
no ultimo endereço da memoria de programa tem o comando RETLW XX aonde XX é o valor da calibragem,

na inicialização do micro tem esse bloco de comando:

call 0x3FF ; retrieve factory calibration value
bsf STATUS,RP0 ; set file register bank to 1
movwf OSCCAL ; update register with factory cal value
bcf STATUS,RP0

ele chama a subrotina em 3ff, que dela retorna em W o valor da calibragem e move para o registro OSSCAL.

a mensagem que o mplab apresenta, é informando que a memoria de programa não foi calibrada, ou seja, o programa do pic que esta na memoria do pc, foi transferido para o microcontrolador, menos o ultimo
endereço, que contem o valor de fabrica, e que o micro ja esta calibrado.


é isso mesmo??? o falei mais merd.....


marcelo
Rota
Byte
 
Mensagens: 116
Registrado em: 16 Nov 2006 21:29

Mensagempor zielpunkt » 23 Abr 2007 12:28

Rota,

Não é questão de falar m**** ou não, isso é bobagem. A questão é apenas de conceito. O que eu quis dizer de forma simples é que o MPLAB informa que recuperou, em tempo de compilação, e carregou, durante a gravação, o registrador OSCCAL com o valor que encontrou no endereço 0X03FF. Se vc quiser (ou precisar) mudar o valor de calibragem do oscilador interno que vem de fabrica pode escrever:

Código: Selecionar todos
ORG 0x03FF ; endereço do valor default (fábrica)
DATA 0x058 ; exemplo de novo valor desejado, que substituirá o default


...antes de executar as linhas de código que fazem a calibração. Se quiser apenas alterar para um novo valor, sem alterar o default, pode escrever:

Código: Selecionar todos
MOVLW 0x06A;   exemplo de novo valor para o oscilador
MOVWF OSCCAL;  carrega o OSCCAL com esse valor, e só.


..sem executar mais nenhum código de calibragem. Escrever valores de calibragem no OSCCAL é comum quando se utilizam os chips de 'janela' (apagáveis por UV) tipo 12C508, etc, que possuem oscilador interno e que vc deve primeiramente ler e anotar aquele valor para então inserir no código como está no ultimo exemplo. Se não me engano, alguns compiladores alternativos não garantiam a preservação desse valor mesmo para mcu com flash, e ai vc tinha que fazer o mesmo procedimento dos de 'janela', como já expliquei.

Abço.
"Talento é mais barato que sal. O que separa a pessoa talentosa da bem-sucedida é muito trabalho duro." [ Stephen King ]
zielpunkt
Byte
 
Mensagens: 376
Registrado em: 12 Out 2006 11:36
Localização: Sao Paulo - SP

Mensagempor Andre Rasminio » 25 Abr 2007 18:59

Pelo que conheço deste micro ele tem 6 bits de calibração dentro do registro OSCCAL. A frequencia interna pode variar em torno de 4MHz, pois depende da temperatura de operação de também da alimentação.
Eu já trabalhei com este pic e quando se calibra, a frequencia crava em 4MHz.
Andre Rasminio
Bit
 
Mensagens: 26
Registrado em: 14 Abr 2007 17:30
Localização: Vale da Eletrônica


Voltar para PIC

Quem está online

Usuários navegando neste fórum: Bing [Bot] e 1 visitante

x