Ir ao conteúdo
  • Cadastre-se

Oscilador do PIC


matheus21

Posts recomendados

Ola pessoal, eu to aprendendo a usar microcontroladores PIC mas descobri que se pode usar tanto interno quanto externo, existe alguma diferença? alguma desvantagem usar o interno, eu não entendo e porque na internet tem gente que usa interno e gente que usa externo.... desde já agradeço

Abraço, Matheus de Paula Medeiros

Link para o comentário
Compartilhar em outros sites

depende muito do pic.

Com o oscilador interno num 12F por exemplo, você estará economizando 1 ou 2 pinos que você poderia estar usando como entrada e/ou saída.

No caso de pics 18F e outros, geralmente você usa o oscilador interno por várias razões, as vezes você precisa pegar e enviar o sinal do seu clock para fazer uma comunicação síncrona ou processos síncronos com vários outros microcontroladores ou prefiréricos... ou então, dependendo do microcontrolador (os mais avançados agora) tem as suas saídas que permitem ser entradas de dados ou clock de oscilador externo!

Outros casos é... oscilador interno é menos sucetivel a ruídos, que se forem induzidos no PIC irão causar crash e restart do programa. Usa-se oscilador externo quando precisa de velocidade de processamento... é bem isso... você escolhe o que quer e como quer... se precisa de um oscilador externo, então use, se a velocidade não é necessidade, usa o interno mesmo, se o pic não tem oscilador interno e você precisa gastar pouco dinheiro e usar o mínimo possivel de componentes, use um oscilador RC, etc...

Link para o comentário
Compartilhar em outros sites

Caros Amigos Matheus21 e Lucas Scoppio, td bem?

Amigo Lucas, concordo em 100% com o que você acabou de comentar a respeito do Clock do PIC, e a pergunta do amigo Matheus caiu numa boa hora!;) Veja porque:

Eu acabei de comprar o livro do Fábio Pereira - Microcontroladores PIC - Programação em C - 7a Edição. e agora começando a ler o livro, bem no início do livro, antes do capítulo 1 inclusive, o autor dá uma nota a respeito do Clock do PIC que até mesmo eu (não sou expert, senão não teria comprado o Livro que não foi barato! rss), fiquei impressionado!

Veja o que diz exatamente nestas palavras, apenas transcrevi o que está no livro:

É possível utilizar o oscilador interno disponível nos PICs 16F62x, mas devido ao fato de os mesmo não possuírem uma calibração confiável, optamos por utilizar um cristal externo, já que as rotinas de comunicação serial são muito afetadas pela imprecisão do Clock.
E agora? Em que devemos ter base? Isso porque sempre acreditei que o oscilador interno dos PICs fossem muito mais "precisos" que qualquer um externo além de como muito bem falado por você Lucas, usando o clock interno ainda "salvamos" alguns pinos do MCU e "IMUNIZAMOS RUÍDOS" externos que porventura pudessem "entrar" no MCU pelas trilhas do cristal externo, mas agora, com esse tipo de informação neste livro, e de um autor que é "conceituado" em matéria de livros a respeito de programação para PICs...sinceramente me desnorteou essa informação que li. O que você acha?

Grande Abraço a todos,

R.Costa.

Link para o comentário
Compartilhar em outros sites

E agora? Em que devemos ter base? Isso porque sempre acreditei que o oscilador interno dos PICs fossem muito mais "precisos" que qualquer um externo além de como muito bem falado por você Lucas, usando o clock interno ainda "salvamos" alguns pinos do MCU e "IMUNIZAMOS RUÍDOS" externos que porventura pudessem "entrar" no MCU pelas trilhas do cristal externo, mas agora, com esse tipo de informação neste livro, e de um autor que é "conceituado" em matéria de livros a respeito de programação para PICs...sinceramente me desnorteou essa informação que li. O que você acha?

Grande Abraço a todos,

R.Costa.

Comunicação assíncrona você pode sim muito bem usar o oscilador interno, ele não é tão preciso como gostaríamos (é só mandar multiplexar o clock para um pino externo, tem isso nos fuses e fazer a verificação você mesmo) mas você pode muito bem gerar você mesmo o seu clock a partir do pic, ou então, se for comunicação assíncrona, enviar bits de calibração de tempos em tempos...

Sempre dá-se um jeito, eu criei a minha própria rotina de comunicação SPI que funciona perfeitamente com todos os componentes Microchips que ja testei e entre pics também (um pic 18F452 rodando a 20MHz comunicando com um pic 12F627 rodando a 4MHz do osc interno!)

Eu particularmente não tenho tanta desconfiança do oscilador interno dos pics, eles são baseados em um clock RC que conta com um divisor que vem calibrado de fábrica com o valor correto para entrar nos 4MHz... mesmo não sendo muito preciso, comunicação I2C e SPI, RS-232, todas elas funcionam muito bem... a SPI tem clock próprio, a I2C tem o sinal de calibração, e o RS-232 não é baseado em tempo, mas roda assincrono mesmo assim... tem que pesquisar MUITO os protocolos de comunicação para entender deles... é meio chato... o 1-wire é o pior de todos(esse é baseado em temporização)... um saco literalmente!

Mas existe uma boa diferença entre algo "não ser muito confiável" e "não funcionar". O Osc interno funciona, porém não faça nada que precise de TANTA precisão a menos que tenha passado por um debug de pelo menos 12h rodando a full-capacity (amigo meu fez um projeto que a cada 8h a comunicação RS-232 dava pau por causa de um pequeno erro de sincronia entre os componentes.)

Link para o comentário
Compartilhar em outros sites

Lucas,

Então você "concorda" e "discorda" com o autor do livro que citei correto?

Te agradeço muito a atenção dispensada e o show de informações que você postou a respeito dos tipos de comunicações seriais que podemos fazer com o PIC.

Nada melhor que a prática pra dizer não é? ;)

Eu ainda estou bem por fora do assunto...tanto é que comecei a ler agora o livro pra aprender definitivamente algo de C, uma vez que já vi o Assembly, já vi o BASIC mas muito honestamente, como já tinha visto e estudado os principios gerais da linguagem C quando estava na faculdade, me vi agora na "vontade" de "meter as caras" mas parando definitivamente na Linguagem C! Até mesmo porque como sabemos né...C é C em qualquer lugar...não existem muitas variações mesmo que um dia eu resolva programar os AVR invés dos PICs....

Meu amigo, obrigado mesmo. E é bom saber que você já é "crânio" nessas comunicações seriais do PIC...rss...porque assim já sei a quem pedir uma "lanterna" ou um "Holofote" daqui pra frente! ;)

Grande Abraço,

R.Costa.

Link para o comentário
Compartilhar em outros sites

Cranio em comunicação nada... só sei mexer com RS-232 e SPI mesmo e sem checksum ou qualquer tipo de verificação de dados ehuhuehuehuehu

Eu realmente concordo e discordo do cara, concordo quando ele diz que não é tão confiável a calibração interna, mas discordo do fato dele usar isso como desculpa para meter um cristal alí.

Link para o comentário
Compartilhar em outros sites

Hehehe...Tá certo!

Putz...e tu ainda diz que "SÓ" sabe sobre RS-232 e SPI?! hehehe

Então já dá pra ajudar mais que 50% nesses casos! ;)

P.S.: Acho que o autor pegou meio pesado nessa afirmação dele...Será mesmo que a Microchip inventaria de colocar a reputação dela em risco produzindo um dos MCUs mais vendidos do mundo com um oscilador "mau das pernas"?! Enfim, acho que essa "imprecisão" comentada sobre o autor do livro fica apenas pra 1% dos casos...

Abração meu caro.

R.Costa.

Link para o comentário
Compartilhar em outros sites

olá amigos, permitam-me entrar nesta conversa...

Eu concordo com o Autor do livro sitado pelo digam AMD, pois quando o autor disse que o oscilador interno do PIC não tem uma boa calibração, acho eu que, ele estava se referindo mais a constacia do sinal.

Quando a gente usa um oscilador extermo, colocamos Capacitores filtrando o sinal do cristal, assim se a fonte de alimentação oscilar, os capacitores podem suprir essa definiencia, mantendo o cristal oscilando de um modo mais preciso.

Mas quando usamos o Oscilador Interno, esses capacotores de filtro não existem, e se a fonte oscilar o sinal do oscialador ficará compromentido,o que pode prejudicar alguns perifericos do PIC. Claro que aqui estamos falando de situações extremas, mas que podem acontecer.

Alias, os capacitores são a pedra no sapato da microeletronica, pois são componentes que, graças as suas propriedades fisicas, não podem ser miniaturizados...

Link para o comentário
Compartilhar em outros sites

Amigo Cacio, fique a vontade! ;)

E pensando nessa oscilacao provinda da fonte de alimentação, realmente o oscilador interno do PIC, ao meu ver, poderia mesmo ser comprometido. Mas precisamos saber tb que caso exista uma "forte" oscilacao iniciando pela fonte de alimentacao, acredito que ate mesmo os dois capacitores que fazem o cristal externo oscilar, poderiam "nao dar conta do recado", nao é mesmo?

Amigo Lucas, você poderia me explicar o que significa quando você diz:

(LEMBRE DE NUNCA PERDER O VALOR DE CALIBRAÇÃO DE SEU PIC!!!)

Te pergunto porque é a segunda vez que leio algo do tipo, mas não sei o porque. :(

Amigo Matheus,

Pelo visto você quer programar em BASIC né?

Eu gosto muito do compilador da mikroeletronica, é bem bom...rs mas não esquece também que um bom compilador e que pode simular as coisas, com leds, LCD, etc...é o PIC SIMULATOR IDE...já usei, tenho instalado e é bem prático também.

Grande Abraço pessoal,

R.Costa.

Link para o comentário
Compartilhar em outros sites

@Cacio:

Sou obrigado a discordar de você, o oscilador interno do pic é um oscilador RC de 4MHZ (não sei a faixa de falha de frequência), porém ele é muito utilizado exatamente pela CONSTÂNCIA dele... quando dizemos que ele não é preciso, não quer dizer que ele varie com o tempo ou em relação à fonte, muito pelo contrário, ele é um sistema isolado e praticamente imune a efeitos elétromagnéticos (até o possivel né...), tanto que caso você tenha que colocar seu microcontrolador em uma área muito ativa eletromagneticamente, o ideal, para manter a constância da frequencia e impedir que o mesmo reinicie por causa do clock monitor, usasse o clock interno.

@digam

O seguinte, os pics com osc interno tem um divisor de clock interno ou então um potenciometro digital, eu não me lembro agora, que faz a calibração do clock RC interno. Porém esse componente tem um "valor de calibração" que nada mais é que a posição inicial dele dada por fábrica... Esse valor se encontra no próprio pic, na memória dele, então se você irá grava-lo usando um dos gravadores - winpic, icprog - o melhor é ler primeiro a memória dele e então escrever no pic o número hexa de dois digitos que aparece na memória (se ele não for virgem, é o ÚLTIMO byte na memória dele!). Esse código deve ser inserido MANUALMENTE no pic, tem alguns documentos que ensinam a fazer isso:

Se você usa o mplab para gravar, usando CCS ou algum outro IDE que funciona com o mplab, não corre esse risco, pois esses programas tem uma header que ja indica a posição do código de calibração e o coloca corretamente no código.

Link para o comentário
Compartilhar em outros sites

@ Lucas Scoppio:

Eu discordo da sua discordancia:D. Exatamente por ser um Oscilador RC, ele está totalmente dependente da tensão da fonte de alimentação. Num oscilador RC (resistor capacitor) o resistor limita a tensão que chega ao capacitor e com isso regula o tempo de carga e descarga do mesmo. Se a tensão da fonte de alimentação variar, este tempo de carga e descarga vai variar tambem.

Acho eu que, é foi este ponto que o autor do livro observou para dizer que o oscilador interno não é muito confiavel. Afinal, ele é sim um sistema isolado e quase imune a eletromagnetismo, mas é totalmente dependente de uma tensão constante e fixa para funcionar.

Então, uma bateria em 'fim de vida', ou uma fonte AC/DC 'meia boca' pode prejudicar o sistema, pelo simples fato de variarem a tensão de saida, mesmo que em poucos mV. :lol:

Link para o comentário
Compartilhar em outros sites

Caro Lucas,

Obrigado pela explicação sobre "gravar a calibração do PIC"!

Mas agora isso até me "assustou", por que? porque eu já fiz um projetinho aqui, da luminaria RGB com o PIC12F675 e utilizei o oscilador interno do PIC (4MHz)..okay, até aí tudo bem, mas a situação é que: até finalizar esse projetinho da luminaria, eu gravei e regravei o PIC sem brincadeira pra mais de 50 vezes facilmente!!:D E aí eu te pergunto, e claro que você não tem obrigação alguma de responder, mas vai lá: Pra finalizar eu fiz o meu programa em BASIC e compilei usando o mikroBASIC da mikroe! Mas aí você me pergunta se eu gravei qualquer numero de calibracao do PIC? NÃO! Se eu dei um "READ" na memoria do PIC antes de fazer todos esses testes? NÃO! (rsss...) mas por fim, a minha luminariazinha esta funcionando até agora numa boa...Enfim, será que aconteceu o que pra estar funcionando okay? Ou como uma luminaria nao é um relogio, eu talvez tenha "descalibrado" o PIC mas nem percebo porque isso nao é um relogio?!:confused: Sei lá...eu não sabia disso. Outra coisa é: Como disse no inicio desse topico, comprei um livro de programacao C e vou aprender agora. Vou então usar o compilador da mikroe - mikroC. O que eu tenho que fazer então quando for fazer um projeto (por exemplo estou com um PIC16F628A que esta pronto pra ser queimado para algum projetinho de testes), como devo proceder meu amigo? Me dá um help ai se puder!;)

Agora, quanto às concordancias e discordancias entre vocês, pessoal, eu não posso ficar opinando no que eu não tenho pleno conhecimento, mas eu perguntaria a vocês: Se o oscilador interno do PIC é completamente dependente da tensão constante fornecida pela fonte de alimentacao, porque será que o PIC pode trabalhar com uma "variada" faixa de tensoes de alimentacao? (entende-se por variadas tensoes como de 2,5 (sei la) à 5VCC) e mesmo assim manter o oscilador em funcionamento?!:confused:

Esse topico tá indo de vento em popa! Muito bom "discutir" a respeito de um assunto em que alguns concordam outros discordam e outros nao entendem (hehehehe...EU - brincadeira). Isso significa nada mais que: Ampliar nossos conhecimentos juntos! ;)

Um abração pra vocês.

R.Costa.

Link para o comentário
Compartilhar em outros sites

o oscilador interno foi feito para que o pic possa trabalhar com baixas voltagens... se você quer ligar o seu 18F4550 em 3,2V você não pode colocar o oscilador de 40MHz, pois mesmo que coloque, não irá funcionar corretamente...

Acredito que os Mikroe tenham o mesmo sistema da CCS de acessar automaticamente o valor de calibração (Sem o valor de calibração o pic não funciona pois ele considera o ultimo bit do código como sendo o valor de calibração, logo ele fica descalibrado e o código corrompido pois ele não identifica mais o checksum), o código é bem simples, nada que deixe de cabelo em pé.

Link para o comentário
Compartilhar em outros sites

Meu amigo Lucas, Então está Okay !

Já que como eu disse, gravei e regravei uma "porrada" de vezes e no final tive meu projeto funcionando como eu queria...então isso mostra que o compilador da mikroe nao "destroi" o PIC caso a gente nao grave o valor de calibracao!

Menos mal...

Quanto ao oscilador, tá okay tambem...já mostrou que se trabalhar com Low Voltage no PIC e quiser utilizar o oscilador interno na frequencia maxima, não vai dar muito certo.

Obrigado pelas explicações.

Um abração.

R.Costa.

Link para o comentário
Compartilhar em outros sites

Opa e ae galera, não querendo me intrometer, mas...

O compilador não tem nada a ver com o valor de calibragem da PIC, e sim o gravador (o software que grava). Com o pouco te experiencia que tenho com PICs, notei que meu gravador apaga tudo da PIC antes de gravar o programa, inclusive o valor de calibragem que vem de fábrica ¬¬'. Constatei isso pois quando o gravador IC-Prog me pergunta 'Não foi encontrado nenhum valor de calibragem blablabla Deseja usar xxx?', só pode ser porque ele deletou o valor mesmo. Me recomendaram (li em alguns sites de que não me recordo o link) de que não era bom aperta SIM. Veja bem, não tem sentido algum isso, mas minhas pics (como o digam AMD falou também) foram gravadas várias vezes e o programa sempre funcionou ok.

Sobre o oscilador de pic, tem que ler no data sheet ou no site da microchip qual é a frequencia máxima que tal opera SOB TAL tensão.

Como foi tido acima, a PIC não vai funcionar corretamente se, por exemplo, a frequencia máxima dela for 4Mhz, e você quiser usar essa frequencia de 4Mhz com tensão mínima de operação (3V em vez da ideal 5V, exemplo).

Abração!

Link para o comentário
Compartilhar em outros sites

Xanok, tem sim a ver o compilador, pois muitos compiladores são também programas para gravação do microcontrolador, e em outros casos, a própria header que o compilador tem irá automaticamente identificar o valor de calibração do microcontrolador durante a gravação.

//////// Standard Header file for the PIC12F675 device ////////////////

#device PIC12F675

#nolist

//////// Program memory: 1024x14 Data RAM: 64 Stack: 8

//////// I/O: 6 Analog Pins: 4

//////// Data EEPROM: 128

//////// C Scratch area: 20 ID Location: 2000

//////// Oscilator Calibration Address: 90

//////// Fuses: LP,XT,HS,EC_IO,NOWDT,WDT,CPD,NOCPD,PROTECT,NOPROTECT,NOMCLR

//////// Fuses: MCLR,PUT,NOPUT,INTRC_IO,INTRC,RC_IO,RC,BROWNOUT,NOBROWNOUT

//////// Fuses: BANDGAP_HIGH,BANDGAP_LOW

Claro, isso é apenas um comentário na header, porém, o Mplab sabe lidar com esse pic especificamente na hora da gravação, e se você mandar ele apagar o PIC ele mantém o valor de calibração.

Link para o comentário
Compartilhar em outros sites

Tem certeza que isso é o valor para calibração do oscilador? Pelo que sei, isso ai é só para a frequencia que o PIC vai utilizar... Veja bem, o compilador não vai escrever em cima do valor de calibração e sim, dizer aonde será o endereço do valor de calibração.

Link para o comentário
Compartilhar em outros sites

Opa...

Calibração do oscilador é a exatidão do oscilador (a margem de erro, que pode ser vista no data sheet... algo como 0,1% de erro)

Endereço da calibração do oscilador é aonde fica armazenado o valor da calibração =P

Frequencia do oscilador... é qual será a frequencia definida para o PIC.

Abraços! =PPPP

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!