Estou usando o PIC18F4680 e estou tendo problemas para executá-lo, formando uma fonte de clock externa de 40 MHz ou um cristal de 10 MHz no modo HSPLL. Usar cristal de 10 MHz no modo HS parece bom e cristal de 5 MHz no modo HSPLL também funciona bem.
O que acontece é que o PIC é iniciado, funciona por alguns segundos e, em seguida, é encerrado por um tempo e é iniciado novamente. O período total do ciclo é de cerca de 5 segundos, dos quais o PIC funciona pára de funcionar no início do segundo segundo.
Também notei que, às vezes, quando adiciono um capacitor descarregado grande o suficiente ao barramento de força da placa de ensaio, o PIC funcionará bem. O ponto interessante é que isso só acontece se eu adicionar o capacitor enquanto o PIC já estiver em execução. Se eu alimentar a placa de ensaio com o capacitor lá ou colocar um capacitor que não tenha sido completamente descarregado, o problema permanece.
Li em alguns sites que problemas semelhantes aos meus podem ocorrer devido ao aumento do consumo de energia do PIC em maior frequência e menor tensão operacional. Nesses casos, se houver uma queda de tensão curta na fonte de alimentação, é mais provável que eles atinjam a tensão operacional mais baixa do PIC nessa frequência, por isso é uma boa ideia ter capacitores adicionais na placa de ensaio para resolver esse problema. Desde a plena carga a 40 MHz, os usos circuito inteiro em torno de 64 mA, a minha primeira ideia era colocar um pouco de condensadores de tântalo na esperança de que eles seriam grandes o suficiente e têm ESR baixa o suficiente para resolver o problema. Um não ajudou e o segundo também não ajudou. Então eu adicionei um 100 μ Fcapacitor de alumínio e isso também não ajudou. Em seguida, adicionou-se uma condensador de alumínio ou nenhum efeito. No final, adicionei um capacitor eletrolítico de alumínio de 1 mF e, pela primeira vez, o circuito funcionou bem até desligar e ligar a energia. Devo também observar que, para fins de teste, estou usando Vcc de 5,5 V, que é a tensão nominal mais alta para este microcontrolador. Isso deve me deixar algum espaço até os 4,2 V, que são a tensão operacional mais baixa a 40 MHz
Em seguida, eu li que saídas às vezes flutuantes podem causar falhas, então eu coloquei alguns resistores pull-down em todos os pinos não utilizados e que não quer ajudar. Depois que eu li que, por vezes, poderia haver problemas se as entradas de oscilador estão flutuando, então eu tentei ligar-lhes para GND usando alguns 10 M ohms resistores e isso não ajudou.
Devido ao comprimento do fio que vai da saída do oscilador até a entrada do oscilador no PIC, eu esperava problemas com ele, mas não esperava problemas com o cristal de 10 MHz, que está muito próximo dos pinos do oscilador no PIC. Também com cristal, eu esperaria problemas no modo HS também, se a distorção do sinal do oscilador devido à placa de ensaio fosse o problema, mas no modo HS, o PIC funcionaria bem.
Normalmente, uso capacitores de 33 pF para os cristais, mas também tentei com 15 pF e não consegui detectar nenhuma alteração.
Devo também observar que este PIC possui monitor de relógio à prova de falhas e alternância de oscilador interno / externo. Tentei habilitar os dois, esperando que eles ao menos confirmassem que o problema está no oscilador, mas eles não ajudam no problema. Não há diferença se eles estão ligados ou desligados.
Também desabilitei para fins de teste o cronômetro do watchdog, redefinição de brown-out e redefinição de over / underflow da pilha. Eu acho que desliguei todas as fontes de redefinição para este chip. Além disso, o programa está em um loop infinito, por isso não está terminando.
O PCF8583 não apresenta problemas e continua a funcionar corretamente, mesmo quando o PIC está sendo redefinido, mas por outro lado, possui uma voltagem mínima muito menor.
Infelizmente, eu não tenho um osciloscópio, mas fiz alguns testes com uma placa de som (taxa de amostragem de 96 kHz) e notei que quando o RTC está ligado, há um ruído de 25 Hz na linha de energia. O programa que estou usando relata cerca de 300 mV pico a pico, mas não sei o quanto confiar e não sei se isso seria suficiente para causar problemas ao PIC. Quando tudo está desligado, o ruído é de cerca de 100 mV pico a pico, de modo que deve ficar bem.
Caso isso ajude, aqui está a imagem da própria placa de ensaio: (clique com o botão direito do mouse-> ver imagem em tamanho real)
Então, alguém tem alguma idéia do que está acontecendo aqui?
No final, eu poderia executar o PIC a 20 MHz, mas, se precisar de mais poder de processamento, gostaria de poder executá-lo a 40 MHz.
ATUALIZAR
Coloquei outro regulador na própria placa de ensaio e o ruído captado pela placa de som é muito menor agora (cerca de 50 mV pico a pico), mas não influenciou o problema principal.
fonte
Respostas:
Este é um conselho bastante antigo, e eu não sei se será relevante para o seu micro, mas há cerca de quatro anos eu fiz um projeto com um PIC18F que encontrou redefinições espúrias estranhas. Depois de ler o relatório e refazer minha memória, aqui está o que parece ter resolvido:
Você tem o
Low Voltage Programming Enable
bit de configuração ativado? O seuPGM
alfinete está ligadoPORTB
? Nesse caso, considere desabilitar as entradas digitaisLow Voltage Programming Enable
e asPort B A/D Enable
digitais ao redefinir. De acordo com o meu antigo relatório, o que estava acontecendo era que deixamosPORTB
flutuando enquanto eram entradas analógicas e acionamos oPGM
pino. Olhando para trás, não sei se esse diagnóstico estava correto, mas acabamos finalizando o projeto com sucesso, para que valha a pena tentar.fonte
Com uma configuração como essa, será quase impossível dizer exatamente o que está errado. O que podemos dizer, no entanto, é o que está errado. Há muitas coisas erradas, ou pelo menos não tão certas quanto estão. Qualquer uma dessas coisas pode ser a fonte real do seu problema, mas também pode exigir a combinação de problemas que, quando somados, igualam o problema que você está vendo.
A única maneira real de depurar isso é consertar tudo o que você sabe que está errado, independentemente de ser a arma de fumar ou não. Eventualmente, o problema será corrigido de uma maneira ou de outra.
Quando um MCU como este não está funcionando corretamente, você quase sempre precisa se concentrar no básico: Energia, Relógio e Redefinição. Com uma tábua de pão, todos os três são suspeitos!
O suspeito número 1 para mim é o relógio de 40 MHz. 40 MHz é bastante rápido para passar por um fio flutuando no ar. Também é rápido colocar uma tábua de pão, onde o "sistema de distribuição de sinal" não é realmente projetado para altas velocidades. Se este fosse um PCB, eu lhe diria para garantir que sua impedância de rastreamento seja consistente e para finalizar adequadamente seus sinais. Infelizmente você não pode realmente fazer isso em uma tábua de pão. A melhor coisa que posso dizer é manter os fios o mais curtos possível - e depois torná-los ainda mais curtos! Use um o-scope no sinal do relógio, sondado diretamente no pino PIC, com o fio GND da sonda também diretamente no pino GND mais próximo do PIC. Isso lhe dirá muito sobre o seu relógio.
(Tente emprestar um escopo O, se puder. Vai ser difícil depurar coisas sem um.)
O suspeito # 2 é poder. A energia também é um grande problema com as tábuas de pão, já que a indutância e a resistência do fio são relativamente altas. Aqui, novamente, mantenha os fios curtos. Também observo que você não possui tampas de desacoplamento no oscilador de 40 MHz. Para o OSC, eu usaria 0,1 uF e algo maior (4,7 uF a 100 uF) em paralelo. Seu PIC também pode usar algo maior em paralelo com os limites de 0,1 uF. Normalmente, as tampas maiores não seriam necessárias, mas nada é normal com uma tábua de pão.
O suspeito nº 3 foi redefinido. Você não nos deu nenhuma informação sobre o sinal de redefinição, e eu diria que é o mais baixo do que eu suspeito, mas deve verificar de qualquer maneira. Coloque um o-scope nele e veja o que está acontecendo. Você pode simplesmente usar um voltímetro. Se a tensão no pino de redefinição estiver próxima do nível limite, será necessário corrigi-la.
Agora, vamos rever as coisas que você tentou:
Você fez muitas experiências com a colocação de tampas nas linhas de energia, com poucos ou resultados confusos. Este é um daqueles momentos em que você só precisa colocar alguns limites aqui e não se preocupar se eles estão fazendo algo positivo ou não. Pode ser que seu poder seja barulhento, mas é apenas uma das várias coisas que estão causando o problema. Adicione tampas maiores em paralelo com as tampas de 0,1 uF no PIC. Adicione tampas ao oscilador de 40 MHz. Verifique se os leads são tão curtos quanto possível. Em seguida, passe para a próxima coisa.
Limites extras de energia são coisas que dificilmente causam problemas. É por isso que você pode colocar um pouco e não se preocupar muito com eles. Especialmente com cápsulas de 10 a 100 uF.
Mais tarde, quando tudo estiver funcionando, você poderá remover essas tampas uma de cada vez e verificar se o problema retorna. Se não retornar, as tampas não foram o problema. Mas, por enquanto, você precisa remover isso como um problema em potencial, mas adicionando limites.
Embora os pinos flutuantes possam ser um problema, eles raramente são um problema grande o suficiente para causar uma falha no MCU. Vale a pena consertar, pois causa outros problemas, mas é muito improvável que seja o problema aqui. Nota: uma maneira simples de impedir a flutuação de pinos não utilizados é configurá-los como saídas! Alto ou baixo, não importa. Mas se o PIC estiver acionando esses pinos, eles não poderão flutuar.
fonte
Você não mencionou o pino PGM (às vezes chamado de LVP). Isso deve estar vinculado baixo ou o LVP desativado nos bytes conifig.
Você tem certeza de que este PIC pode receber 40 MHz diretamente? Alguns podem atingir apenas 40 MHz via PLL interno. Não verifiquei a folha de dados, mas você deveria. Mesmo assim, eu não esperaria que 40 MHz em uma placa de ensaio se comportasse bem. Eu acho que você deve conseguir rodar o PIC com um cristal de 10 MHz e o PLL interno de 4x, se você for cuidadoso com a placa de ensaio e colocar as tampas de derivação nos lugares certos.
Esse tipo de pergunta surge regularmente. Em vez de repetir todos os problemas típicos, consulte /electronics//a/29620/4512 .
fonte
Eu devo concordar com David. Existem tantos fios longos, e 40MHz em uma placa de ensaio é bastante otimista. Não acredito que seu tempo vale tão pouco que você não pode dar ao luxo de fazer um pequeno protótipo de PCB . Essas coisas custam apenas cerca de £ 30 do PCB Train . Tenho certeza de que haverá alguém perto de você que pode fornecer algo semelhante.
Por que não fazer isso? Projete uma placa de circuito impresso que possua o PIC, o oscilador e o regulador como componentes SMD e, em seguida, toda uma carga de tiras de placa perf. Dessa forma, você ainda pode fazer sua prototipagem, mas verifique se o PIC está feliz.
fonte
se você tiver um gerador externo variável F, considere usá-lo para testar o layout / chip quanto a problemas. e encontre F externo que causa falha. e lembre-se de que os cabos de terra estendidos atuam como antena para a interferência de ruído.
fonte
o probe parece que você precisa de um probe lógico, dvm ou escopo ... http://search.digikey.com/us/en/products/DP%2052/BKDP52-ND/227492
Coloque a tampa no chip do relógio V + / gnd e considere o par trançado para 40MHZ, se estiver longe. O pic xtal possui entrada e saída .. verifique a saída invertida Nível CC = v / 2? .. Pic fica quente? ha ..
Sugiro o modo Xtal PLL de 10 MHz a 40 MHz para evitar problemas de layout.
"O modo HSPLL utiliza o oscilador do modo HS para frequências de até 10 MHz. Um PLL multiplica a frequência de saída do oscilador por 4 para produzir uma frequência de relógio interno de até 40 MHz. O PLL está disponível apenas para o oscilador de cristal quando o FOSC3: Os bits de configuração do FOSC0 são programados para o modo HSPLL (= 0110). "
fonte